select.js (1775B)
1 // |reftest| skip-if(!this.hasOwnProperty('Intl')) 2 3 // Tests the format function with a diverse set of locales and options. 4 5 var pr; 6 7 pr = new Intl.PluralRules("en-us"); 8 assertEq(pr.select(0), "other"); 9 assertEq(pr.select(0.5), "other"); 10 assertEq(pr.select(1.2), "other"); 11 assertEq(pr.select(1.5), "other"); 12 assertEq(pr.select(1.7), "other"); 13 assertEq(pr.select(-1), "one"); 14 assertEq(pr.select(1), "one"); 15 assertEq(pr.select("1"), "one"); 16 assertEq(pr.select(123456789.123456789), "other"); 17 18 pr = new Intl.PluralRules("de", {type: "cardinal"}); 19 assertEq(pr.select(0), "other"); 20 assertEq(pr.select(0.5), "other"); 21 assertEq(pr.select(1.2), "other"); 22 assertEq(pr.select(1.5), "other"); 23 assertEq(pr.select(1.7), "other"); 24 assertEq(pr.select(-1), "one"); 25 26 pr = new Intl.PluralRules("de", {type: "ordinal"}); 27 assertEq(pr.select(0), "other"); 28 assertEq(pr.select(0.5), "other"); 29 assertEq(pr.select(1.2), "other"); 30 assertEq(pr.select(1.5), "other"); 31 assertEq(pr.select(1.7), "other"); 32 assertEq(pr.select(-1), "other"); 33 34 pr = new Intl.PluralRules("pl", {type: "cardinal"}); 35 assertEq(pr.select(0), "many"); 36 assertEq(pr.select(0.5), "other"); 37 assertEq(pr.select(1), "one"); 38 39 pr = new Intl.PluralRules("pl", {type: "cardinal", maximumFractionDigits: 0}); 40 assertEq(pr.select(1.1), "one"); 41 42 pr = new Intl.PluralRules("pl", {type: "cardinal", maximumFractionDigits: 1}); 43 assertEq(pr.select(1.1), "other"); 44 45 pr = new Intl.PluralRules("en", {type: "cardinal", minimumFractionDigits: 0}); 46 assertEq(pr.select(1), "one"); 47 48 pr = new Intl.PluralRules("en", {type: "cardinal", minimumFractionDigits: 2}); 49 assertEq(pr.select(1), "other"); 50 51 var weirdCases = [ 52 NaN, 53 Infinity, 54 "word", 55 [0,2], 56 {}, 57 ]; 58 59 for (let c of weirdCases) { 60 assertEq(pr.select(c), "other"); 61 }; 62 63 reportCompare(0, 0, 'ok');