Added more unit tests for the MDLV2000Writer - including corner cases such as multiline RGPs, atom aliases, truncated atom aliases and pseudo atoms with null labels. The MDLV2000Writer can now handle all of these cases correctly.

Change-Id: I3d134d23fc6252d7425fa2a8c50fb308d058ec7d
Signed-off-by: Stephan Beisken <beisken@ebi.ac.uk>
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
Proper modules (wasn't this fixed earlier already??)

Change-Id: I5598c9f4b68699081958e257e3062affe820f40b
Corrected comparator in InvPair sorting. The current comparison was in violation of the comparable contract which was throwing an IllegalArgumentException on JRE 7.

Change-Id: I5d3753a51afcb38585f2f17dac0c769c564ebac8
Signed-off-by: maclean <gilleain.torrance@gmail.com>
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
Generified comparators, removing redundant casts

Change-Id: I266c7c45501f91c04577d572870e858d2140b171
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>

Conflicts:
	src/main/org/openscience/cdk/smiles/SmilesGenerator.java
corrected handling of null value in the TreeNodeComparator. Previous if any node or atom were null the comparator would return '0' which is incorrect. If one is null and the other is not the objects are not equal.

Change-Id: I928a6832ec15cdf5fad67a9dec41bcec51b05db1
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>

Conflicts:
	src/main/org/openscience/cdk/tools/HOSECodeGenerator.java
Corrected canonical label sorting in the SmilesGenerator. This canonical labels are long and thus when the difference between two values is taken the result may be larger then the largest possible integer. This in rare cases cause the value to overflow and thus make the comparator non-transitive.

Change-Id: Ibaba56bb5e559bbf250459689e6b0cc5b286fa03
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>

Conflicts:
	src/main/org/openscience/cdk/smiles/SmilesGenerator.java
Make sure the tests are also run with JUnit4

Change-Id: Ie304f2f8ea4cba60e4f02f899b9ec70c236912aa
OK, simple fix: reset the test graph before each test method call

Change-Id: Ic581d65471ce29e55f9680a3345158970c346f4a
Replaced subtraction based comparison. When the difference (which is a double) is converted to an integer the result may overflow. This overflow can occur in rare cases but would cause the comparator to be non-transitive.

Change-Id: Ic7deea389f63273202288e6d11cc19af94f08d63
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
Replaced subtraction based comparator. This comparator is unlikely to overflow but the safety of using the equalities ensures the proper behaviour of this comparator.

Change-Id: I4cf311f327e53754e189c5734147a245446495ac
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
Corrected null handling on AtomContainer 2D centre comparison. Previous if either container was null the comparator would incorrectly return '0' indicating they were equal. The method was changed to always provide a minimum Point2d when an atom container is null. This will sort all null containers lower then non-null containers.

Change-Id: I49d919c7d0cf0ea17a65e2a031c1a827bdbbbb50
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
Added unit test for methods related to ShortestPathFingerprint. This include unit test for RandomNumber, SimpleAtomComparator, SimpleAtomCanonicalisation.
Move new classes from standard to fingerprint
Removed redundant cast on comparator
Removed new instance creation on RandomNumber generation. This also required the method was non-static.
Made ShortestPathWalker public and optimised/cleaned path iteration.

The clean path creation does not need to check 'contains' as it is a set and thus all entires are unique.
Optimisations to SimpleAtomComparator. The LinkedList isn't needed and has an added cost and was replaced with an ArrayList. The iterator was replaced with a foreach and the redundant counter was removed (the atoms were always added at their original index [they're also being sorted so order is not important]).
Updated documentation and removed SVN tags. Renamed variables to be more concise and reflect their use.
It is not clear why RandomNumber needs to be serialisable but as the RandomGenerator field is not it has been marked as transient so it is not serialised.
Unified spelling of Canonicalisation to the US spelling (z instead of s) and renamed the class name to be the noun instead of verb.