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/**
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes* @author Vladimir N. Molotkov
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes*/
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 Hughes */
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ECFieldF2m_ImplTest extends TestCase {
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Support class for this test.
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Encapsulates <code>ECFieldF2m</code> testing
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * domain parameters.
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static final class ECFieldF2mDomainParams {
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /**
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * <code>NPE</code> reference object of class NullPointerException.
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * NullPointerException must be thrown by <code>ECFieldF2m</code>
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * ctors in some circumstances
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        static final NullPointerException NPE = new NullPointerException();
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /**
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * <code>IArgE</code> reference object of class IllegalArgumentException.
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * IllegalArgumentException must be thrown by <code>ECFieldF2m</code>
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * ctors in some circumstances
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        static final IllegalArgumentException IArgE = new IllegalArgumentException();
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /**
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * The <code>m</code> parameter for <code>ECFieldF2m</code>
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * ctor for the current test.
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final int m;
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /**
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * The <code>rp</code> parameter for <code>ECFieldF2m</code>
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * ctor for the current test.
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final BigInteger rp;
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /**
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * The <code>ks</code> parameter for <code>ECFieldF2m</code>
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * ctor for the current test.
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final int[] ks;
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /**
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * Exception expected with this parameters set or <code>null</code>
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * if no exception expected.
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        final Exception x;
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /**
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * Constructs ECFieldF2mDomainParams
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         *
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * @param m
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * @param rp
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * @param ks
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         * @param expectedException
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes         */
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ECFieldF2mDomainParams(final int m,
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                final BigInteger rp,
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                final int[] ks,
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                final Exception expectedException) {
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.m = m;
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.rp = rp;
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.ks = ks;
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.x = expectedException;
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Set of parameters used for <code>ECFieldF2m(int, BigInteger)</code>
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * constructor tests.
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private final ECFieldF2mDomainParams[] intBigIntegerCtorTestParameters =
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new ECFieldF2mDomainParams[] {
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 0: valid m and rp - trinomial basis params
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    1999,
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(0).setBit(367).setBit(1999),
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null),
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 1: valid m and rp - pentanomial basis params
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    2000,
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(0).setBit(1).setBit(2).setBit(981).setBit(2000),
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null),
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 2: valid m, invalid (null) rp
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    1963,
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    (BigInteger)null,
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.NPE),
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 3: valid m, invalid rp - bit 0 not set
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    1999,
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(1).setBit(367).setBit(1999),
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.IArgE),
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 4: valid m, invalid rp - bit m not set
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    1999,
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(0).setBit(367).setBit(1998),
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.IArgE),
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 5: valid m, invalid rp - bit k improperly set
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    1999,
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(0).setBit(2367).setBit(1999),
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.IArgE),
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 6: valid m, invalid rp - k1 k2 k3
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    2000,
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(0).setBit(2001).setBit(2002).setBit(2003).setBit(2000),
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.IArgE),
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 7: valid m, invalid rp - number of bits set
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    2000,
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(0).setBit(2000),
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.IArgE),
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 8: valid m, invalid rp - number of bits set
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    2000,
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(0).setBit(1).setBit(2).setBit(2000),
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.IArgE),
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 9: valid m, invalid rp - number of bits set
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    2000,
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(0).setBit(1).setBit(2).
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                           setBit(981).setBit(985).setBit(2000),
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.IArgE),
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 10: valid m, invalid rp
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    2000,
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L),
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.IArgE),
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // set 11: invalid m
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new ECFieldF2mDomainParams(
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    -2000,
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    BigInteger.valueOf(0L).setBit(0).setBit(1).setBit(2).
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    setBit(981).setBit(2000),
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    null,
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    ECFieldF2mDomainParams.IArgE),
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests for constructor <code>ECFieldF2m(int, BigInteger)</code><br>
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: constructs new <code>ECFieldF2m</code> object
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * using valid parameters m and rp. rp represents trinomial basis.
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: constructs new <code>ECFieldF2m</code> object
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * using valid parameters m and rp. rp represents pentanomial basis.
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: IllegalArgumentException if m is not positive.
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: NullPointerException if rp is null.
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Assertion: IllegalArgumentException if rp is invalid.
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public final void testECFieldF2mintBigInteger() {
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for(int i=0; i<intBigIntegerCtorTestParameters.length; i++) {
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ECFieldF2mDomainParams tp = intBigIntegerCtorTestParameters[i];
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // perform test
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ECFieldF2m(tp.m, tp.rp);
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (tp.x != null) {
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // exception has been expected
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail(getName() + ", set " + i +
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            " FAILED: expected exception has not been thrown");
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (Exception e){
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (tp.x == null || !e.getClass().isInstance(tp.x)) {
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // exception: failure
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // if it has not been expected
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // or wrong one has been thrown
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fail(getName() + ", set " + i +
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            " FAILED: unexpected " + e);
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
220