1111
1212import org .junit .jupiter .api .Test ;
1313import org .junit .jupiter .api .function .Executable ;
14+ import org .python .core .PyDictionary ;
1415
1516import static java .nio .charset .StandardCharsets .UTF_8 ;
17+ import static org .junit .jupiter .api .Assertions .assertNotNull ;
1618import static org .junit .jupiter .api .Assertions .assertThrows ;
1719
18- public class JsonTranslatorTest {
20+ class JsonTranslatorTest {
1921
2022 /**
2123 * Verify that a lexical error will throw an Exception
2224 */
2325 @ Test
24- public void testLexicalError () {
26+ void testLexicalError () {
2527 // Temporarily disable logging for this test. Intended lexical failure will log a stack trace.
2628 Logger logger = Logger .getLogger ("wlsdeploy.json" );
2729 Level originalLevel = logger .getLevel ();
@@ -40,4 +42,36 @@ public void execute() throws Throwable {
4042
4143 logger .setLevel (originalLevel );
4244 }
45+
46+ @ Test
47+ void testMultilineStringsError () {
48+ Logger logger = Logger .getLogger ("wlsdeploy.json" );
49+ Level originalLevel = logger .getLevel ();
50+ logger .setLevel (Level .OFF );
51+
52+ String text = "{ \" abc\" : \" xyz\n 123\" }" ;
53+ InputStream stream = new ByteArrayInputStream (text .getBytes (UTF_8 ));
54+ final JsonStreamTranslator translator = new JsonStreamTranslator ("String" , stream );
55+ assertThrows (JsonException .class , new Executable () {
56+ @ Override
57+ public void execute () throws Throwable {
58+ translator .parse ();
59+ }
60+ }, "Test must raise JsonException when model has a value with a newline in it" );
61+ logger .setLevel (originalLevel );
62+ }
63+
64+ @ Test
65+ void testEscapedMultilineStrings () throws Exception {
66+ Logger logger = Logger .getLogger ("wlsdeploy.json" );
67+ Level originalLevel = logger .getLevel ();
68+ logger .setLevel (Level .OFF );
69+
70+ String text = "{ \" abc\" : \" xyz\\ n123\" }" ;
71+ InputStream stream = new ByteArrayInputStream (text .getBytes (UTF_8 ));
72+ final JsonStreamTranslator translator = new JsonStreamTranslator ("String" , stream );
73+ PyDictionary actual = translator .parse ();
74+ assertNotNull (actual , "Escaped Multiline String should parse correctly" );
75+ logger .setLevel (originalLevel );
76+ }
4377}
0 commit comments