//@ skip if $hostOS == "windows"
description("This test checks the behavior of String.prototype.localeCompare as described in the ECMAScript Internationalization API Specification (ECMA-402 2.0).");

shouldBe("String.prototype.localeCompare.length", "1");
shouldBeFalse("Object.getOwnPropertyDescriptor(String.prototype, 'localeCompare').enumerable");
shouldBeTrue("Object.getOwnPropertyDescriptor(String.prototype, 'localeCompare').configurable");
shouldBeTrue("Object.getOwnPropertyDescriptor(String.prototype, 'localeCompare').writable");

// Test RequireObjectCoercible.
shouldThrow("String.prototype.localeCompare.call()", "'TypeError: String.prototype.localeCompare requires that |this| not be null or undefined'");
shouldThrow("String.prototype.localeCompare.call(undefined)", "'TypeError: String.prototype.localeCompare requires that |this| not be null or undefined'");
shouldThrow("String.prototype.localeCompare.call(null)", "'TypeError: String.prototype.localeCompare requires that |this| not be null or undefined'");
shouldNotThrow("String.prototype.localeCompare.call({}, '')");
shouldNotThrow("String.prototype.localeCompare.call([], '')");
shouldNotThrow("String.prototype.localeCompare.call(NaN, '')");
shouldNotThrow("String.prototype.localeCompare.call(5, '')");
shouldNotThrow("String.prototype.localeCompare.call('', '')");
shouldNotThrow("String.prototype.localeCompare.call(() => {}, '')");

// Test toString fails.
shouldThrow("''.localeCompare.call({ toString() { throw 'thisFail' } }, '')", "'thisFail'");
shouldThrow("''.localeCompare({ toString() { throw 'thatFail' } })", "'thatFail'");
shouldNotThrow("''.localeCompare()");
shouldNotThrow("''.localeCompare(null)");

// Basic support.
shouldBeTrue('"a".localeCompare("aa") < 0');
shouldBeTrue('"a".localeCompare("b") < 0');

shouldBeTrue('"a".localeCompare("a") === 0');
shouldBeTrue('"a\u0308\u0323".localeCompare("a\u0323\u0308") === 0');

shouldBeTrue('"aa".localeCompare("a") > 0');
shouldBeTrue('"b".localeCompare("a") > 0');

// Uses Intl.Collator.
shouldThrow("'a'.localeCompare('b', '$')", "'RangeError: invalid language tag: $'");
shouldThrow("'a'.localeCompare('b', 'en', {usage: 'Sort'})", '\'RangeError: usage must be either "sort" or "search"\'');

shouldBe("'ä'.localeCompare('z', 'en')", "-1");
shouldBe("'ä'.localeCompare('z', 'sv')", "1");

shouldBe("'a'.localeCompare('b', 'en', { sensitivity:'base' })", "-1");
shouldBe("'a'.localeCompare('ä', 'en', { sensitivity:'base' })", "0");
shouldBe("'a'.localeCompare('A', 'en', { sensitivity:'base' })", "0");
shouldBe("'a'.localeCompare('ⓐ', 'en', { sensitivity:'base' })", "0");

shouldBe("'a'.localeCompare('b', 'en', { sensitivity:'accent' })", "-1");
shouldBe("'a'.localeCompare('ä', 'en', { sensitivity:'accent' })", "-1");
shouldBe("'a'.localeCompare('A', 'en', { sensitivity:'accent' })", "0");
shouldBe("'a'.localeCompare('ⓐ', 'en', { sensitivity:'accent' })", "0");

shouldBe("'a'.localeCompare('b', 'en', { sensitivity:'case' })", "-1");
shouldBe("'a'.localeCompare('ä', 'en', { sensitivity:'case' })", "0");
shouldBe("'a'.localeCompare('A', 'en', { sensitivity:'case' })", "-1");
shouldBe("'a'.localeCompare('ⓐ', 'en', { sensitivity:'case' })", "0");

shouldBe("'a'.localeCompare('b', 'en', { sensitivity:'variant' })", "-1");
shouldBe("'a'.localeCompare('ä', 'en', { sensitivity:'variant' })", "-1");
shouldBe("'a'.localeCompare('A', 'en', { sensitivity:'variant' })", "-1");
shouldBe("'a'.localeCompare('ⓐ', 'en', { sensitivity:'variant' })", "-1");

shouldBe("'1'.localeCompare('2', 'en', { numeric:false })", "-1");
shouldBe("'2'.localeCompare('10', 'en', { numeric:false })", "1");
shouldBe("'01'.localeCompare('1', 'en', { numeric:false })", "-1");
shouldBe("'๑'.localeCompare('๒', 'en', { numeric:false })", "-1");
shouldBe("'๒'.localeCompare('๑๐', 'en', { numeric:false })", "1");
shouldBe("'๐๑'.localeCompare('๑', 'en', { numeric:false })", "-1");

shouldBe("'1'.localeCompare('2', 'en', { numeric:true })", "-1");
shouldBe("'2'.localeCompare('10', 'en', { numeric:true })", "-1");
shouldBe("'01'.localeCompare('1', 'en', { numeric:true })", "0");
shouldBe("'๑'.localeCompare('๒', 'en', { numeric:true })", "-1");
shouldBe("'๒'.localeCompare('๑๐', 'en', { numeric:true })", "-1");
shouldBe("'๐๑'.localeCompare('๑', 'en', { numeric:true })", "0");

