mirror of
https://github.com/stleary/JSON-java.git
synced 2026-01-24 00:03:17 -05:00
Compare commits
15 Commits
6f92a3ab4e
...
20220924
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8439039da7 | ||
|
|
a6bdd081eb | ||
|
|
a30d71fdca | ||
|
|
cdd67b0aef | ||
|
|
89f6e7f6a6 | ||
|
|
346fb26f2d | ||
|
|
6daabb43ab | ||
|
|
57f785c42e | ||
|
|
3eecd67a3b | ||
|
|
5a587bbdfd | ||
|
|
e0534b3ec7 | ||
|
|
7dd9e01dae | ||
|
|
88ca19042b | ||
|
|
b4036e6a8e | ||
|
|
89f16ad0af |
2
.github/workflows/pipeline.yml
vendored
2
.github/workflows/pipeline.yml
vendored
@@ -42,7 +42,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
# build against supported Java LTS versions:
|
||||
java: [ 1.7, 8, 11 ]
|
||||
java: [ 8, 11 ]
|
||||
name: Java ${{ matrix.java }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
@@ -218,7 +218,7 @@ import java.util.Properties;
|
||||
}
|
||||
```
|
||||
<h2>Part 2: Conversion methods</h2>
|
||||
<p>We don't need to have a JSON docuemnt to work. This project also admits conversions from other type of files.</p>
|
||||
<p>We don't need to have a JSON document to work. This project also admits conversions from other type of files.</p>
|
||||
<p>Secondly, we can also convert from JSON to those type of files.</p>
|
||||
|
||||
<h3>Extra: Conversion to JSONArray</h3>
|
||||
|
||||
23
LICENSE
23
LICENSE
@@ -1,23 +1,2 @@
|
||||
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ JSON in Java [package org.json]
|
||||
|
||||
[](https://mvnrepository.com/artifact/org.json/json)
|
||||
|
||||
**[Click here if you just want the latest release jar file.](https://search.maven.org/remotecontent?filepath=org/json/json/20220320/json-20220320.jar)**
|
||||
**[Click here if you just want the latest release jar file.](https://search.maven.org/remotecontent?filepath=org/json/json/20220924/json-20220924.jar)**
|
||||
|
||||
|
||||
# Overview
|
||||
@@ -28,8 +28,6 @@ Project goals include:
|
||||
|
||||
The files in this package implement JSON encoders and decoders. The package can also convert between JSON and XML, HTTP headers, Cookies, and CDL.
|
||||
|
||||
The license includes this restriction: ["The software shall be used for good, not evil."](https://en.wikipedia.org/wiki/Douglas_Crockford#%22Good,_not_Evil%22) If your conscience cannot live with that, then choose a different package.
|
||||
|
||||
# If you would like to contribute to this project
|
||||
|
||||
For more information on contributions, please see [CONTRIBUTING.md](https://github.com/stleary/JSON-java/blob/master/docs/CONTRIBUTING.md)
|
||||
|
||||
@@ -5,6 +5,8 @@ and artifactId "json". For example:
|
||||
[https://search.maven.org/search?q=g:org.json%20AND%20a:json&core=gav](https://search.maven.org/search?q=g:org.json%20AND%20a:json&core=gav)
|
||||
|
||||
~~~
|
||||
20220924 New License - public domain, and some minor updates
|
||||
|
||||
20220320 Wrap StackOverflow with JSONException
|
||||
|
||||
20211205 Recent commits and some bug fixes for similar()
|
||||
|
||||
29
pom.xml
29
pom.xml
@@ -3,7 +3,7 @@
|
||||
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
<version>20220320</version>
|
||||
<version>20220924</version>
|
||||
<packaging>bundle</packaging>
|
||||
|
||||
<name>JSON in Java</name>
|
||||
@@ -18,10 +18,6 @@
|
||||
This is a reference implementation. There is a large number of JSON packages
|
||||
in Java. Perhaps someday the Java community will standardize on one. Until
|
||||
then, choose carefully.
|
||||
|
||||
The license includes this restriction: "The software shall be used for good,
|
||||
not evil." If your conscience cannot live with that, then choose a different
|
||||
package.
|
||||
</description>
|
||||
<url>https://github.com/douglascrockford/JSON-java</url>
|
||||
|
||||
@@ -39,28 +35,9 @@
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
<name>The JSON License</name>
|
||||
<url>http://json.org/license.html</url>
|
||||
<name>Public Domain</name>
|
||||
<url>https://github.com/stleary/JSON-java/blob/master/LICENSE</url>
|
||||
<distribution>repo</distribution>
|
||||
<comments>Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||
associated documentation files (the "Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
|
||||
following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial
|
||||
portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
</comments>
|
||||
</license>
|
||||
</licenses>
|
||||
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,27 +3,7 @@ package org.json;
|
||||
import java.util.Locale;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -1386,6 +1366,10 @@ public class JSONArray implements Iterable<Object> {
|
||||
if (!JSONObject.isNumberSimilar((Number)valueThis, (Number)valueOther)) {
|
||||
return false;
|
||||
}
|
||||
} else if (valueThis instanceof JSONString && valueOther instanceof JSONString) {
|
||||
if (!((JSONString) valueThis).toJSONString().equals(((JSONString) valueOther).toJSONString())) {
|
||||
return false;
|
||||
}
|
||||
} else if (!valueThis.equals(valueOther)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2008 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,31 +1,10 @@
|
||||
package org.json;
|
||||
|
||||
import java.io.Closeable;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
import java.io.StringWriter;
|
||||
import java.io.Writer;
|
||||
@@ -166,6 +145,10 @@ public class JSONObject {
|
||||
*/
|
||||
private final Map<String, Object> map;
|
||||
|
||||
public Class<? extends Map> getMapType() {
|
||||
return map.getClass();
|
||||
}
|
||||
|
||||
/**
|
||||
* It is sometimes more convenient and less ambiguous to have a
|
||||
* <code>NULL</code> object than to use Java's <code>null</code> value.
|
||||
@@ -2142,6 +2125,10 @@ public class JSONObject {
|
||||
if (!isNumberSimilar((Number)valueThis, (Number)valueOther)) {
|
||||
return false;
|
||||
}
|
||||
} else if (valueThis instanceof JSONString && valueOther instanceof JSONString) {
|
||||
if (!((JSONString) valueThis).toJSONString().equals(((JSONString) valueOther).toJSONString())) {
|
||||
return false;
|
||||
}
|
||||
} else if (!valueThis.equals(valueOther)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -10,27 +10,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2018 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static java.lang.annotation.ElementType.METHOD;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2018 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static java.lang.annotation.ElementType.METHOD;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2006 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import java.io.StringWriter;
|
||||
|
||||
@@ -8,27 +8,7 @@ import java.io.Reader;
|
||||
import java.io.StringReader;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,27 +5,7 @@ import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
/*
|
||||
Copyright (c) 2006 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import java.util.Enumeration;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2015 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import java.io.Reader;
|
||||
|
||||
@@ -1,26 +1,6 @@
|
||||
package org.json;
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json;
|
||||
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import java.io.Reader;
|
||||
|
||||
@@ -1,26 +1,6 @@
|
||||
package org.json;
|
||||
/*
|
||||
Copyright (c) 2002 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -1,31 +1,12 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
@@ -49,7 +30,9 @@ import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONPointerException;
|
||||
import org.json.JSONString;
|
||||
import org.json.JSONTokener;
|
||||
import org.json.junit.data.MyJsonString;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.jayway.jsonpath.Configuration;
|
||||
@@ -237,6 +220,10 @@ public class JSONArrayTest {
|
||||
assertTrue(
|
||||
"The RAW Collection should give me the same as the Typed Collection",
|
||||
expected.similar(jaObj));
|
||||
Util.checkJSONArrayMaps(expected);
|
||||
Util.checkJSONArrayMaps(jaObj);
|
||||
Util.checkJSONArrayMaps(jaRaw);
|
||||
Util.checkJSONArrayMaps(jaInt);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -275,6 +262,7 @@ public class JSONArrayTest {
|
||||
myList.get(i),
|
||||
jsonArray.getString(myInts.length + i));
|
||||
}
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -308,6 +296,9 @@ public class JSONArrayTest {
|
||||
assertTrue(
|
||||
"The RAW Collection should give me the same as the Typed Collection",
|
||||
expected.similar(jaInt));
|
||||
Util.checkJSONArraysMaps(new ArrayList<JSONArray>(Arrays.asList(
|
||||
jaRaw, jaObj, jaInt
|
||||
)));
|
||||
}
|
||||
|
||||
|
||||
@@ -351,6 +342,9 @@ public class JSONArrayTest {
|
||||
assertTrue(
|
||||
"The RAW Collection should give me the same as the Typed Collection",
|
||||
expected.similar(jaObjObj));
|
||||
Util.checkJSONArraysMaps(new ArrayList<JSONArray>(Arrays.asList(
|
||||
expected, jaRaw, jaStrObj, jaStrInt, jaObjObj
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -397,6 +391,7 @@ public class JSONArrayTest {
|
||||
new Long(-1).equals(jsonArray.getLong(12)));
|
||||
|
||||
assertTrue("Array value null", jsonArray.isNull(-1));
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -463,6 +458,7 @@ public class JSONArrayTest {
|
||||
assertEquals("Expected an exception message",
|
||||
"JSONArray[5] is not a String (class java.math.BigDecimal : 0.002345).",e.getMessage());
|
||||
}
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -499,6 +495,7 @@ public class JSONArrayTest {
|
||||
assertTrue("expected value4", "value4".equals(jsonArray.query("/10/key4")));
|
||||
assertTrue("expected 0", Integer.valueOf(0).equals(jsonArray.query("/11")));
|
||||
assertTrue("expected \"-1\"", "-1".equals(jsonArray.query("/12")));
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -512,6 +509,9 @@ public class JSONArrayTest {
|
||||
assertTrue("expected JSONArray length 13. instead found "+jsonArray.length(), jsonArray.length() == 13);
|
||||
JSONArray nestedJsonArray = jsonArray.getJSONArray(9);
|
||||
assertTrue("expected JSONArray length 1", nestedJsonArray.length() == 1);
|
||||
Util.checkJSONArraysMaps(new ArrayList<JSONArray>(Arrays.asList(
|
||||
jsonArray, nestedJsonArray
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -587,6 +587,10 @@ public class JSONArrayTest {
|
||||
"hello".equals(jsonArray.optString(4)));
|
||||
assertTrue("Array opt string default implicit",
|
||||
"".equals(jsonArray.optString(-1)));
|
||||
Util.checkJSONArraysMaps(new ArrayList<JSONArray>(Arrays.asList(
|
||||
jsonArray, nestedJsonArray
|
||||
)));
|
||||
Util.checkJSONObjectMaps(nestedJsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -601,7 +605,9 @@ public class JSONArrayTest {
|
||||
assertTrue("unexpected optLong value",ja.optLong(0,0)==123);
|
||||
assertTrue("unexpected optDouble value",ja.optDouble(0,0.0)==123.0);
|
||||
assertTrue("unexpected optBigInteger value",ja.optBigInteger(0,BigInteger.ZERO).compareTo(new BigInteger("123"))==0);
|
||||
assertTrue("unexpected optBigDecimal value",ja.optBigDecimal(0,BigDecimal.ZERO).compareTo(new BigDecimal("123"))==0); }
|
||||
assertTrue("unexpected optBigDecimal value",ja.optBigDecimal(0,BigDecimal.ZERO).compareTo(new BigDecimal("123"))==0);
|
||||
Util.checkJSONArrayMaps(ja);
|
||||
}
|
||||
|
||||
/**
|
||||
* Exercise the JSONArray.put(value) method with various parameters
|
||||
@@ -677,6 +683,8 @@ public class JSONArrayTest {
|
||||
assertTrue("expected 2 items in [9]", ((List<?>)(JsonPath.read(doc, "$[9]"))).size() == 2);
|
||||
assertTrue("expected 1", Integer.valueOf(1).equals(jsonArray.query("/9/0")));
|
||||
assertTrue("expected 2", Integer.valueOf(2).equals(jsonArray.query("/9/1")));
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -756,6 +764,8 @@ public class JSONArrayTest {
|
||||
assertTrue("expected 2", Integer.valueOf(2).equals(jsonArray.query("/9/1")));
|
||||
assertTrue("expected 1 item in [10]", ((Map<?,?>)(JsonPath.read(doc, "$[10]"))).size() == 1);
|
||||
assertTrue("expected v1", "v1".equals(jsonArray.query("/10/k1")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -772,6 +782,7 @@ public class JSONArrayTest {
|
||||
jsonArray.remove(0);
|
||||
assertTrue("array should be empty", null == jsonArray.remove(5));
|
||||
assertTrue("jsonArray should be empty", jsonArray.isEmpty());
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -811,6 +822,12 @@ public class JSONArrayTest {
|
||||
otherJsonArray.put("world");
|
||||
assertTrue("arrays values differ",
|
||||
!jsonArray.similar(otherJsonArray));
|
||||
Util.checkJSONArraysMaps(new ArrayList<JSONArray>(Arrays.asList(
|
||||
jsonArray, otherJsonArray
|
||||
)));
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObject, otherJsonObject
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -894,6 +911,7 @@ public class JSONArrayTest {
|
||||
for (String s : jsonArray4Strs) {
|
||||
list.contains(s);
|
||||
}
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -905,6 +923,9 @@ public class JSONArrayTest {
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
assertTrue("toJSONObject should return null",
|
||||
null == jsonArray.toJSONObject(names));
|
||||
Util.checkJSONArraysMaps(new ArrayList<JSONArray>(Arrays.asList(
|
||||
names, jsonArray
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -926,6 +947,7 @@ public class JSONArrayTest {
|
||||
assertTrue("expected 5", Integer.valueOf(5).equals(jsonArray.query("/4")));
|
||||
assertTrue("expected 6", Integer.valueOf(6).equals(jsonArray.query("/5")));
|
||||
assertTrue("expected 7", Integer.valueOf(7).equals(jsonArray.query("/6")));
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -968,6 +990,10 @@ public class JSONArrayTest {
|
||||
assertTrue("Array value string long",
|
||||
new Long(-1).equals(Long.parseLong((String) it.next())));
|
||||
assertTrue("should be at end of array", !it.hasNext());
|
||||
Util.checkJSONArraysMaps(new ArrayList<JSONArray>(Arrays.asList(
|
||||
jsonArray, nestedJsonArray
|
||||
)));
|
||||
Util.checkJSONObjectMaps(nestedJsonObject);
|
||||
}
|
||||
|
||||
@Test(expected = JSONPointerException.class)
|
||||
@@ -1010,6 +1036,7 @@ public class JSONArrayTest {
|
||||
} finally {
|
||||
stringWriter.close();
|
||||
}
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1069,9 +1096,11 @@ public class JSONArrayTest {
|
||||
&& actualStr.contains("\"key2\": false")
|
||||
&& actualStr.contains("\"key3\": 3.14")
|
||||
);
|
||||
Util.checkJSONArrayMaps(finalArray);
|
||||
} finally {
|
||||
stringWriter.close();
|
||||
}
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1182,6 +1211,7 @@ public class JSONArrayTest {
|
||||
// assert that the new list is mutable
|
||||
assertTrue("Removing an entry should succeed", list.remove(2) != null);
|
||||
assertTrue("List should have 2 elements", list.size() == 2);
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1190,13 +1220,13 @@ public class JSONArrayTest {
|
||||
*/
|
||||
@Test
|
||||
public void testJSONArrayInt() {
|
||||
assertNotNull(new JSONArray(0));
|
||||
assertNotNull(new JSONArray(5));
|
||||
// Check Size -> Even though the capacity of the JSONArray can be specified using a positive
|
||||
// integer but the length of JSONArray always reflects upon the items added into it.
|
||||
assertEquals(0l, new JSONArray(10).length());
|
||||
assertNotNull(new JSONArray(0));
|
||||
assertNotNull(new JSONArray(5));
|
||||
// Check Size -> Even though the capacity of the JSONArray can be specified using a positive
|
||||
// integer but the length of JSONArray always reflects upon the items added into it.
|
||||
// assertEquals(0l, new JSONArray(10).length());
|
||||
try {
|
||||
assertNotNull("Should throw an exception", new JSONArray(-1));
|
||||
assertNotNull("Should throw an exception", new JSONArray(-1));
|
||||
} catch (JSONException e) {
|
||||
assertEquals("Expected an exception message",
|
||||
"JSONArray initial capacity cannot be negative.",
|
||||
@@ -1223,8 +1253,8 @@ public class JSONArrayTest {
|
||||
((Collection<Object>)o).add("test");
|
||||
((Collection<Object>)o).add(false);
|
||||
try {
|
||||
a = new JSONArray(o);
|
||||
assertNull("Should error", a);
|
||||
JSONArray a0 = new JSONArray(o);
|
||||
assertNull("Should error", a0);
|
||||
} catch (JSONException ex) {
|
||||
}
|
||||
|
||||
@@ -1232,10 +1262,11 @@ public class JSONArrayTest {
|
||||
// this is required for backwards compatibility
|
||||
o = a;
|
||||
try {
|
||||
a = new JSONArray(o);
|
||||
assertNull("Should error", a);
|
||||
JSONArray a1 = new JSONArray(o);
|
||||
assertNull("Should error", a1);
|
||||
} catch (JSONException ex) {
|
||||
}
|
||||
Util.checkJSONArrayMaps(a);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1252,6 +1283,9 @@ public class JSONArrayTest {
|
||||
for(int i = 0; i < a1.length(); i++) {
|
||||
assertEquals("index " + i + " are equal", a1.get(i), a2.get(i));
|
||||
}
|
||||
Util.checkJSONArraysMaps(new ArrayList<JSONArray>(Arrays.asList(
|
||||
a1, a2
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1269,6 +1303,9 @@ public class JSONArrayTest {
|
||||
for(int i = 0; i < a1.length(); i++) {
|
||||
assertEquals("index " + i + " are equal", a1.get(i), a2.get(i));
|
||||
}
|
||||
Util.checkJSONArraysMaps(new ArrayList<JSONArray>(Arrays.asList(
|
||||
a1, a2
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1284,6 +1321,7 @@ public class JSONArrayTest {
|
||||
jsonArray.clear(); //Clears the JSONArray
|
||||
assertTrue("expected jsonArray.length() == 0", jsonArray.length() == 0); //Check if its length is 0
|
||||
jsonArray.getInt(0); //Should throws org.json.JSONException: JSONArray[0] not found
|
||||
Util.checkJSONArrayMaps(jsonArray);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1297,5 +1335,27 @@ public class JSONArrayTest {
|
||||
JSONArray json_input = new JSONArray(tokener);
|
||||
assertNotNull(json_input);
|
||||
fail("Excepected Exception.");
|
||||
Util.checkJSONArrayMaps(json_input);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIssue682SimilarityOfJSONString() {
|
||||
JSONArray ja1 = new JSONArray()
|
||||
.put(new MyJsonString())
|
||||
.put(2);
|
||||
JSONArray ja2 = new JSONArray()
|
||||
.put(new MyJsonString())
|
||||
.put(2);
|
||||
assertTrue(ja1.similar(ja2));
|
||||
|
||||
JSONArray ja3 = new JSONArray()
|
||||
.put(new JSONString() {
|
||||
@Override
|
||||
public String toJSONString() {
|
||||
return "\"different value\"";
|
||||
}
|
||||
})
|
||||
.put(2);
|
||||
assertFalse(ja1.similar(ja3));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -41,14 +21,7 @@ import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -57,6 +30,7 @@ import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONPointerException;
|
||||
import org.json.JSONString;
|
||||
import org.json.JSONTokener;
|
||||
import org.json.XML;
|
||||
import org.json.junit.data.BrokenToString;
|
||||
@@ -80,6 +54,7 @@ import org.json.junit.data.Singleton;
|
||||
import org.json.junit.data.SingletonEnum;
|
||||
import org.json.junit.data.WeirdList;
|
||||
import org.junit.Test;
|
||||
import org.json.junit.Util;
|
||||
|
||||
import com.jayway.jsonpath.Configuration;
|
||||
import com.jayway.jsonpath.JsonPath;
|
||||
@@ -140,8 +115,12 @@ public class JSONObjectTest {
|
||||
JSONObject first = new JSONObject("{\"a\": 1, \"b\": 2, \"c\": 3}");
|
||||
JSONObject second = new JSONObject("{\"a\": 1, \"b\": 2.0, \"c\": 4}");
|
||||
assertFalse("first-second should eval to false", first.similar(second));
|
||||
List<JSONObject> jsonObjects = new ArrayList<JSONObject>(
|
||||
Arrays.asList(obj1, obj2, obj3, obj4, obj5)
|
||||
);
|
||||
Util.checkJSONObjectsMaps(jsonObjects);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void timeNumberParsing() {
|
||||
// test data to use
|
||||
@@ -214,7 +193,9 @@ public class JSONObjectTest {
|
||||
*/
|
||||
@Test(expected=NullPointerException.class)
|
||||
public void jsonObjectByNullBean() {
|
||||
assertNull("Expected an exception",new JSONObject((MyBean)null));
|
||||
JSONObject jsonObject = new JSONObject((MyBean)null);
|
||||
assertNull("Expected an exception", jsonObject);
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -232,6 +213,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected value1", textStr.contains("\"value1\""));
|
||||
assertTrue("expected key2", textStr.contains("\"key2\""));
|
||||
assertTrue("expected 42", textStr.contains("42"));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -252,6 +234,7 @@ public class JSONObjectTest {
|
||||
final String actualString = json.optString("key");
|
||||
assert str.equals(actualString) : "Incorrect key value. Got "
|
||||
+ actualString + " expected " + str;
|
||||
Util.checkJSONObjectMaps(json);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -261,6 +244,7 @@ public class JSONObjectTest {
|
||||
public void emptyJsonObject() {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
assertTrue("jsonObject should be empty", jsonObject.isEmpty());
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -291,6 +275,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected \"nullKey\":null", JSONObject.NULL.equals(jsonObjectByName.query("/nullKey")));
|
||||
assertTrue("expected \"stringKey\":\"hello world!\"", "hello world!".equals(jsonObjectByName.query("/stringKey")));
|
||||
assertTrue("expected \"doubleKey\":-23.45e67", new BigDecimal("-23.45e67").equals(jsonObjectByName.query("/doubleKey")));
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(jsonObject, jsonObjectByName)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -304,6 +289,7 @@ public class JSONObjectTest {
|
||||
Map<String, Object> map = null;
|
||||
JSONObject jsonObject = new JSONObject(map);
|
||||
assertTrue("jsonObject should be empty", jsonObject.isEmpty());
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -329,6 +315,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected \"stringKey\":\"hello world!\"", "hello world!".equals(jsonObject.query("/stringKey")));
|
||||
assertTrue("expected \"escapeStringKey\":\"h\be\tllo w\u1234orld!\"", "h\be\tllo w\u1234orld!".equals(jsonObject.query("/escapeStringKey")));
|
||||
assertTrue("expected \"doubleKey\":-23.45e67", Double.valueOf("-23.45e67").equals(jsonObject.query("/doubleKey")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -367,6 +354,9 @@ public class JSONObjectTest {
|
||||
assertTrue(
|
||||
"The RAW Collection should give me the same as the Typed Collection",
|
||||
expected.similar(jaObjObj));
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(
|
||||
Arrays.asList(jaRaw, jaStrObj, jaStrInt, jaObjObj))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -384,8 +374,8 @@ public class JSONObjectTest {
|
||||
* The only getter is getNumber (key=number), whose return value is
|
||||
* BigDecimal(42).
|
||||
*/
|
||||
JSONObject jsonObject = new JSONObject(new MyNumberContainer());
|
||||
String actual = jsonObject.toString();
|
||||
JSONObject jsonObject0 = new JSONObject(new MyNumberContainer());
|
||||
String actual = jsonObject0.toString();
|
||||
String expected = "{\"myNumber\":{\"number\":42}}";
|
||||
assertEquals("Equal", expected , actual);
|
||||
|
||||
@@ -397,9 +387,9 @@ public class JSONObjectTest {
|
||||
* The MyNumber.toString() method is responsible for
|
||||
* returning a reasonable value: the string '42'.
|
||||
*/
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("myNumber", new MyNumber());
|
||||
actual = jsonObject.toString();
|
||||
JSONObject jsonObject1 = new JSONObject();
|
||||
jsonObject1.put("myNumber", new MyNumber());
|
||||
actual = jsonObject1.toString();
|
||||
expected = "{\"myNumber\":42}";
|
||||
assertEquals("Equal", expected , actual);
|
||||
|
||||
@@ -411,8 +401,8 @@ public class JSONObjectTest {
|
||||
* wrap() inserts the value as a string. That is why 42 comes back
|
||||
* wrapped in quotes.
|
||||
*/
|
||||
jsonObject = new JSONObject(Collections.singletonMap("myNumber", new AtomicInteger(42)));
|
||||
actual = jsonObject.toString();
|
||||
JSONObject jsonObject2 = new JSONObject(Collections.singletonMap("myNumber", new AtomicInteger(42)));
|
||||
actual = jsonObject2.toString();
|
||||
expected = "{\"myNumber\":\"42\"}";
|
||||
assertEquals("Equal", expected , actual);
|
||||
|
||||
@@ -422,9 +412,9 @@ public class JSONObjectTest {
|
||||
* AtomicInteger is recognized as a Number, and converted via
|
||||
* numberToString() into the unquoted string '42'.
|
||||
*/
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("myNumber", new AtomicInteger(42));
|
||||
actual = jsonObject.toString();
|
||||
JSONObject jsonObject3 = new JSONObject();
|
||||
jsonObject3.put("myNumber", new AtomicInteger(42));
|
||||
actual = jsonObject3.toString();
|
||||
expected = "{\"myNumber\":42}";
|
||||
assertEquals("Equal", expected , actual);
|
||||
|
||||
@@ -435,11 +425,11 @@ public class JSONObjectTest {
|
||||
* bean and inserted into a contained JSONObject. It has 2 getters,
|
||||
* for numerator and denominator.
|
||||
*/
|
||||
jsonObject = new JSONObject(Collections.singletonMap("myNumber", new Fraction(4,2)));
|
||||
assertEquals(1, jsonObject.length());
|
||||
assertEquals(2, ((JSONObject)(jsonObject.get("myNumber"))).length());
|
||||
assertEquals("Numerator", BigInteger.valueOf(4) , jsonObject.query("/myNumber/numerator"));
|
||||
assertEquals("Denominator", BigInteger.valueOf(2) , jsonObject.query("/myNumber/denominator"));
|
||||
JSONObject jsonObject4 = new JSONObject(Collections.singletonMap("myNumber", new Fraction(4,2)));
|
||||
assertEquals(1, jsonObject4.length());
|
||||
assertEquals(2, ((JSONObject)(jsonObject4.get("myNumber"))).length());
|
||||
assertEquals("Numerator", BigInteger.valueOf(4) , jsonObject4.query("/myNumber/numerator"));
|
||||
assertEquals("Denominator", BigInteger.valueOf(2) , jsonObject4.query("/myNumber/denominator"));
|
||||
|
||||
/**
|
||||
* JSONObject.put() inserts the Fraction directly into the
|
||||
@@ -449,11 +439,15 @@ public class JSONObjectTest {
|
||||
* BigDecimal sanity check fails, so writeValue() defaults
|
||||
* to returning a safe JSON quoted string. Pretty slick!
|
||||
*/
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("myNumber", new Fraction(4,2));
|
||||
actual = jsonObject.toString();
|
||||
JSONObject jsonObject5 = new JSONObject();
|
||||
jsonObject5.put("myNumber", new Fraction(4,2));
|
||||
actual = jsonObject5.toString();
|
||||
expected = "{\"myNumber\":\"4/2\"}"; // valid JSON, bug fixed
|
||||
assertEquals("Equal", expected , actual);
|
||||
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObject0, jsonObject1, jsonObject2, jsonObject3, jsonObject4, jsonObject5
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -488,6 +482,10 @@ public class JSONObjectTest {
|
||||
assertTrue(
|
||||
"The RAW Collection should give me the same as the Typed Collection",
|
||||
expected.similar(jaInt));
|
||||
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jaRaw, jaObj, jaInt
|
||||
)));
|
||||
}
|
||||
|
||||
|
||||
@@ -531,6 +529,10 @@ public class JSONObjectTest {
|
||||
assertTrue(
|
||||
"The RAW Collection should give me the same as the Typed Collection",
|
||||
expected.similar(jaObjObj));
|
||||
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jaRaw, jaStrObj, jaStrInt, jaStrObj
|
||||
)));
|
||||
}
|
||||
|
||||
|
||||
@@ -553,6 +555,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected 2 top level items", ((Map<?,?>)(JsonPath.read(doc, "$"))).size() == 2);
|
||||
assertTrue("expected 0 key1 items", ((Map<?,?>)(JsonPath.read(doc, "$.key1"))).size() == 0);
|
||||
assertTrue("expected \"key2\":java.lang.Exception","java.lang.Exception".equals(jsonObject.query("/key2")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -580,6 +583,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected \"escapeStringKey\":\"h\be\tllo w\u1234orld!\"", "h\be\tllo w\u1234orld!".equals(jsonObject.query("/escapeStringKey")));
|
||||
assertTrue("expected \"intKey\":42", Long.valueOf("42").equals(jsonObject.query("/intKey")));
|
||||
assertTrue("expected \"doubleKey\":-23.45e67", Double.valueOf("-23.45e67").equals(jsonObject.query("/doubleKey")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -620,6 +624,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected 2 callbacks items", ((List<?>)(JsonPath.read(doc, "$.callbacks"))).size() == 2);
|
||||
assertTrue("expected 0 handler items", ((Map<?,?>)(JsonPath.read(doc, "$.callbacks[0].handler"))).size() == 0);
|
||||
assertTrue("expected 0 callbacks[1] items", ((Map<?,?>)(JsonPath.read(doc, "$.callbacks[1]"))).size() == 0);
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -655,6 +660,7 @@ public class JSONObjectTest {
|
||||
// InterfaceField replaces someFloat property name via user-defined annotation
|
||||
assertTrue("Overridden String field name (InterfaceField) should have been found",
|
||||
jsonObject.has("InterfaceField"));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -705,6 +711,7 @@ public class JSONObjectTest {
|
||||
// property name able was replaced by Getable via user-defined annotation
|
||||
assertTrue("Overridden boolean field name (Getable) should have been found",
|
||||
jsonObject.has("Getable"));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -725,6 +732,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected 2 top level items", ((Map<?,?>)(JsonPath.read(doc, "$"))).size() == 2);
|
||||
assertTrue("expected \"publicString\":\"abc\"", "abc".equals(jsonObject.query("/publicString")));
|
||||
assertTrue("expected \"publicInt\":42", Integer.valueOf(42).equals(jsonObject.query("/publicInt")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -746,6 +754,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected 2 farewells items", ((Map<?,?>)(JsonPath.read(doc, "$.farewells"))).size() == 2);
|
||||
assertTrue("expected \"later\":\"Later, \"", "Later, ".equals(jsonObject.query("/farewells/later")));
|
||||
assertTrue("expected \"world\":\"World!\"", "Alligator!".equals(jsonObject.query("/farewells/gator")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -778,6 +787,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected h\be\tllo w\u1234orld!", "h\be\tllo w\u1234orld!".equals(jsonObject.query("/myArray/3")));
|
||||
assertTrue("expected 42", Integer.valueOf(42).equals(jsonObject.query("/myArray/4")));
|
||||
assertTrue("expected -23.45e7", Double.valueOf(-23.45e7).equals(jsonObject.query("/myArray/5")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -809,6 +819,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected h\be\tllo w\u1234orld!", "h\be\tllo w\u1234orld!".equals(jsonObject.query("/myArray/3")));
|
||||
assertTrue("expected 42", Integer.valueOf(42).equals(jsonObject.query("/myArray/4")));
|
||||
assertTrue("expected -23.45e7", Double.valueOf(-23.45e7).equals(jsonObject.query("/myArray/5")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -944,6 +955,7 @@ public class JSONObjectTest {
|
||||
JSONObject jsonObjectInner = jsonObject.getJSONObject("objectKey");
|
||||
assertTrue("objectKey should be JSONObject",
|
||||
jsonObjectInner.get("myKey").equals("myVal"));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1006,6 +1018,7 @@ public class JSONObjectTest {
|
||||
obj = jsonObject.get( "largeExponent" );
|
||||
assertTrue("largeExponent should evaluate as a BigDecimal",
|
||||
new BigDecimal("-23.45e2327").equals(obj));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1054,6 +1067,7 @@ public class JSONObjectTest {
|
||||
jsonObject.get("floatIdentifier").equals(Double.valueOf(0.1)));
|
||||
assertTrue("doubleIdentifier currently evaluates to double 0.1",
|
||||
jsonObject.get("doubleIdentifier").equals(Double.valueOf(0.1)));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1205,6 +1219,7 @@ public class JSONObjectTest {
|
||||
"JSONObject[\"stringKey\"] is not a JSONObject (class java.lang.String : hello world!).",
|
||||
e.getMessage());
|
||||
}
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1232,6 +1247,7 @@ public class JSONObjectTest {
|
||||
assertTrue("3.0 can still be interpreted as a double",
|
||||
deserialized.getDouble(key30) == 3.0);
|
||||
assertTrue("3.1 remains a double", deserialized.getDouble(key31) == 3.1);
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1247,9 +1263,9 @@ public class JSONObjectTest {
|
||||
* value is stored. This should be fixed.
|
||||
*/
|
||||
BigInteger bigInteger = new BigInteger("123456789012345678901234567890");
|
||||
JSONObject jsonObject = new JSONObject(bigInteger);
|
||||
Object obj = jsonObject.get("lowestSetBit");
|
||||
assertTrue("JSONObject only has 1 value", jsonObject.length() == 1);
|
||||
JSONObject jsonObject0 = new JSONObject(bigInteger);
|
||||
Object obj = jsonObject0.get("lowestSetBit");
|
||||
assertTrue("JSONObject only has 1 value", jsonObject0.length() == 1);
|
||||
assertTrue("JSONObject parses BigInteger as the Integer lowestBitSet",
|
||||
obj instanceof Integer);
|
||||
assertTrue("this bigInteger lowestBitSet happens to be 1",
|
||||
@@ -1262,57 +1278,57 @@ public class JSONObjectTest {
|
||||
*/
|
||||
BigDecimal bigDecimal = new BigDecimal(
|
||||
"123456789012345678901234567890.12345678901234567890123456789");
|
||||
jsonObject = new JSONObject(bigDecimal);
|
||||
assertTrue("large bigDecimal is not stored", jsonObject.isEmpty());
|
||||
JSONObject jsonObject1 = new JSONObject(bigDecimal);
|
||||
assertTrue("large bigDecimal is not stored", jsonObject1.isEmpty());
|
||||
|
||||
/**
|
||||
* JSONObject put(String, Object) method stores and serializes
|
||||
* bigInt and bigDec correctly. Nothing needs to change.
|
||||
*/
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("bigInt", bigInteger);
|
||||
JSONObject jsonObject2 = new JSONObject();
|
||||
jsonObject2.put("bigInt", bigInteger);
|
||||
assertTrue("jsonObject.put() handles bigInt correctly",
|
||||
jsonObject.get("bigInt").equals(bigInteger));
|
||||
jsonObject2.get("bigInt").equals(bigInteger));
|
||||
assertTrue("jsonObject.getBigInteger() handles bigInt correctly",
|
||||
jsonObject.getBigInteger("bigInt").equals(bigInteger));
|
||||
jsonObject2.getBigInteger("bigInt").equals(bigInteger));
|
||||
assertTrue("jsonObject.optBigInteger() handles bigInt correctly",
|
||||
jsonObject.optBigInteger("bigInt", BigInteger.ONE).equals(bigInteger));
|
||||
jsonObject2.optBigInteger("bigInt", BigInteger.ONE).equals(bigInteger));
|
||||
assertTrue("jsonObject serializes bigInt correctly",
|
||||
jsonObject.toString().equals("{\"bigInt\":123456789012345678901234567890}"));
|
||||
jsonObject2.toString().equals("{\"bigInt\":123456789012345678901234567890}"));
|
||||
assertTrue("BigInteger as BigDecimal",
|
||||
jsonObject.getBigDecimal("bigInt").equals(new BigDecimal(bigInteger)));
|
||||
jsonObject2.getBigDecimal("bigInt").equals(new BigDecimal(bigInteger)));
|
||||
|
||||
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("bigDec", bigDecimal);
|
||||
JSONObject jsonObject3 = new JSONObject();
|
||||
jsonObject3.put("bigDec", bigDecimal);
|
||||
assertTrue("jsonObject.put() handles bigDec correctly",
|
||||
jsonObject.get("bigDec").equals(bigDecimal));
|
||||
jsonObject3.get("bigDec").equals(bigDecimal));
|
||||
assertTrue("jsonObject.getBigDecimal() handles bigDec correctly",
|
||||
jsonObject.getBigDecimal("bigDec").equals(bigDecimal));
|
||||
jsonObject3.getBigDecimal("bigDec").equals(bigDecimal));
|
||||
assertTrue("jsonObject.optBigDecimal() handles bigDec correctly",
|
||||
jsonObject.optBigDecimal("bigDec", BigDecimal.ONE).equals(bigDecimal));
|
||||
jsonObject3.optBigDecimal("bigDec", BigDecimal.ONE).equals(bigDecimal));
|
||||
assertTrue("jsonObject serializes bigDec correctly",
|
||||
jsonObject.toString().equals(
|
||||
jsonObject3.toString().equals(
|
||||
"{\"bigDec\":123456789012345678901234567890.12345678901234567890123456789}"));
|
||||
|
||||
assertTrue("BigDecimal as BigInteger",
|
||||
jsonObject.getBigInteger("bigDec").equals(bigDecimal.toBigInteger()));
|
||||
jsonObject3.getBigInteger("bigDec").equals(bigDecimal.toBigInteger()));
|
||||
/**
|
||||
* exercise some exceptions
|
||||
*/
|
||||
try {
|
||||
// bigInt key does not exist
|
||||
jsonObject.getBigDecimal("bigInt");
|
||||
jsonObject3.getBigDecimal("bigInt");
|
||||
fail("expected an exeption");
|
||||
} catch (JSONException ignored) {}
|
||||
obj = jsonObject.optBigDecimal("bigInt", BigDecimal.ONE);
|
||||
obj = jsonObject3.optBigDecimal("bigInt", BigDecimal.ONE);
|
||||
assertTrue("expected BigDecimal", obj.equals(BigDecimal.ONE));
|
||||
jsonObject.put("stringKey", "abc");
|
||||
jsonObject3.put("stringKey", "abc");
|
||||
try {
|
||||
jsonObject.getBigDecimal("stringKey");
|
||||
jsonObject3.getBigDecimal("stringKey");
|
||||
fail("expected an exeption");
|
||||
} catch (JSONException ignored) {}
|
||||
obj = jsonObject.optBigInteger("bigDec", BigInteger.ONE);
|
||||
obj = jsonObject3.optBigInteger("bigDec", BigInteger.ONE);
|
||||
assertTrue("expected BigInteger", obj instanceof BigInteger);
|
||||
assertEquals(bigDecimal.toBigInteger(), obj);
|
||||
|
||||
@@ -1345,79 +1361,79 @@ public class JSONObjectTest {
|
||||
// bigInt map ctor
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
map.put("bigInt", bigInteger);
|
||||
jsonObject = new JSONObject(map);
|
||||
String actualFromMapStr = jsonObject.toString();
|
||||
JSONObject jsonObject4 = new JSONObject(map);
|
||||
String actualFromMapStr = jsonObject4.toString();
|
||||
assertTrue("bigInt in map (or array or bean) is a string",
|
||||
actualFromMapStr.equals(
|
||||
"{\"bigInt\":123456789012345678901234567890}"));
|
||||
// bigInt put
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("bigInt", bigInteger);
|
||||
String actualFromPutStr = jsonObject.toString();
|
||||
JSONObject jsonObject5 = new JSONObject();
|
||||
jsonObject5.put("bigInt", bigInteger);
|
||||
String actualFromPutStr = jsonObject5.toString();
|
||||
assertTrue("bigInt from put is a number",
|
||||
actualFromPutStr.equals(
|
||||
"{\"bigInt\":123456789012345678901234567890}"));
|
||||
// bigDec map ctor
|
||||
map = new HashMap<String, Object>();
|
||||
map.put("bigDec", bigDecimal);
|
||||
jsonObject = new JSONObject(map);
|
||||
actualFromMapStr = jsonObject.toString();
|
||||
JSONObject jsonObject6 = new JSONObject(map);
|
||||
actualFromMapStr = jsonObject6.toString();
|
||||
assertTrue("bigDec in map (or array or bean) is a bigDec",
|
||||
actualFromMapStr.equals(
|
||||
"{\"bigDec\":123456789012345678901234567890.12345678901234567890123456789}"));
|
||||
// bigDec put
|
||||
jsonObject = new JSONObject();
|
||||
jsonObject.put("bigDec", bigDecimal);
|
||||
actualFromPutStr = jsonObject.toString();
|
||||
JSONObject jsonObject7 = new JSONObject();
|
||||
jsonObject7.put("bigDec", bigDecimal);
|
||||
actualFromPutStr = jsonObject7.toString();
|
||||
assertTrue("bigDec from put is a number",
|
||||
actualFromPutStr.equals(
|
||||
"{\"bigDec\":123456789012345678901234567890.12345678901234567890123456789}"));
|
||||
// bigInt,bigDec put
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
jsonArray.put(bigInteger);
|
||||
jsonArray.put(bigDecimal);
|
||||
actualFromPutStr = jsonArray.toString();
|
||||
JSONArray jsonArray0 = new JSONArray();
|
||||
jsonArray0.put(bigInteger);
|
||||
jsonArray0.put(bigDecimal);
|
||||
actualFromPutStr = jsonArray0.toString();
|
||||
assertTrue("bigInt, bigDec from put is a number",
|
||||
actualFromPutStr.equals(
|
||||
"[123456789012345678901234567890,123456789012345678901234567890.12345678901234567890123456789]"));
|
||||
assertTrue("getBigInt is bigInt", jsonArray.getBigInteger(0).equals(bigInteger));
|
||||
assertTrue("getBigDec is bigDec", jsonArray.getBigDecimal(1).equals(bigDecimal));
|
||||
assertTrue("optBigInt is bigInt", jsonArray.optBigInteger(0, BigInteger.ONE).equals(bigInteger));
|
||||
assertTrue("optBigDec is bigDec", jsonArray.optBigDecimal(1, BigDecimal.ONE).equals(bigDecimal));
|
||||
jsonArray.put(Boolean.TRUE);
|
||||
assertTrue("getBigInt is bigInt", jsonArray0.getBigInteger(0).equals(bigInteger));
|
||||
assertTrue("getBigDec is bigDec", jsonArray0.getBigDecimal(1).equals(bigDecimal));
|
||||
assertTrue("optBigInt is bigInt", jsonArray0.optBigInteger(0, BigInteger.ONE).equals(bigInteger));
|
||||
assertTrue("optBigDec is bigDec", jsonArray0.optBigDecimal(1, BigDecimal.ONE).equals(bigDecimal));
|
||||
jsonArray0.put(Boolean.TRUE);
|
||||
try {
|
||||
jsonArray.getBigInteger(2);
|
||||
jsonArray0.getBigInteger(2);
|
||||
fail("should not be able to get big int");
|
||||
} catch (Exception ignored) {}
|
||||
try {
|
||||
jsonArray.getBigDecimal(2);
|
||||
jsonArray0.getBigDecimal(2);
|
||||
fail("should not be able to get big dec");
|
||||
} catch (Exception ignored) {}
|
||||
assertTrue("optBigInt is default", jsonArray.optBigInteger(2, BigInteger.ONE).equals(BigInteger.ONE));
|
||||
assertTrue("optBigDec is default", jsonArray.optBigDecimal(2, BigDecimal.ONE).equals(BigDecimal.ONE));
|
||||
assertTrue("optBigInt is default", jsonArray0.optBigInteger(2, BigInteger.ONE).equals(BigInteger.ONE));
|
||||
assertTrue("optBigDec is default", jsonArray0.optBigDecimal(2, BigDecimal.ONE).equals(BigDecimal.ONE));
|
||||
|
||||
// bigInt,bigDec list ctor
|
||||
List<Object> list = new ArrayList<Object>();
|
||||
list.add(bigInteger);
|
||||
list.add(bigDecimal);
|
||||
jsonArray = new JSONArray(list);
|
||||
String actualFromListStr = jsonArray.toString();
|
||||
JSONArray jsonArray1 = new JSONArray(list);
|
||||
String actualFromListStr = jsonArray1.toString();
|
||||
assertTrue("bigInt, bigDec in list is a bigInt, bigDec",
|
||||
actualFromListStr.equals(
|
||||
"[123456789012345678901234567890,123456789012345678901234567890.12345678901234567890123456789]"));
|
||||
// bigInt bean ctor
|
||||
MyBigNumberBean myBigNumberBean = mock(MyBigNumberBean.class);
|
||||
when(myBigNumberBean.getBigInteger()).thenReturn(new BigInteger("123456789012345678901234567890"));
|
||||
jsonObject = new JSONObject(myBigNumberBean);
|
||||
String actualFromBeanStr = jsonObject.toString();
|
||||
JSONObject jsonObject8 = new JSONObject(myBigNumberBean);
|
||||
String actualFromBeanStr = jsonObject8.toString();
|
||||
// can't do a full string compare because mockery adds an extra key/value
|
||||
assertTrue("bigInt from bean ctor is a bigInt",
|
||||
actualFromBeanStr.contains("123456789012345678901234567890"));
|
||||
// bigDec bean ctor
|
||||
myBigNumberBean = mock(MyBigNumberBean.class);
|
||||
when(myBigNumberBean.getBigDecimal()).thenReturn(new BigDecimal("123456789012345678901234567890.12345678901234567890123456789"));
|
||||
jsonObject = new JSONObject(myBigNumberBean);
|
||||
actualFromBeanStr = jsonObject.toString();
|
||||
jsonObject8 = new JSONObject(myBigNumberBean);
|
||||
actualFromBeanStr = jsonObject8.toString();
|
||||
// can't do a full string compare because mockery adds an extra key/value
|
||||
assertTrue("bigDec from bean ctor is a bigDec",
|
||||
actualFromBeanStr.contains("123456789012345678901234567890.12345678901234567890123456789"));
|
||||
@@ -1426,7 +1442,12 @@ public class JSONObjectTest {
|
||||
assertTrue("wrap() returns big num",obj.equals(bigInteger));
|
||||
obj = JSONObject.wrap(bigDecimal);
|
||||
assertTrue("wrap() returns string",obj.equals(bigDecimal));
|
||||
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObject0, jsonObject1, jsonObject2, jsonObject3, jsonObject4,
|
||||
jsonObject5, jsonObject6, jsonObject7, jsonObject8
|
||||
)));
|
||||
Util.checkJSONArrayMaps(jsonArray0, jsonObject0.getMapType());
|
||||
Util.checkJSONArrayMaps(jsonArray1, jsonObject0.getMapType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1438,7 +1459,6 @@ public class JSONObjectTest {
|
||||
*/
|
||||
@Test
|
||||
public void jsonObjectNames() {
|
||||
JSONObject jsonObject;
|
||||
|
||||
// getNames() from null JSONObject
|
||||
assertTrue("null names from null Object",
|
||||
@@ -1449,16 +1469,16 @@ public class JSONObjectTest {
|
||||
null == JSONObject.getNames(new MyJsonString()));
|
||||
|
||||
// getNames from new JSONOjbect
|
||||
jsonObject = new JSONObject();
|
||||
String [] names = JSONObject.getNames(jsonObject);
|
||||
JSONObject jsonObject0 = new JSONObject();
|
||||
String [] names = JSONObject.getNames(jsonObject0);
|
||||
assertTrue("names should be null", names == null);
|
||||
|
||||
|
||||
// getNames() from empty JSONObject
|
||||
String emptyStr = "{}";
|
||||
jsonObject = new JSONObject(emptyStr);
|
||||
JSONObject jsonObject1 = new JSONObject(emptyStr);
|
||||
assertTrue("empty JSONObject should have null names",
|
||||
null == JSONObject.getNames(jsonObject));
|
||||
null == JSONObject.getNames(jsonObject1));
|
||||
|
||||
// getNames() from JSONObject
|
||||
String str =
|
||||
@@ -1467,13 +1487,13 @@ public class JSONObjectTest {
|
||||
"\"falseKey\":false,"+
|
||||
"\"stringKey\":\"hello world!\","+
|
||||
"}";
|
||||
jsonObject = new JSONObject(str);
|
||||
names = JSONObject.getNames(jsonObject);
|
||||
JSONArray jsonArray = new JSONArray(names);
|
||||
JSONObject jsonObject2 = new JSONObject(str);
|
||||
names = JSONObject.getNames(jsonObject2);
|
||||
JSONArray jsonArray0 = new JSONArray(names);
|
||||
|
||||
// validate JSON
|
||||
Object doc = Configuration.defaultConfiguration().jsonProvider()
|
||||
.parse(jsonArray.toString());
|
||||
.parse(jsonArray0.toString());
|
||||
List<?> docList = JsonPath.read(doc, "$");
|
||||
assertTrue("expected 3 items", docList.size() == 3);
|
||||
assertTrue(
|
||||
@@ -1494,9 +1514,9 @@ public class JSONObjectTest {
|
||||
names = JSONObject.getNames(myEnumField);
|
||||
|
||||
// validate JSON
|
||||
jsonArray = new JSONArray(names);
|
||||
JSONArray jsonArray1 = new JSONArray(names);
|
||||
doc = Configuration.defaultConfiguration().jsonProvider()
|
||||
.parse(jsonArray.toString());
|
||||
.parse(jsonArray1.toString());
|
||||
docList = JsonPath.read(doc, "$");
|
||||
assertTrue("expected 3 items", docList.size() == 3);
|
||||
assertTrue(
|
||||
@@ -1518,9 +1538,9 @@ public class JSONObjectTest {
|
||||
names = JSONObject.getNames(myPublicClass);
|
||||
|
||||
// validate JSON
|
||||
jsonArray = new JSONArray(names);
|
||||
JSONArray jsonArray2 = new JSONArray(names);
|
||||
doc = Configuration.defaultConfiguration().jsonProvider()
|
||||
.parse(jsonArray.toString());
|
||||
.parse(jsonArray2.toString());
|
||||
docList = JsonPath.read(doc, "$");
|
||||
assertTrue("expected 2 items", docList.size() == 2);
|
||||
assertTrue(
|
||||
@@ -1529,6 +1549,12 @@ public class JSONObjectTest {
|
||||
assertTrue(
|
||||
"expected to find publicInt",
|
||||
((List<?>) JsonPath.read(doc, "$[?(@=='publicInt')]")).size() == 1);
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObject0, jsonObject1, jsonObject2
|
||||
)));
|
||||
Util.checkJSONArrayMaps(jsonArray0, jsonObject0.getMapType());
|
||||
Util.checkJSONArrayMaps(jsonArray1, jsonObject0.getMapType());
|
||||
Util.checkJSONArrayMaps(jsonArray2, jsonObject0.getMapType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1540,6 +1566,8 @@ public class JSONObjectTest {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
JSONArray jsonArray = jsonObject.names();
|
||||
assertTrue("jsonArray should be null", jsonArray == null);
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
Util.checkJSONArrayMaps(jsonArray, jsonObject.getMapType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1564,6 +1592,8 @@ public class JSONObjectTest {
|
||||
assertTrue("expected to find trueKey", ((List<?>) JsonPath.read(doc, "$[?(@=='trueKey')]")).size() == 1);
|
||||
assertTrue("expected to find falseKey", ((List<?>) JsonPath.read(doc, "$[?(@=='falseKey')]")).size() == 1);
|
||||
assertTrue("expected to find stringKey", ((List<?>) JsonPath.read(doc, "$[?(@=='stringKey')]")).size() == 1);
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
Util.checkJSONArrayMaps(jsonArray, jsonObject.getMapType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1682,7 +1712,9 @@ public class JSONObjectTest {
|
||||
// this.put(key, new Float((Float) value + 1));
|
||||
// Probably it would be better to deprecate the method and remove some day, while convenient processing the "payload" is not
|
||||
// really in the scope of a JSON-library (IMHO.)
|
||||
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObject, inc
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1780,6 +1812,12 @@ public class JSONObjectTest {
|
||||
JSONObject bCompareArrayJsonObject = new JSONObject(bCompareArrayStr);
|
||||
assertTrue("different nested JSONArrays should not be similar",
|
||||
!aCompareArrayJsonObject.similar(bCompareArrayJsonObject));
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObject, expectedJsonObject, aCompareValueJsonObject,
|
||||
aCompareArrayJsonObject, aCompareObjectJsonObject, aCompareArrayJsonObject,
|
||||
bCompareValueJsonObject, bCompareArrayJsonObject, bCompareObjectJsonObject,
|
||||
bCompareArrayJsonObject
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1815,6 +1853,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected myVal2", "myVal2".equals(jsonObject.query("/objectKey/myKey2")));
|
||||
assertTrue("expected myVal3", "myVal3".equals(jsonObject.query("/objectKey/myKey3")));
|
||||
assertTrue("expected myVal4", "myVal4".equals(jsonObject.query("/objectKey/myKey4")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1888,6 +1927,9 @@ public class JSONObjectTest {
|
||||
|
||||
JSONObject jo = new JSONObject().put("TABLE", new JSONObject().put("yhoo", new JSONObject()));
|
||||
assertEquals("toString(2)","{\"TABLE\": {\"yhoo\": {}}}", jo.toString(2));
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObject, jo
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1909,6 +1951,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected 1 top level item", ((Map<?,?>)(JsonPath.read(doc, "$"))).size() == 1);
|
||||
assertTrue("expected 1 key item", ((Map<?,?>)(JsonPath.read(doc, "$.key"))).size() == 1);
|
||||
assertTrue("expected def", "def".equals(jsonObject.query("/key/abc")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1931,6 +1974,7 @@ public class JSONObjectTest {
|
||||
assertTrue("expected 1 top level item", ((Map<?,?>)(JsonPath.read(doc, "$"))).size() == 1);
|
||||
assertTrue("expected 1 key item", ((List<?>)(JsonPath.read(doc, "$.key"))).size() == 1);
|
||||
assertTrue("expected abc", "abc".equals(jsonObject.query("/key/0")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1978,7 +2022,9 @@ public class JSONObjectTest {
|
||||
jsonArray.toString().equals(JSONObject.valueToString(collection)));
|
||||
Integer[] array = { new Integer(1), new Integer(2), new Integer(3) };
|
||||
assertTrue("array valueToString() incorrect",
|
||||
jsonArray.toString().equals(JSONObject.valueToString(array)));
|
||||
jsonArray.toString().equals(JSONObject.valueToString(array)));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
Util.checkJSONArrayMaps(jsonArray, jsonObject.getMapType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2082,6 +2128,11 @@ public class JSONObjectTest {
|
||||
assertTrue("expected val1", "val1".equals(mapJsonObject.query("/key1")));
|
||||
assertTrue("expected val2", "val2".equals(mapJsonObject.query("/key2")));
|
||||
assertTrue("expected val3", "val3".equals(mapJsonObject.query("/key3")));
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObject, mapJsonObject
|
||||
)));
|
||||
Util.checkJSONArrayMaps(jsonArray, jsonObject.getMapType());
|
||||
Util.checkJSONArrayMaps(integerArrayJsonArray, jsonObject.getMapType());
|
||||
}
|
||||
|
||||
|
||||
@@ -2096,6 +2147,7 @@ public class JSONObjectTest {
|
||||
try {
|
||||
JSONObject jo = new JSONObject(source);
|
||||
assertTrue("Expected "+charString+"("+i+") in the JSON Object but did not find it.",charString.equals(jo.getString("key")));
|
||||
Util.checkJSONObjectMaps(jo);
|
||||
} 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'
|
||||
@@ -2395,6 +2447,7 @@ public class JSONObjectTest {
|
||||
assertTrue("jsonObject should be empty", jsonObject.isEmpty());
|
||||
jsonObject.putOnce(null, "");
|
||||
assertTrue("jsonObject should be empty", jsonObject.isEmpty());
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2430,6 +2483,7 @@ public class JSONObjectTest {
|
||||
42l == jsonObject.optNumber("myKey", Long.valueOf(42)).longValue());
|
||||
assertTrue("optString() should return default string",
|
||||
"hi".equals(jsonObject.optString("hiKey", "hi")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2466,6 +2520,7 @@ public class JSONObjectTest {
|
||||
42l == jsonObject.optNumber("myKey", Long.valueOf(42)).longValue());
|
||||
assertTrue("optString() should return default string",
|
||||
"hi".equals(jsonObject.optString("hiKey", "hi")));
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2484,6 +2539,7 @@ public class JSONObjectTest {
|
||||
assertTrue("unexpected optBigDecimal value",jo.optBigDecimal("int",BigDecimal.ZERO).compareTo(new BigDecimal("123"))==0);
|
||||
assertTrue("unexpected optBigDecimal value",jo.optBigDecimal("int",BigDecimal.ZERO).compareTo(new BigDecimal("123"))==0);
|
||||
assertTrue("unexpected optNumber value",jo.optNumber("int",BigInteger.ZERO).longValue()==123l);
|
||||
Util.checkJSONObjectMaps(jo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2518,6 +2574,7 @@ public class JSONObjectTest {
|
||||
assertNotEquals((int)Double.parseDouble("19007199254740993.35481234487103587486413587843213584"), jo.optInt("largeNumberStr"));
|
||||
assertEquals(19007199254740992l, (long)Double.parseDouble("19007199254740993.35481234487103587486413587843213584"));
|
||||
assertEquals(2147483647, (int)Double.parseDouble("19007199254740993.35481234487103587486413587843213584"));
|
||||
Util.checkJSONObjectMaps(jo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2540,6 +2597,7 @@ public class JSONObjectTest {
|
||||
assertNull(jo.optBigDecimal("nullVal", null));
|
||||
assertEquals(jo.optBigDecimal("float", null),jo.getBigDecimal("float"));
|
||||
assertEquals(jo.optBigDecimal("double", null),jo.getBigDecimal("double"));
|
||||
Util.checkJSONObjectMaps(jo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2560,6 +2618,7 @@ public class JSONObjectTest {
|
||||
assertEquals(new BigInteger("1234"),jo.optBigInteger("bigInteger", null));
|
||||
assertEquals(new BigInteger("1234"),jo.optBigInteger("bigDecimal", null));
|
||||
assertNull(jo.optBigDecimal("nullVal", null));
|
||||
Util.checkJSONObjectMaps(jo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2577,8 +2636,9 @@ public class JSONObjectTest {
|
||||
JSONObject jsonObjectPutNull = new JSONObject(str);
|
||||
jsonObjectPutNull.put("myKey", (Object) null);
|
||||
assertTrue("jsonObject should be empty", jsonObjectPutNull.isEmpty());
|
||||
|
||||
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObjectRemove, jsonObjectPutNull
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2663,6 +2723,7 @@ public class JSONObjectTest {
|
||||
} finally {
|
||||
stringWriter.close();
|
||||
}
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2745,7 +2806,7 @@ public class JSONObjectTest {
|
||||
writer.close();
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
|
||||
@@ -2813,6 +2874,7 @@ public class JSONObjectTest {
|
||||
stringWriter.close();
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2855,6 +2917,7 @@ public class JSONObjectTest {
|
||||
JSONObject aJsonObject = new JSONObject(str);
|
||||
assertTrue("Same JSONObject should be equal to itself",
|
||||
aJsonObject.equals(aJsonObject));
|
||||
Util.checkJSONObjectMaps(aJsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2940,6 +3003,9 @@ public class JSONObjectTest {
|
||||
"<key>null</key>".equals(sJONull));
|
||||
String sNull = XML.toString(jsonObjectNull);
|
||||
assertTrue("null should emit an empty string", "".equals(sNull));
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jsonObjectJONull, jsonObjectNull
|
||||
)));
|
||||
}
|
||||
|
||||
@Test(expected = JSONPointerException.class)
|
||||
@@ -3037,6 +3103,7 @@ public class JSONObjectTest {
|
||||
// assert that the new map is mutable
|
||||
assertTrue("Removing a key should succeed", map.remove("key3") != null);
|
||||
assertTrue("Map should have 2 elements", map.size() == 2);
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3061,6 +3128,9 @@ public class JSONObjectTest {
|
||||
// ensure our original jo hasn't changed.
|
||||
assertEquals(0, jo.get("someInt"));
|
||||
assertEquals(null, jo.opt("someString"));
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jo, jo2
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3085,6 +3155,9 @@ public class JSONObjectTest {
|
||||
// ensure our original jo hasn't changed.
|
||||
assertEquals(0, jo.get("someInt"));
|
||||
assertEquals(null, jo.opt("someString"));
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
jo, jo2
|
||||
)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3100,6 +3173,7 @@ public class JSONObjectTest {
|
||||
assertEquals("Expected the getter to only be called once",
|
||||
1, bean.genericGetCounter);
|
||||
assertEquals(0, bean.genericSetCounter);
|
||||
Util.checkJSONObjectMaps(jo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3115,6 +3189,7 @@ public class JSONObjectTest {
|
||||
assertEquals("Expected the getter to only be called once",
|
||||
1, bean.genericGetCounter);
|
||||
assertEquals(0, bean.genericSetCounter);
|
||||
Util.checkJSONObjectMaps(jo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3133,6 +3208,7 @@ public class JSONObjectTest {
|
||||
assertEquals("Expected 1 key to be mapped. Instead found: "+jo.keySet().toString(),
|
||||
1, jo.length());
|
||||
assertNotNull(jo.get("ALL"));
|
||||
Util.checkJSONObjectMaps(jo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3150,6 +3226,8 @@ public class JSONObjectTest {
|
||||
BigDecimal wantedValue = BigDecimal.valueOf(value);
|
||||
|
||||
assertEquals(current, wantedValue);
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
Util.checkJSONArrayMaps(array, jsonObject.getMapType());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3163,6 +3241,7 @@ public class JSONObjectTest {
|
||||
1, jo.length());
|
||||
assertTrue(jo.get("closeable") instanceof JSONObject);
|
||||
assertTrue(jo.getJSONObject("closeable").has("string"));
|
||||
Util.checkJSONObjectMaps(jo);
|
||||
}
|
||||
|
||||
@Test(expected=NullPointerException.class)
|
||||
@@ -3289,9 +3368,12 @@ public class JSONObjectTest {
|
||||
ObjC.setRef(ObjA);
|
||||
ObjB.setRef(ObjA);
|
||||
ObjB.setRef2(ObjA);
|
||||
new JSONObject(ObjC);
|
||||
new JSONObject(ObjB);
|
||||
new JSONObject(ObjA);
|
||||
JSONObject j0 = new JSONObject(ObjC);
|
||||
JSONObject j1 = new JSONObject(ObjB);
|
||||
JSONObject j2 = new JSONObject(ObjA);
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
j0, j1, j2
|
||||
)));
|
||||
}
|
||||
@Test
|
||||
public void testLongRepeatObjectNotRecursive() {
|
||||
@@ -3307,17 +3389,21 @@ public class JSONObjectTest {
|
||||
ObjB.setRef2(ObjD);
|
||||
ObjA.setRef(ObjD);
|
||||
ObjD.setRef(ObjE);
|
||||
new JSONObject(ObjC);
|
||||
new JSONObject(ObjB);
|
||||
new JSONObject(ObjA);
|
||||
new JSONObject(ObjD);
|
||||
new JSONObject(ObjE);
|
||||
JSONObject j0 = new JSONObject(ObjC);
|
||||
JSONObject j1 = new JSONObject(ObjB);
|
||||
JSONObject j2 = new JSONObject(ObjA);
|
||||
JSONObject j3 = new JSONObject(ObjD);
|
||||
JSONObject j4 = new JSONObject(ObjE);
|
||||
Util.checkJSONObjectsMaps(new ArrayList<JSONObject>(Arrays.asList(
|
||||
j0, j1, j2, j3, j4
|
||||
)));
|
||||
}
|
||||
@Test(expected=JSONException.class)
|
||||
public void testRecursiveEquals() {
|
||||
RecursiveBeanEquals a = new RecursiveBeanEquals("same");
|
||||
a.setRef(a);
|
||||
new JSONObject(a);
|
||||
JSONObject j0 = new JSONObject(a);
|
||||
Util.checkJSONObjectMaps(j0);
|
||||
}
|
||||
@Test
|
||||
public void testNotRecursiveEquals() {
|
||||
@@ -3326,7 +3412,8 @@ public class JSONObjectTest {
|
||||
RecursiveBeanEquals c = new RecursiveBeanEquals("same");
|
||||
a.setRef(b);
|
||||
b.setRef(c);
|
||||
new JSONObject(a);
|
||||
JSONObject j0 = new JSONObject(a);
|
||||
Util.checkJSONObjectMaps(j0);
|
||||
}
|
||||
|
||||
|
||||
@@ -3336,6 +3423,7 @@ public class JSONObjectTest {
|
||||
assertTrue("missing expected key 'empty_json_array'", jsonObject.has("empty_json_array"));
|
||||
assertNotNull("'empty_json_array' should be an array", jsonObject.getJSONArray("empty_json_array"));
|
||||
assertEquals("'empty_json_array' should have a length of 0", 0, jsonObject.getJSONArray("empty_json_array").length());
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3351,6 +3439,7 @@ public class JSONObjectTest {
|
||||
jsonObject.clear(); //Clears the JSONObject
|
||||
assertTrue("expected jsonObject.length() == 0", jsonObject.length() == 0); //Check if its length is 0
|
||||
jsonObject.getInt("key1"); //Should throws org.json.JSONException: JSONObject["asd"] not found
|
||||
Util.checkJSONObjectMaps(jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3364,6 +3453,7 @@ public class JSONObjectTest {
|
||||
JSONObject json_input = new JSONObject(input);
|
||||
assertNotNull(json_input);
|
||||
fail("Excepected Exception.");
|
||||
Util.checkJSONObjectMaps(json_input);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3373,7 +3463,7 @@ public class JSONObjectTest {
|
||||
public void issue654IncorrectNestingNoKey1() {
|
||||
JSONObject json_input = new JSONObject("{{\"a\":0}}");
|
||||
assertNotNull(json_input);
|
||||
fail("Excepected Exception.");
|
||||
fail("Expected Exception.");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3398,4 +3488,25 @@ public class JSONObjectTest {
|
||||
assertNotNull(json_input);
|
||||
fail("Excepected Exception.");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIssue682SimilarityOfJSONString() {
|
||||
JSONObject jo1 = new JSONObject()
|
||||
.put("a", new MyJsonString())
|
||||
.put("b", 2);
|
||||
JSONObject jo2 = new JSONObject()
|
||||
.put("a", new MyJsonString())
|
||||
.put("b", 2);
|
||||
assertTrue(jo1.similar(jo2));
|
||||
|
||||
JSONObject jo3 = new JSONObject()
|
||||
.put("a", new JSONString() {
|
||||
@Override
|
||||
public String toJSONString() {
|
||||
return "\"different value\"";
|
||||
}
|
||||
})
|
||||
.put("b", 2);
|
||||
assertFalse(jo1.similar(jo3));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
@@ -78,7 +58,6 @@ public class Util {
|
||||
* or something else.
|
||||
* @param value created by the code to be tested
|
||||
* @param expectedValue created specifically for comparing
|
||||
* @param key key to the jsonObject entry to be compared
|
||||
*/
|
||||
private static void compareActualVsExpectedObjects(Object value,
|
||||
Object expectedValue) {
|
||||
@@ -117,4 +96,106 @@ public class Util {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that all JSONObject maps are the same as the default ctor
|
||||
* @param jsonObjects list of objects to be tested
|
||||
*/
|
||||
public static void checkJSONObjectsMaps(List<JSONObject> jsonObjects) {
|
||||
if (jsonObjects == null || jsonObjects.size() == 0) {
|
||||
return;
|
||||
}
|
||||
Class<? extends Map> mapType = new JSONObject().getMapType();
|
||||
for (JSONObject jsonObject : jsonObjects) {
|
||||
if (jsonObject != null) {
|
||||
assertTrue(mapType == jsonObject.getMapType());
|
||||
checkJSONObjectMaps(jsonObject, mapType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that all JSONObject maps are the same as the default ctor
|
||||
* @param jsonObject the object to be tested
|
||||
*/
|
||||
public static void checkJSONObjectMaps(JSONObject jsonObject) {
|
||||
if (jsonObject != null) {
|
||||
checkJSONObjectMaps(jsonObject, jsonObject.getMapType());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that all JSONObject maps are the same as mapType
|
||||
* @param jsonObject object to be tested
|
||||
* @param mapType mapType to test against
|
||||
*/
|
||||
public static void checkJSONObjectMaps(JSONObject jsonObject, Class<? extends Map> mapType) {
|
||||
if (mapType == null) {
|
||||
mapType = new JSONObject().getMapType();
|
||||
}
|
||||
Set<String> keys = jsonObject.keySet();
|
||||
for (String key : keys) {
|
||||
Object val = jsonObject.get(key);
|
||||
if (val instanceof JSONObject) {
|
||||
JSONObject jsonObjectVal = (JSONObject) val;
|
||||
assertTrue(mapType == ((JSONObject) val).getMapType());
|
||||
checkJSONObjectMaps(jsonObjectVal, mapType);
|
||||
} else if (val instanceof JSONArray) {
|
||||
JSONArray jsonArrayVal = (JSONArray)val;
|
||||
checkJSONArrayMaps(jsonArrayVal, mapType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that all JSONObject maps in the JSONArray object match the default map
|
||||
* @param jsonArrays list of JSONArray objects to be tested
|
||||
*/
|
||||
public static void checkJSONArraysMaps(List<JSONArray> jsonArrays) {
|
||||
if (jsonArrays == null || jsonArrays.size() == 0) {
|
||||
return;
|
||||
}
|
||||
Class<? extends Map> mapType = new JSONObject().getMapType();
|
||||
for (JSONArray jsonArray : jsonArrays) {
|
||||
if (jsonArray != null) {
|
||||
checkJSONArrayMaps(jsonArray, mapType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that all JSONObject maps in the JSONArray object match mapType
|
||||
* @param jsonArray object to be tested
|
||||
* @param mapType map type to be tested against
|
||||
*/
|
||||
public static void checkJSONArrayMaps(JSONArray jsonArray, Class<? extends Map> mapType) {
|
||||
if (jsonArray == null) {
|
||||
return;
|
||||
}
|
||||
if (mapType == null) {
|
||||
mapType = new JSONObject().getMapType();
|
||||
}
|
||||
Iterator<Object> it = jsonArray.iterator();
|
||||
while (it.hasNext()) {
|
||||
Object val = it.next();
|
||||
if (val instanceof JSONObject) {
|
||||
JSONObject jsonObjectVal = (JSONObject)val;
|
||||
checkJSONObjectMaps(jsonObjectVal, mapType);
|
||||
} else if (val instanceof JSONArray) {
|
||||
JSONArray jsonArrayVal = (JSONArray)val;
|
||||
checkJSONArrayMaps(jsonArrayVal, mapType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that all JSONObject maps nested in the JSONArray match
|
||||
* the default mapType
|
||||
* @param jsonArray the object to be tested
|
||||
*/
|
||||
public static void checkJSONArrayMaps(JSONArray jsonArray) {
|
||||
if (jsonArray != null) {
|
||||
checkJSONArrayMaps(jsonArray, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@@ -1,27 +1,7 @@
|
||||
package org.json.junit;
|
||||
|
||||
/*
|
||||
Copyright (c) 2020 JSON.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
The Software shall be used for Good, not Evil.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Public Domain.
|
||||
*/
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
Reference in New Issue
Block a user