Skip to content

Commit 14b6e4b

Browse files
committed
update Java version
1 parent 3657e20 commit 14b6e4b

File tree

4 files changed

+105
-6
lines changed

4 files changed

+105
-6
lines changed

src/main/java/com/upokecenter/cbor/CBORUtilities.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,6 +1128,10 @@ public static long IntegerToDoubleBits(int i) {
11281128
}
11291129
long longmant = Math.abs(i);
11301130
int expo = 0;
1131+
while (longmant < (1L << 10)) {
1132+
longmant <<= 42;
1133+
expo -= 42;
1134+
}
11311135
while (longmant < (1L << 52)) {
11321136
longmant <<= 1;
11331137
--expo;

src/main/java/com/upokecenter/cbor/JSONOptions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ public JSONOptions(String paramString) {
214214
.append("base64padding=").append(this.getBase64Padding() ? "true" : "false")
215215
.append(";replacesurrogates=")
216216
.append(this.getReplaceSurrogates() ? "true" : "false")
217+
.append(";preservenegativezero=")
217218
.append(this.getPreserveNegativeZero() ? "true" : "false")
218219
.append(";numberconversion=").append(this.FromNumberConversion())
219220
.append(";allowduplicatekeys=")

src/test/java/com/upokecenter/test/CBORObjectTest.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9490,24 +9490,35 @@ public void TestFromJsonStringFastCases() {
94909490
@Test(timeout = 10000)
94919491
public void TestFromJsonStringSmallDouble() {
94929492
CBORObject cbor;
9493-
AssertJSONDouble("0","double",0.0);
9494-
cbor=FromJSON("[0, 1, 2, 3]", "double");
9493+
AssertJSONDouble("0", "double", 0.0);
9494+
cbor = FromJSON("[0, 1, 2, 3]", "double");
94959495
Assert.assertEquals(4, cbor.size());
94969496
Assert.assertEquals(0.0, cbor.get(0).AsDouble());
94979497
Assert.assertEquals(1.0, cbor.get(1).AsDouble());
94989498
Assert.assertEquals(2.0, cbor.get(2).AsDouble());
94999499
Assert.assertEquals(3.0, cbor.get(3).AsDouble());
9500-
cbor=FromJSON("[0]", "double");
9500+
cbor = FromJSON("[0]", "double");
95019501
Assert.assertEquals(1, cbor.size());
95029502
Assert.assertEquals(0.0, cbor.get(0).AsDouble());
9503-
cbor=FromJSON("[-0]", "double");
9503+
cbor = FromJSON("[-0]", "double");
95049504
Assert.assertEquals(1, cbor.size());
9505-
cbor=FromJSON("[1]", "double");
9505+
cbor = FromJSON("[1]", "double");
95069506
Assert.assertEquals(1, cbor.size());
95079507
Assert.assertEquals(1.0, cbor.get(0).AsDouble());
9508-
cbor=FromJSON("[-1]", "double");
9508+
cbor = FromJSON("[-1]", "double");
95099509
Assert.assertEquals(1, cbor.size());
95109510
Assert.assertEquals(-1.0, cbor.get(0).AsDouble());
9511+
cbor = FromJSON("[-1022,-1023,-1024,-1025,1022,1023,1024,1025]",
9512+
"double");
9513+
Assert.assertEquals(8, cbor.size());
9514+
Assert.assertEquals(-1022.0, cbor.get(0).AsDouble());
9515+
Assert.assertEquals(-1023.0, cbor.get(1).AsDouble());
9516+
Assert.assertEquals(-1024.0, cbor.get(2).AsDouble());
9517+
Assert.assertEquals(-1025.0, cbor.get(3).AsDouble());
9518+
Assert.assertEquals(1022.0, cbor.get(0).AsDouble());
9519+
Assert.assertEquals(1023.0, cbor.get(1).AsDouble());
9520+
Assert.assertEquals(1024.0, cbor.get(2).AsDouble());
9521+
Assert.assertEquals(1025.0, cbor.get(3).AsDouble());
95119522
}
95129523

95139524
@Test(timeout = 10000)

src/test/java/com/upokecenter/test/CBORTest.java

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5199,6 +5199,89 @@ public static boolean CheckUtf16(String str) {
51995199
return true;
52005200
}
52015201

5202+
@Test
5203+
public void TestJSONOptions() {
5204+
JSONOptions jsonop1 = new JSONOptions("numberconversion=intorfloat");
5205+
{
5206+
Object objectTemp = jsonop1.toString();
5207+
Object objectTemp2 = new
5208+
JSONOptions(jsonop1.toString()).toString();
5209+
Assert.assertEquals(objectTemp, objectTemp2);
5210+
}
5211+
JSONOptions jsonop2 = new JSONOptions("numberconversion=decimal128");
5212+
{
5213+
Object objectTemp = jsonop2.toString();
5214+
Object objectTemp2 = new
5215+
JSONOptions(jsonop2.toString()).toString();
5216+
Assert.assertEquals(objectTemp, objectTemp2);
5217+
}
5218+
JSONOptions jsonop3 = new JSONOptions("numberconversion=intorfloatfromdouble");
5219+
{
5220+
Object objectTemp = jsonop3.toString();
5221+
Object objectTemp2 = new
5222+
JSONOptions(jsonop3.toString()).toString();
5223+
Assert.assertEquals(objectTemp, objectTemp2);
5224+
}
5225+
JSONOptions jsonop4 = new JSONOptions("numberconversion=double");
5226+
{
5227+
Object objectTemp = jsonop4.toString();
5228+
Object objectTemp2 = new
5229+
JSONOptions(jsonop4.toString()).toString();
5230+
Assert.assertEquals(objectTemp, objectTemp2);
5231+
}
5232+
}
5233+
5234+
@Test
5235+
public void TestPODOptions() {
5236+
PODOptions podop = PODOptions.Default;
5237+
{
5238+
Object objectTemp = podop.toString();
5239+
Object objectTemp2 = new
5240+
PODOptions(podop.toString()).toString();
5241+
Assert.assertEquals(objectTemp, objectTemp2);
5242+
}
5243+
}
5244+
5245+
@Test
5246+
public void TestCBOREncodeOptions() {
5247+
CBOREncodeOptions encodeop = CBOREncodeOptions.Default;
5248+
{
5249+
Object objectTemp = encodeop.toString();
5250+
Object objectTemp2 = new
5251+
CBOREncodeOptions(encodeop.toString()).toString();
5252+
Assert.assertEquals(objectTemp, objectTemp2);
5253+
}
5254+
}
5255+
5256+
@Test
5257+
public void TestRandomJSON() {
5258+
JSONGenerator jsongen = new JSONGenerator();
5259+
RandomGenerator rg = new RandomGenerator();
5260+
JSONOptions jsonop1 = new JSONOptions("numberconversion=intorfloat");
5261+
JSONOptions jsonop2 = new JSONOptions("numberconversion=decimal128");
5262+
JSONOptions jsonop3 = new JSONOptions("numberconversion=intorfloatfromdouble");
5263+
JSONOptions jsonop4 = new JSONOptions("numberconversion=double");
5264+
for (int i = 0; i < 1000; ++i) {
5265+
byte[] json = jsongen.Generate(rg);
5266+
System.out.println("" + i + " len=" + json.length);
5267+
JSONOptions currop = null;
5268+
try {
5269+
currop = jsonop1;
5270+
CBORObject.FromJSONBytes(json, jsonop1);
5271+
currop = jsonop2;
5272+
CBORObject.FromJSONBytes(json, jsonop2);
5273+
currop = jsonop3;
5274+
CBORObject.FromJSONBytes(json, jsonop3);
5275+
currop = jsonop4;
5276+
CBORObject.FromJSONBytes(json, jsonop4);
5277+
} catch (CBORException ex) {
5278+
String msg = ex.getMessage() + "\n" +
5279+
DataUtilities.GetUtf8String(json, true) + "\n" + currop;
5280+
throw new IllegalStateException(msg, ex);
5281+
}
5282+
}
5283+
}
5284+
52025285
public static boolean TestTextStringStreamOne(String longString) {
52035286
if (!CheckUtf16(longString)) {
52045287
return false;

0 commit comments

Comments
 (0)