@@ -29,6 +29,8 @@ a copy of this software and associated documentation files (the
2929
3030package edu .illinois .nondex .core ;
3131
32+ import java .util .Arrays ;
33+
3234import edu .illinois .nondex .shuffling .ControlNondeterminism ;
3335
3436import org .junit .Assert ;
@@ -56,16 +58,25 @@ protected void assertParameterized(T ds, Object derived, String str) {
5658 }
5759 }
5860
59- protected void assertEqualstUnordered (String msg , String expected , String actual ) {
60- Assert .assertEquals (msg + ": " + expected + " =/= " + actual , expected .length (), actual .length ());
61- String trimmed = expected .substring (1 , expected .length () - 1 );
61+ private String [] formatString (String msg ) {
62+ String trimmed = msg .substring (1 , msg .length () - 1 );
6263 String [] elems = trimmed .split ("," );
63- // TODO(gyori): fix and make this more robust. It does not check duplicates, substrings, etc.
6464 for (int i = 0 ; i < elems .length ; i ++) {
6565 elems [i ] = elems [i ].trim ();
66- Assert .assertTrue (msg + ": " + trimmed + " =/= " + actual , actual .contains (elems [i ]));
6766 }
67+ return elems ;
68+ }
6869
70+ protected void assertEqualstUnordered (String msg , String expected , String actual ) {
71+ String [] actualTokenized = this .formatString (actual );
72+ String [] expectedTokenized = this .formatString (expected );
6973
74+ Arrays .sort (actualTokenized );
75+ Arrays .sort (expectedTokenized );
76+ if (Arrays .equals (actualTokenized , expectedTokenized )) {
77+ Assert .assertTrue (msg + ": " + expectedTokenized + "=/= " + actualTokenized , true );
78+ } else {
79+ Assert .fail (msg + ": " + expectedTokenized + "=/= " + actualTokenized );
80+ }
7081 }
7182}
0 commit comments