diff options
author | Norbert Lindenberg <ecmascript@lindenbergsoftware.com> | 2012-08-26 20:50:24 -0700 |
---|---|---|
committer | Norbert Lindenberg <ecmascript@lindenbergsoftware.com> | 2012-08-26 20:50:24 -0700 |
commit | 2f88b751bd6eb49bc2ca985e89aea86deb67a1de (patch) | |
tree | 79aed459cf2d8f9d26f8e0ece825d5e20b1d4650 /test/suite/intl402/ch13/13.3/13.3.0_6.js | |
parent | 02764dfe42d9b70f574fcad9db5210a0336d6d8f (diff) | |
download | test262-2f88b751bd6eb49bc2ca985e89aea86deb67a1de.tar.gz |
Added new tests for chapters 10 to 13 of the ECMAScript Internationalization API Specification.
--HG--
rename : test/suite/intl402/ch10/10.3/10.3.js => test/suite/intl402/ch10/10.3/10.3_a.js
rename : test/suite/intl402/ch11/11.3/11.3.js => test/suite/intl402/ch11/11.3/11.3_a.js
rename : test/suite/intl402/ch12/12.3/12.3.js => test/suite/intl402/ch12/12.3/12.3_a.js
Diffstat (limited to 'test/suite/intl402/ch13/13.3/13.3.0_6.js')
-rw-r--r-- | test/suite/intl402/ch13/13.3/13.3.0_6.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/test/suite/intl402/ch13/13.3/13.3.0_6.js b/test/suite/intl402/ch13/13.3/13.3.0_6.js new file mode 100644 index 000000000..c97b240b4 --- /dev/null +++ b/test/suite/intl402/ch13/13.3/13.3.0_6.js @@ -0,0 +1,74 @@ +// Copyright 2012 Mozilla Corporation. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * @description Tests that Date.prototype.toLocaleString & Co. throws the same exceptions as Intl.DateTimeFormat. + * @author Norbert Lindenberg + */ + +var functions = { + toLocaleString: Date.prototype.toLocaleString, + toLocaleDateString: Date.prototype.toLocaleDateString, + toLocaleTimeString: Date.prototype.toLocaleTimeString +}; +var locales = [null, [NaN], ["i"], ["de_DE"]]; +var options = [ + {localeMatcher: null}, + {timeZone: "invalid"}, + {hour: "long"}, + {formatMatcher: "invalid"} +]; + +Object.getOwnPropertyNames(functions).forEach(function (p) { + var f = functions[p]; + locales.forEach(function (locales) { + var referenceError, error; + try { + var format = new Intl.DateTimeFormat(locales); + } catch (e) { + referenceError = e; + } + if (referenceError === undefined) { + $ERROR("Internal error: Expected exception was not thrown by Intl.DateTimeFormat for locales " + locales + "."); + } + + try { + var result = f.call(new Date(), locales); + } catch (e) { + error = e; + } + if (error === undefined) { + $ERROR("Date.prototype." + p + " didn't throw exception for locales " + locales + "."); + } else if (error.name !== referenceError.name) { + $ERROR("Date.prototype." + p + " threw exception " + error.name + + " for locales " + locales + "; expected " + referenceError.name + "."); + } + }); + + options.forEach(function (options) { + var referenceError, error; + try { + var format = new Intl.DateTimeFormat([], options); + } catch (e) { + referenceError = e; + } + if (referenceError === undefined) { + $ERROR("Internal error: Expected exception was not thrown by Intl.DateTimeFormat for options " + + JSON.stringify(options) + "."); + } + + try { + var result = f.call(new Date(), [], options); + } catch (e) { + error = e; + } + if (error === undefined) { + $ERROR("Date.prototype." + p + " didn't throw exception for options " + + JSON.stringify(options) + "."); + } else if (error.name !== referenceError.name) { + $ERROR("Date.prototype." + p + " threw exception " + error.name + + " for options " + JSON.stringify(options) + "; expected " + referenceError.name + "."); + } + }); +}); + |