mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:37:34 +00:00
LibJS: Implement get Intl.Collator.prototype.compare
This commit is contained in:
parent
0bdb293262
commit
6558f4ae6b
5 changed files with 84 additions and 7 deletions
|
@ -0,0 +1,41 @@
|
|||
describe("correct behavior", () => {
|
||||
test("length is 2", () => {
|
||||
expect(new Intl.Collator().compare).toHaveLength(2);
|
||||
});
|
||||
|
||||
test("basic functionality", () => {
|
||||
const collator = new Intl.Collator();
|
||||
expect(collator.compare("", "")).toBe(0);
|
||||
expect(collator.compare("a", "a")).toBe(0);
|
||||
expect(collator.compare("6", "6")).toBe(0);
|
||||
|
||||
function compareBoth(a, b) {
|
||||
const aTob = collator.compare(a, b);
|
||||
const bToa = collator.compare(b, a);
|
||||
|
||||
expect(aTob > 0).toBeTrue();
|
||||
expect(aTob).toBe(-bToa);
|
||||
}
|
||||
|
||||
compareBoth("a", "");
|
||||
compareBoth("1", "");
|
||||
compareBoth("a", "A");
|
||||
compareBoth("7", "3");
|
||||
compareBoth("0000", "0");
|
||||
|
||||
expect(collator.compare("undefined")).toBe(0);
|
||||
expect(collator.compare("undefined", undefined)).toBe(0);
|
||||
|
||||
expect(collator.compare("null", null)).toBe(0);
|
||||
expect(collator.compare("null", undefined)).not.toBe(0);
|
||||
expect(collator.compare("null") < 0).toBeTrue();
|
||||
});
|
||||
|
||||
test("UTF-16", () => {
|
||||
const collator = new Intl.Collator();
|
||||
const string = "😀😀";
|
||||
expect(collator.compare(string, "😀😀")).toBe(0);
|
||||
expect(collator.compare(string, "\ud83d") > 0);
|
||||
expect(collator.compare(string, "😀😀s") < 0);
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue