@ -1,4 +1,4 @@
import { typedCompare} from 'app/common/SortFunc' ;
import { emptyCompare, typedCompare} from 'app/common/SortFunc' ;
import { assert } from 'chai' ;
import { format } from 'util' ;
@ -26,4 +26,43 @@ describe('SortFunc', function() {
}
}
} ) ;
it ( 'typedCompare should treat empty values as equal' , function ( ) {
assert . equal ( typedCompare ( null , null ) , 0 ) ;
assert . equal ( typedCompare ( '' , '' ) , 0 ) ;
} ) ;
describe ( 'emptyCompare' , function ( ) {
it ( 'should work correctly ' , function ( ) {
const comparator = emptyCompare ( typedCompare ) ;
assert . equal ( comparator ( null , null ) , 0 ) ;
assert . equal ( comparator ( '' , '' ) , 0 ) ;
assert . equal ( comparator ( null , 0 ) , 1 ) ;
assert . equal ( comparator ( null , - 1 ) , 1 ) ;
assert . equal ( comparator ( null , 1 ) , 1 ) ;
assert . equal ( comparator ( null , 'a' ) , 1 ) ;
assert . equal ( comparator ( null , 'z' ) , 1 ) ;
assert . equal ( comparator ( 0 , null ) , - 1 ) ;
assert . equal ( comparator ( - 1 , null ) , - 1 ) ;
assert . equal ( comparator ( 1 , null ) , - 1 ) ;
assert . equal ( comparator ( 'a' , null ) , - 1 ) ;
assert . equal ( comparator ( 'z' , null ) , - 1 ) ;
} ) ;
it ( 'should keep sorting order consistent amongst empty values' , function ( ) {
// values1 and values2 have same values but in different order. Sorting them with emptyCompare
// function should yield same results.
const values1 = [ '' , null , undefined , 2 , 3 , 4 ] ;
const values2 = [ undefined , null , '' , 2 , 3 , 4 ] ;
const comparator = emptyCompare ( typedCompare ) ;
values1 . sort ( comparator ) ;
values2 . sort ( comparator ) ;
assert . deepEqual ( values1 , values2 ) ;
} ) ;
} ) ;
} ) ;