1616
1717package org .eclipse .parsson .tests ;
1818
19- import junit . framework . TestCase ;
20- import org . eclipse . parsson . api . BufferPool ;
21-
22- import jakarta . json .* ;
23- import jakarta . json . stream .* ;
24- import java .io .* ;
19+ import java . io . BufferedReader ;
20+ import java . io . ByteArrayInputStream ;
21+ import java . io . ByteArrayOutputStream ;
22+ import java . io . StringReader ;
23+ import java . io . StringWriter ;
24+ import java .io .Writer ;
2525import java .util .HashMap ;
2626import java .util .Map ;
2727import java .util .Random ;
2828
29+ import org .eclipse .parsson .api .BufferPool ;
30+
31+ import jakarta .json .Json ;
32+ import jakarta .json .JsonArray ;
33+ import jakarta .json .JsonBuilderFactory ;
34+ import jakarta .json .JsonObject ;
35+ import jakarta .json .JsonReader ;
36+ import jakarta .json .JsonReaderFactory ;
37+ import jakarta .json .JsonValue ;
38+ import jakarta .json .stream .JsonGenerationException ;
39+ import jakarta .json .stream .JsonGenerator ;
40+ import jakarta .json .stream .JsonGeneratorFactory ;
41+ import junit .framework .TestCase ;
42+
2943/**
3044 * {@link JsonGenerator} tests
3145 *
@@ -536,8 +550,7 @@ public void testFlush() throws Exception {
536550 assertEquals ("{}" , baos .toString ("UTF-8" ));
537551 }
538552
539- private String nameValueNanInfinity (Map <String , Object > config ) {
540- JsonGeneratorFactory generatorFactory = Json .createGeneratorFactory (config );
553+ private String nameValueNanInfinity (JsonGeneratorFactory generatorFactory ) {
541554 StringWriter writer = new StringWriter ();
542555 JsonGenerator generator = generatorFactory .createGenerator (writer );
543556 generator
@@ -547,57 +560,118 @@ private String nameValueNanInfinity(Map<String, Object> config) {
547560 .write ("val3" , 0.0 )
548561 .write ("val4" , Double .POSITIVE_INFINITY )
549562 .write ("val5" , Double .NEGATIVE_INFINITY )
563+ .write ("val6" , Json .createValue (Double .NaN ))
564+ .write ("val7" , Json .createValue (1.0 ))
565+ .write ("val8" , Json .createValue (0.0 ))
566+ .write ("val9" , Json .createValue (Double .POSITIVE_INFINITY ))
567+ .write ("val10" , Json .createValue (Double .NEGATIVE_INFINITY ))
550568 .writeEnd ().close ();
551569 return writer .toString ();
552570 }
553571
554- private String valueNanInfinity (Map <String , Object > config ) {
555- JsonGeneratorFactory generatorFactory = Json .createGeneratorFactory (config );
572+ private String valueNanInfinity (JsonGeneratorFactory generatorFactory , double value ) {
556573 StringWriter writer = new StringWriter ();
557574 JsonGenerator generator = generatorFactory .createGenerator (writer );
558- generator .write (Double .NaN ).close ();
575+ generator .write (value ).close ();
576+ return writer .toString ();
577+ }
578+
579+ private String jsonNumberNanInfinity (JsonGeneratorFactory generatorFactory , double value ) {
580+ StringWriter writer = new StringWriter ();
581+ JsonGenerator generator = generatorFactory .createGenerator (writer );
582+ generator .write (Json .createValue (value )).close ();
559583 return writer .toString ();
560584 }
561585
562586 public void testNanInfinityDefault () {
563587 Map <String , Object > config = new HashMap <>();
564- assertEquals ("{\" val1\" :null,\" val2\" :1.0,\" val3\" :0.0,\" val4\" :null,\" val5\" :null}" , nameValueNanInfinity (config ));
565- assertEquals ("null" , valueNanInfinity (config ));
588+ JsonGeneratorFactory generatorFactory = Json .createGeneratorFactory (config );
589+ assertEquals ("{\" val1\" :null,\" val2\" :1.0,\" val3\" :0.0,\" val4\" :null,\" val5\" :null,\" val6\" :null,\" val7\" :1.0,\" val8\" :0.0,\" val9\" :null,\" val10\" :null}" , nameValueNanInfinity (generatorFactory ));
590+ assertEquals ("0.0" , valueNanInfinity (generatorFactory , 0.0 ));
591+ assertEquals ("1.0" , valueNanInfinity (generatorFactory , 1.0 ));
592+ assertEquals ("null" , valueNanInfinity (generatorFactory , Double .NaN ));
593+ assertEquals ("null" , valueNanInfinity (generatorFactory , Double .POSITIVE_INFINITY ));
594+ assertEquals ("null" , valueNanInfinity (generatorFactory , Double .NEGATIVE_INFINITY ));
595+ assertEquals ("0.0" , jsonNumberNanInfinity (generatorFactory , 0.0 ));
596+ assertEquals ("1.0" , jsonNumberNanInfinity (generatorFactory , 1.0 ));
597+ assertEquals ("null" , jsonNumberNanInfinity (generatorFactory , Double .NaN ));
598+ assertEquals ("null" , jsonNumberNanInfinity (generatorFactory , Double .POSITIVE_INFINITY ));
599+ assertEquals ("null" , jsonNumberNanInfinity (generatorFactory , Double .NEGATIVE_INFINITY ));
566600 }
567601
568602 public void testNanInfinityWriteNanAsNull () {
569603 Map <String , Object > config = new HashMap <>();
570604 config .put (JsonGenerator .WRITE_NAN_AS_NULLS , true );
571- assertEquals ("{\" val1\" :null,\" val2\" :1.0,\" val3\" :0.0,\" val4\" :null,\" val5\" :null}" , nameValueNanInfinity (config ));
572- assertEquals ("null" , valueNanInfinity (config ));
605+ JsonGeneratorFactory generatorFactory = Json .createGeneratorFactory (config );
606+ assertEquals ("{\" val1\" :null,\" val2\" :1.0,\" val3\" :0.0,\" val4\" :null,\" val5\" :null,\" val6\" :null,\" val7\" :1.0,\" val8\" :0.0,\" val9\" :null,\" val10\" :null}" , nameValueNanInfinity (generatorFactory ));
607+ assertEquals ("0.0" , valueNanInfinity (generatorFactory , 0.0 ));
608+ assertEquals ("1.0" , valueNanInfinity (generatorFactory , 1.0 ));
609+ assertEquals ("null" , valueNanInfinity (generatorFactory , Double .NaN ));
610+ assertEquals ("null" , valueNanInfinity (generatorFactory , Double .POSITIVE_INFINITY ));
611+ assertEquals ("null" , valueNanInfinity (generatorFactory , Double .NEGATIVE_INFINITY ));
612+ assertEquals ("0.0" , jsonNumberNanInfinity (generatorFactory , 0.0 ));
613+ assertEquals ("1.0" , jsonNumberNanInfinity (generatorFactory , 1.0 ));
614+ assertEquals ("null" , jsonNumberNanInfinity (generatorFactory , Double .NaN ));
615+ assertEquals ("null" , jsonNumberNanInfinity (generatorFactory , Double .POSITIVE_INFINITY ));
616+ assertEquals ("null" , jsonNumberNanInfinity (generatorFactory , Double .NEGATIVE_INFINITY ));
573617 }
574618
575619 public void testNanInfinityWriteNanAsString () {
576620 Map <String , Object > config = new HashMap <>();
577621 config .put (JsonGenerator .WRITE_NAN_AS_STRINGS , true );
578- assertEquals ("{\" val1\" :\" NaN\" ,\" val2\" :1.0,\" val3\" :0.0,\" val4\" :\" +Infinity\" ,\" val5\" :\" -Infinity\" }" , nameValueNanInfinity (config ));
579- assertEquals ("\" NaN\" " , valueNanInfinity (config ));
622+ JsonGeneratorFactory generatorFactory = Json .createGeneratorFactory (config );
623+ assertEquals ("{\" val1\" :\" NaN\" ,\" val2\" :1.0,\" val3\" :0.0,\" val4\" :\" +Infinity\" ,\" val5\" :\" -Infinity\" ,\" val6\" :\" NaN\" ,\" val7\" :1.0,\" val8\" :0.0,\" val9\" :\" +Infinity\" ,\" val10\" :\" -Infinity\" }" , nameValueNanInfinity (generatorFactory ));
624+ assertEquals ("0.0" , valueNanInfinity (generatorFactory , 0.0 ));
625+ assertEquals ("1.0" , valueNanInfinity (generatorFactory , 1.0 ));
626+ assertEquals ("\" NaN\" " , valueNanInfinity (generatorFactory , Double .NaN ));
627+ assertEquals ("\" +Infinity\" " , valueNanInfinity (generatorFactory , Double .POSITIVE_INFINITY ));
628+ assertEquals ("\" -Infinity\" " , valueNanInfinity (generatorFactory , Double .NEGATIVE_INFINITY ));
629+ assertEquals ("0.0" , jsonNumberNanInfinity (generatorFactory , 0.0 ));
630+ assertEquals ("1.0" , jsonNumberNanInfinity (generatorFactory , 1.0 ));
631+ assertEquals ("\" NaN\" " , jsonNumberNanInfinity (generatorFactory , Double .NaN ));
632+ assertEquals ("\" +Infinity\" " , jsonNumberNanInfinity (generatorFactory , Double .POSITIVE_INFINITY ));
633+ assertEquals ("\" -Infinity\" " , jsonNumberNanInfinity (generatorFactory , Double .NEGATIVE_INFINITY ));
580634 }
581635
582636 public void testNanInfinityBothFalse () {
583637 Map <String , Object > config = new HashMap <>();
584638 config .put (JsonGenerator .WRITE_NAN_AS_STRINGS , false );
585639 config .put (JsonGenerator .WRITE_NAN_AS_NULLS , false );
640+ JsonGeneratorFactory generatorFactory = Json .createGeneratorFactory (config );
586641 try {
587- nameValueNanInfinity (config );
642+ nameValueNanInfinity (generatorFactory );
588643 fail ("Expected a failure" );
589644 } catch (NumberFormatException e ) {}
590645 try {
591- valueNanInfinity (config );
646+ valueNanInfinity (generatorFactory , Double . NaN );
592647 fail ("Expected a failure" );
593648 } catch (NumberFormatException e ) {}
649+ assertEquals ("0.0" , valueNanInfinity (generatorFactory , 0.0 ));
650+ assertEquals ("1.0" , valueNanInfinity (generatorFactory , 1.0 ));
651+ try {
652+ jsonNumberNanInfinity (generatorFactory , Double .NaN );
653+ fail ("Expected a failure" );
654+ } catch (NumberFormatException e ) {}
655+ assertEquals ("0.0" , jsonNumberNanInfinity (generatorFactory , 0.0 ));
656+ assertEquals ("1.0" , jsonNumberNanInfinity (generatorFactory , 1.0 ));
594657 }
595658
596659 public void testNanInfinityBothTrue () {
597660 Map <String , Object > config = new HashMap <>();
598661 config .put (JsonGenerator .WRITE_NAN_AS_STRINGS , true );
599662 config .put (JsonGenerator .WRITE_NAN_AS_NULLS , true );
600- assertEquals ("{\" val1\" :null,\" val2\" :1.0,\" val3\" :0.0,\" val4\" :null,\" val5\" :null}" , nameValueNanInfinity (config ));
601- assertEquals ("null" , valueNanInfinity (config ));
663+ JsonGeneratorFactory generatorFactory = Json .createGeneratorFactory (config );
664+ assertEquals ("{\" val1\" :null,\" val2\" :1.0,\" val3\" :0.0,\" val4\" :null,\" val5\" :null,\" val6\" :null,\" val7\" :1.0,\" val8\" :0.0,\" val9\" :null,\" val10\" :null}" , nameValueNanInfinity (generatorFactory ));
665+ assertEquals ("0.0" , valueNanInfinity (generatorFactory , 0.0 ));
666+ assertEquals ("1.0" , valueNanInfinity (generatorFactory , 1.0 ));
667+ assertEquals ("null" , valueNanInfinity (generatorFactory , Double .NaN ));
668+ assertEquals ("null" , valueNanInfinity (generatorFactory , Double .POSITIVE_INFINITY ));
669+ assertEquals ("null" , valueNanInfinity (generatorFactory , Double .NEGATIVE_INFINITY ));
670+ assertEquals ("0.0" , jsonNumberNanInfinity (generatorFactory , 0.0 ));
671+ assertEquals ("1.0" , jsonNumberNanInfinity (generatorFactory , 1.0 ));
672+ assertEquals ("null" , jsonNumberNanInfinity (generatorFactory , Double .NaN ));
673+ assertEquals ("null" , jsonNumberNanInfinity (generatorFactory , Double .POSITIVE_INFINITY ));
674+ assertEquals ("null" , jsonNumberNanInfinity (generatorFactory , Double .NEGATIVE_INFINITY ));
602675 }
676+
603677}
0 commit comments