11
11
12
12
import org .junit .jupiter .api .Test ;
13
13
import org .junit .jupiter .api .function .Executable ;
14
+ import org .python .core .PyDictionary ;
14
15
15
16
import static java .nio .charset .StandardCharsets .UTF_8 ;
17
+ import static org .junit .jupiter .api .Assertions .assertNotNull ;
16
18
import static org .junit .jupiter .api .Assertions .assertThrows ;
17
19
18
- public class JsonTranslatorTest {
20
+ class JsonTranslatorTest {
19
21
20
22
/**
21
23
* Verify that a lexical error will throw an Exception
22
24
*/
23
25
@ Test
24
- public void testLexicalError () {
26
+ void testLexicalError () {
25
27
// Temporarily disable logging for this test. Intended lexical failure will log a stack trace.
26
28
Logger logger = Logger .getLogger ("wlsdeploy.json" );
27
29
Level originalLevel = logger .getLevel ();
@@ -40,4 +42,36 @@ public void execute() throws Throwable {
40
42
41
43
logger .setLevel (originalLevel );
42
44
}
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
+ }
43
77
}
0 commit comments