1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/services/common/tests/unit/test_utils_sets.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,72 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +"use strict"; 1.8 + 1.9 +Cu.import("resource://services-common/utils.js"); 1.10 + 1.11 +const EMPTY = new Set(); 1.12 +const A = new Set(["a"]); 1.13 +const ABC = new Set(["a", "b", "c"]); 1.14 +const ABCD = new Set(["a", "b", "c", "d"]); 1.15 +const BC = new Set(["b", "c"]); 1.16 +const BCD = new Set(["b", "c", "d"]); 1.17 +const FGH = new Set(["f", "g", "h"]); 1.18 +const BCDFGH = new Set(["b", "c", "d", "f", "g", "h"]); 1.19 + 1.20 +let union = CommonUtils.union; 1.21 +let difference = CommonUtils.difference; 1.22 +let intersection = CommonUtils.intersection; 1.23 +let setEqual = CommonUtils.setEqual; 1.24 + 1.25 +function do_check_setEqual(a, b) { 1.26 + do_check_true(setEqual(a, b)); 1.27 +} 1.28 + 1.29 +function do_check_not_setEqual(a, b) { 1.30 + do_check_false(setEqual(a, b)); 1.31 +} 1.32 + 1.33 +function run_test() { 1.34 + run_next_test(); 1.35 +} 1.36 + 1.37 +add_test(function test_setEqual() { 1.38 + do_check_setEqual(EMPTY, EMPTY); 1.39 + do_check_setEqual(EMPTY, new Set()); 1.40 + do_check_setEqual(A, A); 1.41 + do_check_setEqual(A, new Set(["a"])); 1.42 + do_check_setEqual(new Set(["a"]), A); 1.43 + do_check_not_setEqual(A, EMPTY); 1.44 + do_check_not_setEqual(EMPTY, A); 1.45 + do_check_not_setEqual(ABC, A); 1.46 + run_next_test(); 1.47 +}); 1.48 + 1.49 +add_test(function test_union() { 1.50 + do_check_setEqual(EMPTY, union(EMPTY, EMPTY)); 1.51 + do_check_setEqual(ABC, union(EMPTY, ABC)); 1.52 + do_check_setEqual(ABC, union(ABC, ABC)); 1.53 + do_check_setEqual(ABCD, union(ABC, BCD)); 1.54 + do_check_setEqual(ABCD, union(BCD, ABC)); 1.55 + do_check_setEqual(BCDFGH, union(BCD, FGH)); 1.56 + run_next_test(); 1.57 +}); 1.58 + 1.59 +add_test(function test_difference() { 1.60 + do_check_setEqual(EMPTY, difference(EMPTY, EMPTY)); 1.61 + do_check_setEqual(EMPTY, difference(EMPTY, A)); 1.62 + do_check_setEqual(EMPTY, difference(A, A)); 1.63 + do_check_setEqual(ABC, difference(ABC, EMPTY)); 1.64 + do_check_setEqual(ABC, difference(ABC, FGH)); 1.65 + do_check_setEqual(A, difference(ABC, BCD)); 1.66 + run_next_test(); 1.67 +}); 1.68 + 1.69 +add_test(function test_intersection() { 1.70 + do_check_setEqual(EMPTY, intersection(EMPTY, EMPTY)); 1.71 + do_check_setEqual(EMPTY, intersection(ABC, EMPTY)); 1.72 + do_check_setEqual(EMPTY, intersection(ABC, FGH)); 1.73 + do_check_setEqual(BC, intersection(ABC, BCD)); 1.74 + run_next_test(); 1.75 +});