// The Lucia project. // Copyright 2026-2026 DSP, inc. All rights reserved. // Authors: // imacat.yang@dsp.im (imacat), 2026/03/05 import { describe, it, expect } from "vitest"; import { sortNumEngZhtw, sortNumEngZhtwForFilter, } from "@/module/sortNumEngZhtw.js"; describe("sortNumEngZhtw", () => { it("sorts numbers in ascending order", () => { expect(sortNumEngZhtw(["3", "1", "2"])).toEqual(["1", "2", "3"]); }); it("places numbers before strings", () => { expect(sortNumEngZhtw(["b", "1", "a"])).toEqual(["1", "a", "b"]); }); it("sorts English strings alphabetically", () => { expect(sortNumEngZhtw(["cherry", "apple", "banana"])).toEqual([ "apple", "banana", "cherry", ]); }); it("sorts mixed numbers and strings", () => { const input = ["banana", "10", "apple", "2"]; const result = sortNumEngZhtw(input); expect(result).toEqual(["2", "10", "apple", "banana"]); }); }); describe("sortNumEngZhtwForFilter", () => { it("returns negative when a < b (numbers)", () => { expect(sortNumEngZhtwForFilter("1", "2")).toBeLessThan(0); }); it("returns positive when a > b (numbers)", () => { expect(sortNumEngZhtwForFilter("10", "2")).toBeGreaterThan(0); }); it("places numbers before strings", () => { expect(sortNumEngZhtwForFilter("1", "a")).toBeLessThan(0); expect(sortNumEngZhtwForFilter("a", "1")).toBeGreaterThan(0); }); it("compares strings using locale", () => { expect(sortNumEngZhtwForFilter("a", "b")).toBeLessThan(0); }); });