@@ -311,6 +311,61 @@ describe("Test Collections static methods", function () {
311
311
jasts_2 . TestNumber . notEquals ( "psp2 hashcode is non-zero" , nameHashable . hashCode ( psp2 ) , 0 ) ;
312
312
jasts_2 . TestNumber . notEquals ( "psp3 hashcode is non-zero" , nameHashable . hashCode ( psp3 ) , 0 ) ;
313
313
} ) ;
314
+ it ( "Dynamic Comparator number field" , function ( ) {
315
+ var nc = Collections_1 . Collections . dynamicComparator ( "sku" ) ;
316
+ jasts_2 . TestNumber . equals ( "same null object equals itself" , nc . compare ( pspnull , pspnull ) , 0 ) ;
317
+ jasts_2 . TestNumber . equals ( "different null object equals itself" , nc . compare ( pspnull , pspalsonull ) , 0 ) ;
318
+ jasts_2 . TestNumber . equals ( "same undefined object equals itself" , nc . compare ( pspundefined , pspundefined ) , 0 ) ;
319
+ jasts_2 . TestNumber . equals ( "different undefined object equals itself" , nc . compare ( pspundefined , pspalsoundefined ) , 0 ) ;
320
+ jasts_2 . TestNumber . equals ( "undefined is less than null" , nc . compare ( pspundefined , pspnull ) , - 1 ) ;
321
+ jasts_2 . TestNumber . equals ( "null is more than undefined" , nc . compare ( pspnull , pspundefined ) , 1 ) ;
322
+ jasts_2 . TestNumber . equals ( "undefined is less than a value" , nc . compare ( pspundefined , psp1 ) , - 1 ) ;
323
+ jasts_2 . TestNumber . equals ( "a value is more than undefined" , nc . compare ( psp1 , pspundefined ) , 1 ) ;
324
+ jasts_2 . TestNumber . equals ( "null is less than a value" , nc . compare ( pspnull , psp1 ) , - 1 ) ;
325
+ jasts_2 . TestNumber . equals ( "a value is more than null" , nc . compare ( psp1 , pspnull ) , 1 ) ;
326
+ jasts_2 . TestNumber . equals ( "same value equals itself" , nc . compare ( psp1 , psp1 ) , 0 ) ;
327
+ jasts_2 . TestNumber . equals ( "different object with same value equals itself" , nc . compare ( psp1 , psp1copy ) , 0 ) ; // sku = 1
328
+ jasts_2 . TestNumber . equals ( "higher values are higher than lower values" , nc . compare ( psp2 , psp1 ) , 1 ) ;
329
+ jasts_2 . TestNumber . equals ( "lower values are lower than higher values" , nc . compare ( psp1 , psp2 ) , - 1 ) ;
330
+ } ) ;
331
+ it ( "Dynamic Comparator string field" , function ( ) {
332
+ var nc = Collections_1 . Collections . dynamicComparator ( "name" ) ;
333
+ jasts_2 . TestNumber . equals ( "same null object equals itself" , nc . compare ( pspnull , pspnull ) , 0 ) ;
334
+ jasts_2 . TestNumber . equals ( "different null object equals itself" , nc . compare ( pspnull , pspalsonull ) , 0 ) ;
335
+ jasts_2 . TestNumber . equals ( "same undefined object equals itself" , nc . compare ( pspundefined , pspundefined ) , 0 ) ;
336
+ jasts_2 . TestNumber . equals ( "different undefined object equals itself" , nc . compare ( pspundefined , pspalsoundefined ) , 0 ) ;
337
+ jasts_2 . TestNumber . equals ( "undefined is less than null" , nc . compare ( pspundefined , pspnull ) , - 1 ) ;
338
+ jasts_2 . TestNumber . equals ( "null is more than undefined" , nc . compare ( pspnull , pspundefined ) , 1 ) ;
339
+ jasts_2 . TestNumber . equals ( "undefined is less than a value" , nc . compare ( pspundefined , psp1 ) , - 1 ) ;
340
+ jasts_2 . TestNumber . equals ( "a value is more than undefined" , nc . compare ( psp1 , pspundefined ) , 1 ) ;
341
+ jasts_2 . TestNumber . equals ( "null is less than a value" , nc . compare ( pspnull , psp1 ) , - 1 ) ;
342
+ jasts_2 . TestNumber . equals ( "a value is more than null" , nc . compare ( psp1 , pspnull ) , 1 ) ;
343
+ jasts_2 . TestNumber . equals ( "same value equals itself" , nc . compare ( psp1 , psp1 ) , 0 ) ;
344
+ jasts_2 . TestNumber . equals ( "different object with same value equals itself" , nc . compare ( psp1 , psp3copy ) , 0 ) ; // name = A
345
+ jasts_2 . TestNumber . equals ( "higher values are higher than lower values" , nc . compare ( psp2 , psp1 ) , 1 ) ;
346
+ jasts_2 . TestNumber . equals ( "lower values are lower than higher values" , nc . compare ( psp1 , psp2 ) , - 1 ) ;
347
+ } ) ;
348
+ it ( "Dynamic Comparator compound number string" , function ( ) {
349
+ var nc = Collections_1 . Collections . dynamicComparator ( "sku" , "name" ) ;
350
+ jasts_2 . TestNumber . equals ( "same null object equals itself" , nc . compare ( pspnull , pspnull ) , 0 ) ;
351
+ jasts_2 . TestNumber . equals ( "different null object equals itself" , nc . compare ( pspnull , pspalsonull ) , 0 ) ;
352
+ jasts_2 . TestNumber . equals ( "same undefined object equals itself" , nc . compare ( pspundefined , pspundefined ) , 0 ) ;
353
+ jasts_2 . TestNumber . equals ( "different undefined object equals itself" , nc . compare ( pspundefined , pspalsoundefined ) , 0 ) ;
354
+ jasts_2 . TestNumber . equals ( "undefined is less than null" , nc . compare ( pspundefined , pspnull ) , - 1 ) ;
355
+ jasts_2 . TestNumber . equals ( "null is more than undefined" , nc . compare ( pspnull , pspundefined ) , 1 ) ;
356
+ jasts_2 . TestNumber . equals ( "undefined is less than a value" , nc . compare ( pspundefined , psp1 ) , - 1 ) ;
357
+ jasts_2 . TestNumber . equals ( "a value is more than undefined" , nc . compare ( psp1 , pspundefined ) , 1 ) ;
358
+ jasts_2 . TestNumber . equals ( "null is less than a value" , nc . compare ( pspnull , psp1 ) , - 1 ) ;
359
+ jasts_2 . TestNumber . equals ( "a value is more than null" , nc . compare ( psp1 , pspnull ) , 1 ) ;
360
+ jasts_2 . TestNumber . equals ( "same value equals itself" , nc . compare ( psp1 , psp1 ) , 0 ) ;
361
+ jasts_2 . TestNumber . equals ( "different value with same keys equals itself" , nc . compare ( psp1 , psp3copy ) , 0 ) ; // Sku 1 Name A
362
+ jasts_2 . TestNumber . equals ( "higher values on first field are higher than lower values" , nc . compare ( psp2 , psp1 ) , 1 ) ;
363
+ jasts_2 . TestNumber . equals ( "lower values on first field are lower than higher values" , nc . compare ( psp1 , psp2 ) , - 1 ) ;
364
+ jasts_2 . TestNumber . equals ( "higher values on first field outweigh second field" , nc . compare ( psp2copy , psp1copy ) , 1 ) ;
365
+ jasts_2 . TestNumber . equals ( "lower values on first field outweigh second field" , nc . compare ( psp1copy , psp2copy ) , - 1 ) ;
366
+ jasts_2 . TestNumber . equals ( "higher values on second field" , nc . compare ( psp1copy , psp3copy ) , 1 ) ;
367
+ jasts_2 . TestNumber . equals ( "lower values on second field" , nc . compare ( psp3copy , psp1copy ) , - 1 ) ;
368
+ } ) ;
314
369
} ) ;
315
370
/*
316
371
* This class is a simple class that the default Collectable
@@ -333,3 +388,5 @@ var psp2copy = new PetStoreProduct(5, "B", "E"); // duplicate product name
333
388
var psp3copy = new PetStoreProduct ( 1 , "A" , "F" ) ; // duplicate sku and product name
334
389
var pspnull = new PetStoreProduct ( null , null , null ) ;
335
390
var pspundefined = new PetStoreProduct ( undefined , undefined , undefined ) ;
391
+ var pspalsonull = new PetStoreProduct ( null , null , null ) ;
392
+ var pspalsoundefined = new PetStoreProduct ( undefined , undefined , undefined ) ;
0 commit comments