| This test checks the behavior of Intl.PluralRules as described in the ECMAScript Internationalization API Specification. |
| |
| On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". |
| |
| |
| PASS Intl.PluralRules is an instance of Function |
| PASS Intl.PluralRules() threw exception TypeError: calling PluralRules constructor without new is invalid. |
| PASS Intl.PluralRules.call({}) threw exception TypeError: calling PluralRules constructor without new is invalid. |
| PASS new Intl.PluralRules('$') threw exception RangeError: invalid language tag: $. |
| PASS new Intl.PluralRules('en', null) threw exception TypeError: null is not an object (evaluating 'new Intl.PluralRules('en', null)'). |
| PASS new Intl.PluralRules() is an instance of Intl.PluralRules |
| PASS class DerivedPluralRules extends Intl.PluralRules {};(new DerivedPluralRules) instanceof DerivedPluralRules is true |
| PASS class DerivedPluralRules extends Intl.PluralRules {};(new DerivedPluralRules) instanceof Intl.PluralRules is true |
| PASS class DerivedPluralRules extends Intl.PluralRules {};new DerivedPluralRules('en').select(1) === 'one' is true |
| PASS class DerivedPluralRules extends Intl.PluralRules {};Object.getPrototypeOf(new DerivedPluralRules) === DerivedPluralRules.prototype is true |
| PASS class DerivedPluralRules extends Intl.PluralRules {};Object.getPrototypeOf(Object.getPrototypeOf(new DerivedPluralRules)) === Intl.PluralRules.prototype is true |
| PASS Intl.PluralRules.length is 0 |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules, 'prototype').writable is false |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules, 'prototype').enumerable is false |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules, 'prototype').configurable is false |
| PASS Intl.PluralRules.supportedLocalesOf.length is 1 |
| PASS Intl.PluralRules.supportedLocalesOf() is an instance of Array |
| PASS Intl.PluralRules.supportedLocalesOf.call(null, 'en') is [ 'en' ] |
| PASS Intl.PluralRules.supportedLocalesOf.call({}, 'en') is [ 'en' ] |
| PASS Intl.PluralRules.supportedLocalesOf.call(1, 'en') is [ 'en' ] |
| PASS Intl.PluralRules.supportedLocalesOf(9) is [] |
| PASS Intl.PluralRules.supportedLocalesOf('en') is [ 'en' ] |
| PASS Intl.PluralRules.supportedLocalesOf({ length: 4, 1: 'en', 0: 'es', 3: 'de' }) is [ 'es', 'en', 'de' ] |
| PASS Intl.PluralRules.supportedLocalesOf([ 'en', 'pt', 'en', 'es' ]) is [ 'en', 'pt', 'es' ] |
| PASS Intl.PluralRules.supportedLocalesOf('En-laTn-us-variant2-variant1-1abc-U-ko-tRue-A-aa-aaa-x-RESERVED') is [ 'en-Latn-US-variant2-variant1-1abc-a-aa-aaa-u-ko-true-x-reserved' ] |
| PASS Intl.PluralRules.supportedLocalesOf('no-bok') is [ 'nb' ] |
| PASS Intl.PluralRules.supportedLocalesOf('x-some-thing') is [] |
| PASS Intl.PluralRules.supportedLocalesOf(Object.create(null, { length: { get() { throw Error('a') } } })) threw exception Error: a. |
| PASS Intl.PluralRules.supportedLocalesOf(Object.create(null, { length: { value: 1 }, 0: { get() { throw Error('b') } } })) threw exception Error: b. |
| PASS Intl.PluralRules.supportedLocalesOf([ { toString() { throw Error('c') } } ]) threw exception Error: c. |
| PASS Intl.PluralRules.supportedLocalesOf([ 5 ]) threw exception TypeError: locale value must be a string or object. |
| PASS Intl.PluralRules.supportedLocalesOf('') threw exception RangeError: invalid language tag: . |
| PASS Intl.PluralRules.supportedLocalesOf('a') threw exception RangeError: invalid language tag: a. |
| PASS Intl.PluralRules.supportedLocalesOf('abcdefghij') threw exception RangeError: invalid language tag: abcdefghij. |
| PASS Intl.PluralRules.supportedLocalesOf('#$') threw exception RangeError: invalid language tag: #$. |
| PASS Intl.PluralRules.supportedLocalesOf('en-@-abc') threw exception RangeError: invalid language tag: en-@-abc. |
| PASS Intl.PluralRules.supportedLocalesOf('en-u') threw exception RangeError: invalid language tag: en-u. |
| PASS Intl.PluralRules.supportedLocalesOf('en-u-kn-true-u-ko-true') threw exception RangeError: invalid language tag: en-u-kn-true-u-ko-true. |
| PASS Intl.PluralRules.supportedLocalesOf('en-x') threw exception RangeError: invalid language tag: en-x. |
| PASS Intl.PluralRules.supportedLocalesOf('en-*') threw exception RangeError: invalid language tag: en-*. |
| PASS Intl.PluralRules.supportedLocalesOf('en-') threw exception RangeError: invalid language tag: en-. |
| PASS Intl.PluralRules.supportedLocalesOf('en--US') threw exception RangeError: invalid language tag: en--US. |
| PASS Intl.PluralRules.supportedLocalesOf('de') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('de-DE') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('DE-de') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('cmn') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('cmn-Hans') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('CMN-hANS') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('cmn-hans-cn') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('es-419') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('es-419-u-nu-latn-cu-bob') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('i-klingon') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('cmn-hans-cn-t-ca-u-ca-x-t-u') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('enochian-enochian') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('de-gregory-u-ca-gregory') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('aa-a-foo-x-a-foo-bar') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('x-en-US-12345') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('x-12345-12345-en-US') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('x-en-US-12345-12345') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('x-en-u-foo') did not throw exception. |
| PASS Intl.PluralRules.supportedLocalesOf('x-en-u-foo-u-bar') did not throw exception. |
| PASS Object.getPrototypeOf(Intl.PluralRules.prototype) is Object.prototype |
| PASS Intl.PluralRules.prototype.constructor is Intl.PluralRules |
| PASS Intl.PluralRules.prototype[Symbol.toStringTag] is 'Object' |
| PASS Object.prototype.toString.call(Intl.PluralRules.prototype) is '[object Object]' |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules.prototype, Symbol.toStringTag).writable is false |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules.prototype, Symbol.toStringTag).enumerable is false |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules.prototype, Symbol.toStringTag).configurable is true |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules.prototype, 'select').value is an instance of Function |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules.prototype, 'select').writable is true |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules.prototype, 'select').enumerable is false |
| PASS Object.getOwnPropertyDescriptor(Intl.PluralRules.prototype, 'select').configurable is true |
| PASS new Intl.PluralRules().select === new Intl.PluralRules().select is true |
| PASS Intl.PluralRules.prototype.select.length is 1 |
| PASS Intl.PluralRules.prototype.select.call(1) threw exception TypeError: Intl.PluralRules.prototype.select called on value that's not an object initialized as a PluralRules. |
| PASS Intl.PluralRules.prototype.select.call({}) threw exception TypeError: Intl.PluralRules.prototype.select called on value that's not an object initialized as a PluralRules. |
| PASS defaultPluralRules.select({ valueOf() { throw Error('4') } }) threw exception Error: 4. |
| PASS defaultPluralRules.select(1) is 'one' |
| PASS Intl.PluralRules.prototype.select.call(defaultPluralRules, 1) is 'one' |
| PASS defaultPluralRules.select(0) is 'other' |
| PASS defaultPluralRules.select(-1) is 'one' |
| PASS defaultPluralRules.select(2) is 'other' |
| PASS englishOrdinals.select(0) is 'other' |
| PASS englishOrdinals.select(1) is 'one' |
| PASS englishOrdinals.select(2) is 'two' |
| PASS englishOrdinals.select(3) is 'few' |
| PASS englishOrdinals.select(4) is 'other' |
| PASS englishOrdinals.select(11) is 'other' |
| PASS englishOrdinals.select(12) is 'other' |
| PASS englishOrdinals.select(13) is 'other' |
| PASS englishOrdinals.select(14) is 'other' |
| PASS englishOrdinals.select(21) is 'one' |
| PASS englishOrdinals.select(22) is 'two' |
| PASS englishOrdinals.select(23) is 'few' |
| PASS englishOrdinals.select(24) is 'other' |
| PASS englishOrdinals.select(101) is 'one' |
| PASS englishOrdinals.select(102) is 'two' |
| PASS englishOrdinals.select(103) is 'few' |
| PASS englishOrdinals.select(104) is 'other' |
| PASS arabicCardinals.select(0) is 'zero' |
| PASS arabicCardinals.select(1) is 'one' |
| PASS arabicCardinals.select(2) is 'two' |
| PASS arabicCardinals.select(3) is 'few' |
| PASS arabicCardinals.select(11) is 'many' |
| PASS Intl.PluralRules.prototype.resolvedOptions.length is 0 |
| PASS Intl.PluralRules.prototype.resolvedOptions.call(5) threw exception TypeError: Intl.PluralRules.prototype.resolvedOptions called on value that's not an object initialized as a PluralRules. |
| PASS Intl.PluralRules.prototype.resolvedOptions.call({}) threw exception TypeError: Intl.PluralRules.prototype.resolvedOptions called on value that's not an object initialized as a PluralRules. |
| PASS defaultPluralRules.resolvedOptions() is an instance of Object |
| PASS defaultPluralRules.resolvedOptions() === defaultPluralRules.resolvedOptions() is false |
| PASS defaultPluralRules.resolvedOptions().type is 'cardinal' |
| PASS defaultPluralRules.resolvedOptions().minimumIntegerDigits is 1 |
| PASS defaultPluralRules.resolvedOptions().minimumFractionDigits is 0 |
| PASS defaultPluralRules.resolvedOptions().maximumFractionDigits is 3 |
| PASS defaultPluralRules.resolvedOptions().minimumSignificantDigits is undefined |
| PASS defaultPluralRules.resolvedOptions().maximumSignificantDigits is undefined |
| PASS new Intl.PluralRules('en', { localeMatcher: { toString() { throw 'nope' } } }) threw exception nope. |
| PASS new Intl.PluralRules('en', { localeMatcher:'bad' }) threw exception RangeError: localeMatcher must be either "lookup" or "best fit". |
| PASS new Intl.PluralRules('en', { localeMatcher:'lookup' }) did not throw exception. |
| PASS new Intl.PluralRules('en', { localeMatcher:'best fit' }) did not throw exception. |
| PASS new Intl.PluralRules('en', {type: 'cardinal'}).resolvedOptions().type is 'cardinal' |
| PASS new Intl.PluralRules('en', {type: 'ordinal'}).resolvedOptions().type is 'ordinal' |
| PASS new Intl.PluralRules('en', {type: 'bad'}) threw exception RangeError: type must be "cardinal" or "ordinal". |
| PASS new Intl.PluralRules('en', {type: { toString() { throw 'badtype' } }}) threw exception badtype. |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: 1}).resolvedOptions().minimumIntegerDigits is 1 |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: '2'}).resolvedOptions().minimumIntegerDigits is 2 |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: {valueOf() { return 3; }}}).resolvedOptions().minimumIntegerDigits is 3 |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: 4.9}).resolvedOptions().minimumIntegerDigits is 4 |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: 21}).resolvedOptions().minimumIntegerDigits is 21 |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: 0}) threw exception RangeError: minimumIntegerDigits is out of range. |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: 22}) threw exception RangeError: minimumIntegerDigits is out of range. |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: 0.9}) threw exception RangeError: minimumIntegerDigits is out of range. |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: 21.1}) threw exception RangeError: minimumIntegerDigits is out of range. |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: NaN}) threw exception RangeError: minimumIntegerDigits is out of range. |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: Infinity}) threw exception RangeError: minimumIntegerDigits is out of range. |
| PASS new Intl.PluralRules('en', { get minimumIntegerDigits() { throw 42; } }) threw exception 42. |
| PASS new Intl.PluralRules('en', {minimumIntegerDigits: {valueOf() { throw 42; }}}) threw exception 42. |
| PASS new Intl.PluralRules('en', {minimumFractionDigits: 0}).resolvedOptions().minimumFractionDigits is 0 |
| PASS new Intl.PluralRules('en', {minimumFractionDigits: 0}).resolvedOptions().maximumFractionDigits is 3 |
| PASS new Intl.PluralRules('en', {minimumFractionDigits: 6}).resolvedOptions().minimumFractionDigits is 6 |
| PASS new Intl.PluralRules('en', {minimumFractionDigits: 6}).resolvedOptions().maximumFractionDigits is 6 |
| PASS new Intl.PluralRules('en', {minimumFractionDigits: -1}) threw exception RangeError: minimumFractionDigits is out of range. |
| PASS new Intl.PluralRules('en', {minimumFractionDigits: 21}) threw exception RangeError: minimumFractionDigits is out of range. |
| PASS new Intl.PluralRules('en', {maximumFractionDigits: 6}).resolvedOptions().maximumFractionDigits is 6 |
| PASS new Intl.PluralRules('en', {minimumFractionDigits: 7, maximumFractionDigits: 6}) threw exception RangeError: maximumFractionDigits is out of range. |
| PASS new Intl.PluralRules('en', {maximumFractionDigits: -1}) threw exception RangeError: maximumFractionDigits is out of range. |
| PASS new Intl.PluralRules('en', {maximumFractionDigits: 21}) threw exception RangeError: maximumFractionDigits is out of range. |
| PASS new Intl.PluralRules('en', {minimumSignificantDigits: 6}).resolvedOptions().minimumSignificantDigits is 6 |
| PASS new Intl.PluralRules('en', {minimumSignificantDigits: 6}).resolvedOptions().maximumSignificantDigits is 21 |
| PASS new Intl.PluralRules('en', {minimumSignificantDigits: 0}) threw exception RangeError: minimumSignificantDigits is out of range. |
| PASS new Intl.PluralRules('en', {minimumSignificantDigits: 22}) threw exception RangeError: minimumSignificantDigits is out of range. |
| PASS new Intl.PluralRules('en', {maximumSignificantDigits: 6}).resolvedOptions().minimumSignificantDigits is 1 |
| PASS new Intl.PluralRules('en', {maximumSignificantDigits: 6}).resolvedOptions().maximumSignificantDigits is 6 |
| PASS new Intl.PluralRules('en', {minimumSignificantDigits: 7, maximumSignificantDigits: 6}) threw exception RangeError: maximumSignificantDigits is out of range. |
| PASS new Intl.PluralRules('en', {maximumSignificantDigits: 0}) threw exception RangeError: maximumSignificantDigits is out of range. |
| PASS new Intl.PluralRules('en', {maximumSignificantDigits: 22}) threw exception RangeError: maximumSignificantDigits is out of range. |
| PASS new Intl.PluralRules('en', {maximumFractionDigits: 0}).select(1.4) is 'one' |
| PASS new Intl.PluralRules('en', {maximumSignificantDigits: 1}).select(1.4) is 'one' |
| PASS new Intl.PluralRules('en', {type: 'ordinal', maximumSignificantDigits: 2}).select(123) is 'other' |
| PASS new Intl.PluralRules('en', {type: 'ordinal', maximumSignificantDigits: 3}).select(123.4) is 'few' |
| PASS successfullyParsed is true |
| |
| TEST COMPLETE |
| |