1515import static org .junit .Assert .*;
1616
1717import java .math .BigInteger ;
18+ import java .util .Random ;
1819
1920import net .i2p .crypto .eddsa .Utils ;
2021import net .i2p .crypto .eddsa .math .Field ;
2122import net .i2p .crypto .eddsa .math .FieldElement ;
23+ import net .i2p .crypto .eddsa .math .MathUtils ;
24+ import net .i2p .crypto .eddsa .math .AbstractFieldElementTest ;
2225import org .junit .Test ;
2326
2427/**
2528 * @author str4d
2629 *
2730 */
28- public class BigIntegerFieldElementTest {
31+ public class BigIntegerFieldElementTest extends AbstractFieldElementTest {
2932 static final byte [] BYTES_ZERO = Utils .hexToBytes ("0000000000000000000000000000000000000000000000000000000000000000" );
3033 static final byte [] BYTES_ONE = Utils .hexToBytes ("0100000000000000000000000000000000000000000000000000000000000000" );
3134 static final byte [] BYTES_TEN = Utils .hexToBytes ("0a00000000000000000000000000000000000000000000000000000000000000" );
@@ -39,6 +42,27 @@ public class BigIntegerFieldElementTest {
3942 static final FieldElement ONE = new BigIntegerFieldElement (ed25519Field , BigInteger .ONE );
4043 static final FieldElement TWO = new BigIntegerFieldElement (ed25519Field , BigInteger .valueOf (2 ));
4144
45+ protected FieldElement getRandomFieldElement () {
46+ BigInteger r ;
47+ Random rnd = new Random ();
48+ do {
49+ r = new BigInteger (255 , rnd );
50+ } while (r .compareTo (getQ ()) >= 0 );
51+ return new BigIntegerFieldElement (ed25519Field , r );
52+ }
53+
54+ protected BigInteger toBigInteger (FieldElement f ) {
55+ return ((BigIntegerFieldElement )f ).bi ;
56+ }
57+
58+ protected BigInteger getQ () {
59+ return MathUtils .getQ ();
60+ }
61+
62+ protected Field getField () {
63+ return ed25519Field ;
64+ }
65+
4266 /**
4367 * Test method for {@link BigIntegerFieldElement#BigIntegerFieldElement(Field, BigInteger)}.
4468 */
@@ -69,92 +93,16 @@ public void testToByteArray() {
6993
7094 // region isNonZero
7195
72- @ Test
73- public void isNonZeroReturnsFalseIfFieldElementIsZero () {
74- // Assert:
75- assertThat (ZERO .isNonZero (), is (equalTo (false )));
96+ protected FieldElement getZeroFieldElement () {
97+ return ZERO ;
7698 }
7799
78- @ Test
79- public void isNonZeroReturnsTrueIfFieldElementIsNonZero () {
80- // Assert:
81- assertThat (TWO .isNonZero (), is (equalTo (true )));
100+ protected FieldElement getNonZeroFieldElement () {
101+ return TWO ;
82102 }
83103
84104 // endregion
85105
86- /**
87- * Test method for {@link FieldElement#isNegative()}.
88- */
89- @ Test
90- public void testIsNegative () {
91- fail ("Not yet implemented" );
92- }
93-
94- /**
95- * Test method for {@link FieldElement#add(FieldElement)}.
96- */
97- @ Test
98- public void testAdd () {
99- fail ("Not yet implemented" );
100- }
101-
102- /**
103- * Test method for {@link FieldElement#subtract(FieldElement)}.
104- */
105- @ Test
106- public void testSubtract () {
107- fail ("Not yet implemented" );
108- }
109-
110- /**
111- * Test method for {@link FieldElement#negate()}.
112- */
113- @ Test
114- public void testNegate () {
115- fail ("Not yet implemented" );
116- }
117-
118- /**
119- * Test method for {@link FieldElement#multiply(FieldElement)}.
120- */
121- @ Test
122- public void testMultiply () {
123- fail ("Not yet implemented" );
124- }
125-
126- /**
127- * Test method for {@link FieldElement#square()}.
128- */
129- @ Test
130- public void testSquare () {
131- fail ("Not yet implemented" );
132- }
133-
134- /**
135- * Test method for {@link FieldElement#squareAndDouble()}.
136- */
137- @ Test
138- public void testSquareAndDouble () {
139- fail ("Not yet implemented" );
140- }
141-
142- /**
143- * Test method for {@link FieldElement#invert()}.
144- */
145- @ Test
146- public void testInvert () {
147- fail ("Not yet implemented" );
148- }
149-
150- /**
151- * Test method for {@link FieldElement#pow22523()}.
152- */
153- @ Test
154- public void testPow22523 () {
155- fail ("Not yet implemented" );
156- }
157-
158106 /**
159107 * Test method for {@link FieldElement#equals(java.lang.Object)}.
160108 */
0 commit comments