# JSON-Java-unit-test Unit tests to validate the JSON-Java GitHub project code
https://github.com/douglascrockford/JSON-java
*These tests are a work in progress. Help from interested developers is welcome.*
More coverage is needed, but more importantly, improvements to test quality is needed.
Test harness: http://junit.org
Coverage: http://www.eclemma.org/
Eclipse is the recommended development environment. Run individual tests or JunitTestSuite using *EclEmma Coverage*, or execute the TestRunner application directly.
Test filenames should consist of the name of the module being tested, with the suffix "Test". For example, Cookie.java is tested by CookieTest.java. When adding a new unit test, don't forget to update JunitTestSuite.java. The fundamental issues with JSON-Java testing are: * JSONObjects are unordered, making simple string comparison ineffective. * Comparisons via **equals()** is not currently supported. Neither JSONArray nor JSONObject overrride hashCode() or equals(), so comparison defaults to the Object equals(), which is not useful. * Access to the JSONArray and JSONObject internal containers for comparison is not currently available. * JSONObject sometimes wraps entries in quotes, other times does not, complicating comparisons. When you start working on a test, add the empty file to the repository and update the readme, so that others will know that test is taken. A unit test has the following stages: | Test phase |Description | |----|----| | No test | No test specifically for this class has been written, or the class contains no executable code. | | In progress | Unit tests have been started for this class. | | Coverage > 90% | Initial goal of 90% coverage has been reached. Test quality may be questionable | | Reasonable test cases | 90% coverage. Functionality and behavior has been confirmed | | Checked against previous unit tests | Historical unit tests have been checked in case something important was missed | | Completed | The unit test is completed | | Test file name | Coverage | Comments | | ------------- | ------------- | ---- | | Total coverage | 88.9% | | | | | | | | CDL.java | 98% | Reasonable test cases. | | Cookie.java | 98.9% | Reasonable test cases. | | CookieList.java |96.5% | Reasonable test cases. | | HTTP.java | 98.7%| Coverage > 90% | | HTTPTokener.java |93.2% | No test | | JSONArray.java |95.9% | Coverage > 90% | | JSONException.java | 26.7% | No test | | JSONML.java | 83.2%| In progress | | JSONObject | 90.9% | Coverage > 90% | | JSONObject.Null | 87.5% | No test | | JSONString.java | | No test | | JSONStringer.java | 93.8%| Coverage > 90% | | JSONTokener.java | 72.1% | In progress | | JSONWriter.java | 88.9% | No test | | Property.java | 94.8% | Coverage > 90% | | XML.java | 85.1% | In progress | | XMLTokener.java| 82.7%| No test | | Files used in test | | ------------- | | JunitTestSuite.java | | MyBean.java | | StringsResourceBundle.java | |TestRunner.java | | Util.java |