1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @author Vladimir N. Molotkov 208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security.spec; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.math.BigInteger; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.ECFieldF2m; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for <code>ECFieldF2m</code> class fields and methods. 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ECFieldF2m_ImplTest extends TestCase { 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Support class for this test. 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encapsulates <code>ECFieldF2m</code> testing 378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * domain parameters. 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final class ECFieldF2mDomainParams { 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>NPE</code> reference object of class NullPointerException. 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * NullPointerException must be thrown by <code>ECFieldF2m</code> 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctors in some circumstances 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static final NullPointerException NPE = new NullPointerException(); 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>IArgE</code> reference object of class IllegalArgumentException. 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * IllegalArgumentException must be thrown by <code>ECFieldF2m</code> 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctors in some circumstances 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static final IllegalArgumentException IArgE = new IllegalArgumentException(); 538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The <code>m</code> parameter for <code>ECFieldF2m</code> 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctor for the current test. 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final int m; 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The <code>rp</code> parameter for <code>ECFieldF2m</code> 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctor for the current test. 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final BigInteger rp; 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The <code>ks</code> parameter for <code>ECFieldF2m</code> 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * ctor for the current test. 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final int[] ks; 698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Exception expected with this parameters set or <code>null</code> 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * if no exception expected. 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Exception x; 768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Constructs ECFieldF2mDomainParams 798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param m 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param rp 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param ks 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param expectedException 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2mDomainParams(final int m, 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final BigInteger rp, 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final int[] ks, 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Exception expectedException) { 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.m = m; 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.rp = rp; 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.ks = ks; 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.x = expectedException; 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Set of parameters used for <code>ECFieldF2m(int, BigInteger)</code> 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor tests. 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private final ECFieldF2mDomainParams[] intBigIntegerCtorTestParameters = 1028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams[] { 1038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 0: valid m and rp - trinomial basis params 1048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1999, 1068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(0).setBit(367).setBit(1999), 1078d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null), 1098d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 1: valid m and rp - pentanomial basis params 1108d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 1128d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(0).setBit(1).setBit(2).setBit(981).setBit(2000), 1138d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null), 1158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 2: valid m, invalid (null) rp 1168d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1963, 1188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath (BigInteger) null, 1198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.NPE), 1218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 3: valid m, invalid rp - bit 0 not set 1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1999, 1248d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(1).setBit(367).setBit(1999), 1258d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1268d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 4: valid m, invalid rp - bit m not set 1288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1999, 1308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(0).setBit(367).setBit(1998), 1318d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1328d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1338d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 5: valid m, invalid rp - bit k improperly set 1348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 1999, 1368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(0).setBit(2367).setBit(1999), 1378d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1398d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 6: valid m, invalid rp - k1 k2 k3 1408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1418d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 1428d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(0).setBit(2001).setBit(2002).setBit(2003).setBit(2000), 1438d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 7: valid m, invalid rp - number of bits set 1468d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 1488d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(0).setBit(2000), 1498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 8: valid m, invalid rp - number of bits set 1528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 1548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(0).setBit(1).setBit(2).setBit(2000), 1558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 9: valid m, invalid rp - number of bits set 1588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 1608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(0).setBit(1).setBit(2). 1618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath setBit(981).setBit(985).setBit(2000), 1628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 10: valid m, invalid rp 1658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 2000, 1678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L), 1688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath // set 11: invalid m 1718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath new ECFieldF2mDomainParams( 1728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath -2000, 1738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath BigInteger.valueOf(0L).setBit(0).setBit(1).setBit(2). 1748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath setBit(981).setBit(2000), 1758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath null, 1768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath ECFieldF2mDomainParams.IArgE), 1778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath }; 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for constructor <code>ECFieldF2m(int, BigInteger)</code><br> 1818d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: constructs new <code>ECFieldF2m</code> object 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * using valid parameters m and rp. rp represents trinomial basis. 1848d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: constructs new <code>ECFieldF2m</code> object 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * using valid parameters m and rp. rp represents pentanomial basis. 1878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: IllegalArgumentException if m is not positive. 1898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: NullPointerException if rp is null. 1918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * <p/> 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: IllegalArgumentException if rp is invalid. 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testECFieldF2mintBigInteger() { 1958d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath for (int i = 0; i < intBigIntegerCtorTestParameters.length; i++) { 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ECFieldF2mDomainParams tp = intBigIntegerCtorTestParameters[i]; 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // perform test 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ECFieldF2m(tp.m, tp.rp); 2008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (tp.x != null) { 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exception has been expected 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ", set " + i + 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes " FAILED: expected exception has not been thrown"); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 2068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (Exception e) { 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (tp.x == null || !e.getClass().isInstance(tp.x)) { 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // exception: failure 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // if it has not been expected 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // or wrong one has been thrown 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ", set " + i + 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes " FAILED: unexpected " + e); 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 218