25
25
import static org .junit .Assert .*;
26
26
27
27
public class TestDoubleNode62 {
28
+ // See also TestNodeIdInline.nodeId_double_*
28
29
@ Test public void double_01 () { testRoundTripDouble (1d ); }
29
30
@ Test public void double_02 () { testRoundTripDouble (-1d ); }
30
31
@ Test public void double_03 () { testRoundTripDouble (-1111111111e50d ); }
@@ -49,14 +50,18 @@ public class TestDoubleNode62 {
49
50
@ Test public void double_22 () { testRoundTripDouble (Double .NaN ); }
50
51
@ Test public void double_23 () { testNoEncoding (Double .MAX_VALUE ); }
51
52
@ Test public void double_24 () { testNoEncoding (Double .MIN_NORMAL ); }
52
- @ Test public void double_25 () { testNoEncoding (Double .MIN_VALUE ); }
53
+ // Despite being out of the normal range of DoubleNode62,
54
+ // this does encode and round trip even though out of range.
55
+ // Its encoding is long value 1.
56
+ @ Test public void double_25 () { testRoundTripDouble (Double .MIN_VALUE ); }
53
57
54
58
@ Test public void double_30 () { testRoundTripDouble (DoubleNode62 .POSITIVE_INFINITY ); }
55
59
@ Test public void double_31 () { testRoundTripDouble (DoubleNode62 .NEGATIVE_INFINITY ); }
56
60
@ Test public void double_32 () { testRoundTripDouble (DoubleNode62 .NaN ); }
57
- @ Test public void double_33 () { testNoEncoding (DoubleNode62 .MAX_VALUE ); }
58
- @ Test public void double_34 () { testNoEncoding (DoubleNode62 .MIN_NORMAL ); }
59
- @ Test public void double_35 () { testNoEncoding (DoubleNode62 .MIN_VALUE ); }
61
+
62
+ @ Test public void double_33 () { testRoundTripDouble (DoubleNode62 .MAX_VALUE ); }
63
+ @ Test public void double_34 () { testRoundTripDouble (DoubleNode62 .MIN_NORMAL ); }
64
+ @ Test public void double_35 () { testRoundTripDouble (DoubleNode62 .MIN_VALUE ); }
60
65
61
66
@ Test public void double_40 () { sameValue (DoubleNode62 .POSITIVE_INFINITY , Double .POSITIVE_INFINITY ); }
62
67
@ Test public void double_41 () { sameValue (DoubleNode62 .NEGATIVE_INFINITY , Double .NEGATIVE_INFINITY ); }
@@ -70,47 +75,27 @@ public class TestDoubleNode62 {
70
75
@ Test public void double_55 () { testConst (DoubleNode62 .MIN_VALUE_BITS , 0x01L ); }
71
76
72
77
private void sameValue (double d1 , double d2 ) {
73
- // Not d1 == d2 - NaN != NaN
78
+ // Not d1 == d2 because NaN != NaN
74
79
assertEquals (Double .valueOf (d1 ), Double .valueOf (d2 ));
75
80
}
76
81
77
82
private static void testConst (long x , long expected ) {
78
- //print(expected);
79
- //print(x);
80
83
assertEquals (expected , x );
81
84
double d = DoubleNode62 .unpack (x );
82
85
long z = DoubleNode62 .pack (d );
83
86
assertEquals (expected , z );
84
87
}
85
88
86
89
private void testNoEncoding (double d ) {
87
- testRoundTripDouble (d , false );
90
+ long x = DoubleNode62 .pack (d );
91
+ assertEquals ("Expected no encoding" , x , DoubleNode62 .NO_ENCODING );
88
92
}
89
93
90
94
private static void testRoundTripDouble (double d ) {
91
- testRoundTripDouble (d , true );
92
- }
93
-
94
- private static void testRoundTripDouble (double d , boolean valid ) {
95
- //System.out.printf("Double: %.2e\n", d);
96
- long x0 = Double .doubleToRawLongBits (d );
97
- //print(x0);
98
95
long x = DoubleNode62 .pack (d );
99
- //print(x);
100
- if ( x == DoubleNode62 .NO_ENCODING ) {
101
- if ( valid )
102
- fail ("Expect no encoding" );
103
-
104
- //System.out.println("No encoding");
105
- //System.out.println();
106
- return ;
107
- }
108
-
96
+ assertNotEquals ("Expected encoding" , x , DoubleNode62 .NO_ENCODING );
109
97
double d2 = DoubleNode62 .unpack (x );
110
-
111
- Double double1 = d ;
112
- Double double2 = d2 ;
113
- assertEquals (double1 , double2 );
98
+ assertEquals (d , d2 , 0 );
114
99
}
115
100
116
101
private static void print (long x ) {
0 commit comments