diff --git a/.gitignore b/.gitignore
index 9e7b59c..7afd420 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,9 @@ build
.classpath
.project
.settings/
+/.gradle/
+/gradle/
+/gradlew
+/gradlew.bat
+.gitmodules
+src/main/
diff --git a/README.md b/README.md
index d08751d..385c222 100644
--- a/README.md
+++ b/README.md
@@ -29,15 +29,22 @@ git clone https://github.com/stleary/JSON-Java-unit-test.git .
\# Create a directory structure for the JSON-Java code
````
# Windows version
-md /s src\org\json
+md /s src\main\java\org\json
+# *nix version
+mkdir -p src/main/java/org/json
````
\# clone JSON-Java
````
-git clone https://github.com/stleary/JSON-Java.git src\org\json
+#Windows version
+git clone https://github.com/stleary/JSON-Java.git src\main\java\org\json
+
+#*Nix version
+git clone https://github.com/stleary/JSON-Java.git src/main/java/org/json
````
\# Build, then execute the unit tests and code coverage
````
gradle clean build test jacocoTestReport
+
````
Unit test results will be in build\reports\tests\index.html
Code coverage will be in build\reports\jacoco\html\index.html
@@ -55,7 +62,7 @@ When adding a new unit test, don't forget to update JunitTestSuite.java.
The fundamental issues with JSON-Java testing are:
* JSONObjects are unordered, making simple string comparison ineffective.
-* Comparisons via **equals()** is not currently supported. Neither JSONArray nor JSONObject overrride hashCode() or equals(), so comparison defaults to the Object equals(), which is not useful.
+* Comparisons via **equals()** is not currently supported. Neither JSONArray nor JSONObject override hashCode() or equals(), so comparison defaults to the Object equals(), which is not useful.
* Access to the JSONArray and JSONObject internal containers for comparison is not currently available.
General issues with unit testing are:
diff --git a/build.gradle b/build.gradle
index ad186a1..d2969d4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,21 +4,8 @@ apply plugin: 'jacoco'
sourceSets {
// Uncomment main if you have merged JSON-Java and JSON-Java-unit-test code
- main {
- java {
- srcDir 'src'
- exclude 'test/'
- }
- }
- test {
- java {
- srcDir 'src/test'
- exclude 'resources/'
- }
- resources {
- srcDir 'resources'
- }
- }
+ main
+ test
}
repositories {
diff --git a/src/test/org/json/junit/CDLTest.java b/src/test/java/org/json/junit/CDLTest.java
similarity index 100%
rename from src/test/org/json/junit/CDLTest.java
rename to src/test/java/org/json/junit/CDLTest.java
diff --git a/src/test/org/json/junit/CookieListTest.java b/src/test/java/org/json/junit/CookieListTest.java
similarity index 100%
rename from src/test/org/json/junit/CookieListTest.java
rename to src/test/java/org/json/junit/CookieListTest.java
diff --git a/src/test/org/json/junit/CookieTest.java b/src/test/java/org/json/junit/CookieTest.java
similarity index 100%
rename from src/test/org/json/junit/CookieTest.java
rename to src/test/java/org/json/junit/CookieTest.java
diff --git a/src/test/org/json/junit/EnumTest.java b/src/test/java/org/json/junit/EnumTest.java
similarity index 100%
rename from src/test/org/json/junit/EnumTest.java
rename to src/test/java/org/json/junit/EnumTest.java
diff --git a/src/test/org/json/junit/HTTPTest.java b/src/test/java/org/json/junit/HTTPTest.java
similarity index 100%
rename from src/test/org/json/junit/HTTPTest.java
rename to src/test/java/org/json/junit/HTTPTest.java
diff --git a/src/test/org/json/junit/JSONArrayTest.java b/src/test/java/org/json/junit/JSONArrayTest.java
similarity index 100%
rename from src/test/org/json/junit/JSONArrayTest.java
rename to src/test/java/org/json/junit/JSONArrayTest.java
diff --git a/src/test/org/json/junit/JSONMLTest.java b/src/test/java/org/json/junit/JSONMLTest.java
similarity index 100%
rename from src/test/org/json/junit/JSONMLTest.java
rename to src/test/java/org/json/junit/JSONMLTest.java
diff --git a/src/test/org/json/junit/JSONObjectTest.java b/src/test/java/org/json/junit/JSONObjectTest.java
similarity index 96%
rename from src/test/org/json/junit/JSONObjectTest.java
rename to src/test/java/org/json/junit/JSONObjectTest.java
index 6ef3615..d550139 100644
--- a/src/test/org/json/junit/JSONObjectTest.java
+++ b/src/test/java/org/json/junit/JSONObjectTest.java
@@ -1564,6 +1564,26 @@ public class JSONObjectTest {
assertTrue("expected val3", "val3".equals(mapJsonObject.query("/key3")));
}
+
+ /**
+ * RFC 7159 defines control characters to be U+0000 through U+001F. This test verifies that the parser is checking for these in expected ways.
+ */
+ @Test
+ public void jsonObjectParseControlCharacters(){
+ for(int i = 0;i<=0x001f;i++){
+ final String charString = String.valueOf((char)i);
+ final String source = "{\"key\":\""+charString+"\"}";
+ try {
+ JSONObject jo = new JSONObject(source);
+ assertTrue("Expected "+charString+"("+i+") in the JSON Object but did not find it.",charString.equals(jo.getString("key")));
+ } catch (JSONException ex) {
+ assertTrue("Only \\0 (U+0000), \\n (U+000A), and \\r (U+000D) should cause an error. Instead "+charString+"("+i+") caused an error",
+ i=='\0' || i=='\n' || i=='\r'
+ );
+ }
+ }
+ }
+
/**
* Explore how JSONObject handles parsing errors.
*/
diff --git a/src/test/org/json/junit/JSONPointerTest.java b/src/test/java/org/json/junit/JSONPointerTest.java
similarity index 100%
rename from src/test/org/json/junit/JSONPointerTest.java
rename to src/test/java/org/json/junit/JSONPointerTest.java
diff --git a/src/test/org/json/junit/JSONStringerTest.java b/src/test/java/org/json/junit/JSONStringerTest.java
similarity index 100%
rename from src/test/org/json/junit/JSONStringerTest.java
rename to src/test/java/org/json/junit/JSONStringerTest.java
diff --git a/src/test/org/json/junit/JunitTestSuite.java b/src/test/java/org/json/junit/JunitTestSuite.java
similarity index 100%
rename from src/test/org/json/junit/JunitTestSuite.java
rename to src/test/java/org/json/junit/JunitTestSuite.java
diff --git a/src/test/org/json/junit/MyBean.java b/src/test/java/org/json/junit/MyBean.java
similarity index 100%
rename from src/test/org/json/junit/MyBean.java
rename to src/test/java/org/json/junit/MyBean.java
diff --git a/src/test/org/json/junit/MyBigNumberBean.java b/src/test/java/org/json/junit/MyBigNumberBean.java
similarity index 100%
rename from src/test/org/json/junit/MyBigNumberBean.java
rename to src/test/java/org/json/junit/MyBigNumberBean.java
diff --git a/src/test/org/json/junit/MyEnum.java b/src/test/java/org/json/junit/MyEnum.java
similarity index 100%
rename from src/test/org/json/junit/MyEnum.java
rename to src/test/java/org/json/junit/MyEnum.java
diff --git a/src/test/org/json/junit/MyEnumClass.java b/src/test/java/org/json/junit/MyEnumClass.java
similarity index 100%
rename from src/test/org/json/junit/MyEnumClass.java
rename to src/test/java/org/json/junit/MyEnumClass.java
diff --git a/src/test/org/json/junit/MyEnumField.java b/src/test/java/org/json/junit/MyEnumField.java
similarity index 100%
rename from src/test/org/json/junit/MyEnumField.java
rename to src/test/java/org/json/junit/MyEnumField.java
diff --git a/src/test/org/json/junit/MyJsonString.java b/src/test/java/org/json/junit/MyJsonString.java
similarity index 100%
rename from src/test/org/json/junit/MyJsonString.java
rename to src/test/java/org/json/junit/MyJsonString.java
diff --git a/src/test/org/json/junit/MyPublicClass.java b/src/test/java/org/json/junit/MyPublicClass.java
similarity index 100%
rename from src/test/org/json/junit/MyPublicClass.java
rename to src/test/java/org/json/junit/MyPublicClass.java
diff --git a/src/test/org/json/junit/PropertyTest.java b/src/test/java/org/json/junit/PropertyTest.java
similarity index 100%
rename from src/test/org/json/junit/PropertyTest.java
rename to src/test/java/org/json/junit/PropertyTest.java
diff --git a/src/test/org/json/junit/StringsResourceBundle.java b/src/test/java/org/json/junit/StringsResourceBundle.java
similarity index 100%
rename from src/test/org/json/junit/StringsResourceBundle.java
rename to src/test/java/org/json/junit/StringsResourceBundle.java
diff --git a/src/test/org/json/junit/TestRunner.java b/src/test/java/org/json/junit/TestRunner.java
similarity index 100%
rename from src/test/org/json/junit/TestRunner.java
rename to src/test/java/org/json/junit/TestRunner.java
diff --git a/src/test/org/json/junit/Util.java b/src/test/java/org/json/junit/Util.java
similarity index 100%
rename from src/test/org/json/junit/Util.java
rename to src/test/java/org/json/junit/Util.java
diff --git a/src/test/org/json/junit/XMLTest.java b/src/test/java/org/json/junit/XMLTest.java
similarity index 100%
rename from src/test/org/json/junit/XMLTest.java
rename to src/test/java/org/json/junit/XMLTest.java