Skip to content

Commit f112a09

Browse files
committed
fixed failing unit tests in strict mode, issue 940
1 parent 42afb34 commit f112a09

File tree

2 files changed

+39
-10
lines changed

2 files changed

+39
-10
lines changed

src/main/java/org/json/JSONParserConfiguration.java

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class JSONParserConfiguration extends ParserConfiguration {
1515
public JSONParserConfiguration() {
1616
super();
1717
this.overwriteDuplicateKey = false;
18+
this.strictMode = true;
1819
}
1920

2021
/**

src/test/java/org/json/junit/JSONTokenerTest.java

+38-10
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@
1616
import java.io.Reader;
1717
import java.io.StringReader;
1818

19-
import org.json.JSONArray;
20-
import org.json.JSONException;
21-
import org.json.JSONObject;
22-
import org.json.JSONTokener;
19+
import org.json.*;
2320
import org.junit.Test;
2421

2522
/**
@@ -98,7 +95,17 @@ public void testValid() {
9895
checkValid(" [] ",JSONArray.class);
9996
checkValid("[1,2]",JSONArray.class);
10097
checkValid("\n\n[1,2]\n\n",JSONArray.class);
101-
checkValid("1 2", String.class);
98+
99+
// Test should fail if default strictMode is true, pass if false
100+
JSONParserConfiguration jsonParserConfiguration = new JSONParserConfiguration();
101+
if (jsonParserConfiguration.isStrictMode()) {
102+
try {
103+
checkValid("1 2", String.class);
104+
assertEquals("Expected to throw exception due to invalid string", true, false);
105+
} catch (JSONException e) { }
106+
} else {
107+
checkValid("1 2", String.class);
108+
}
102109
}
103110

104111
@Test
@@ -330,16 +337,37 @@ public void testAutoClose(){
330337
public void testInvalidInput_JSONObject_withoutStrictModel_shouldParseInput() {
331338
String input = "{\"invalidInput\": [],}";
332339
JSONTokener tokener = new JSONTokener(input);
333-
Object value = tokener.nextValue();
334-
assertEquals(new JSONObject(input).toString(), value.toString());
340+
341+
// Test should fail if default strictMode is true, pass if false
342+
JSONParserConfiguration jsonParserConfiguration = new JSONParserConfiguration();
343+
if (jsonParserConfiguration.isStrictMode()) {
344+
try {
345+
Object value = tokener.nextValue();
346+
assertEquals(new JSONObject(input).toString(), value.toString());
347+
assertEquals("Expected to throw exception due to invalid string", true, false);
348+
} catch (JSONException e) { }
349+
} else {
350+
Object value = tokener.nextValue();
351+
assertEquals(new JSONObject(input).toString(), value.toString());
352+
}
335353
}
336354

337355
@Test
338356
public void testInvalidInput_JSONArray_withoutStrictModel_shouldParseInput() {
339357
String input = "[\"invalidInput\",]";
340358
JSONTokener tokener = new JSONTokener(input);
341-
Object value = tokener.nextValue();
342-
assertEquals(new JSONArray(input).toString(), value.toString());
343-
}
344359

360+
// Test should fail if default strictMode is true, pass if false
361+
JSONParserConfiguration jsonParserConfiguration = new JSONParserConfiguration();
362+
if (jsonParserConfiguration.isStrictMode()) {
363+
try {
364+
Object value = tokener.nextValue();
365+
assertEquals(new JSONArray(input).toString(), value.toString());
366+
assertEquals("Expected to throw exception due to invalid string", true, false);
367+
} catch (JSONException e) { }
368+
} else {
369+
Object value = tokener.nextValue();
370+
assertEquals(new JSONArray(input).toString(), value.toString());
371+
}
372+
}
345373
}

0 commit comments

Comments
 (0)