import { FeatureDetection } from "../../Source/Cesium.js"; import { HilbertOrder } from "../../Source/Cesium.js"; describe("Core/HilbertOrder", function () { /* eslint-disable no-undef */ if (!FeatureDetection.supportsBigInt()) { return; } it("encode2D throws for undefined inputs", function () { expect(function () { return HilbertOrder.encode2D(undefined, 0, 0); }).toThrowDeveloperError(); expect(function () { return HilbertOrder.encode2D(0, undefined, 0); }).toThrowDeveloperError(); expect(function () { return HilbertOrder.encode2D(0, 0, undefined); }).toThrowDeveloperError(); }); it("encode2D throws for invalid level", function () { expect(function () { return HilbertOrder.encode2D(-1, 0, 0); }).toThrowDeveloperError(); expect(function () { return HilbertOrder.encode2D(0, 0, 0); }).toThrowDeveloperError(); }); it("encode2D throws for invalid coordinates", function () { expect(function () { return HilbertOrder.encode2D(1, -1, 0); }).toThrowDeveloperError(); expect(function () { return HilbertOrder.encode2D(0, -1, 0); }).toThrowDeveloperError(); expect(function () { return HilbertOrder.encode2D(-1, -1, 0); }).toThrowDeveloperError(); expect(function () { return HilbertOrder.encode2D(1, 2, 0); }).toThrowDeveloperError(); expect(function () { return HilbertOrder.encode2D(1, 0, 2); }).toThrowDeveloperError(); expect(function () { return HilbertOrder.encode2D(1, 2, 2); }).toThrowDeveloperError(); }); it("encode2D works", function () { expect(HilbertOrder.encode2D(1, 0, 0)).toEqual(BigInt(0)); expect(HilbertOrder.encode2D(1, 0, 1)).toEqual(BigInt(1)); expect(HilbertOrder.encode2D(1, 1, 1)).toEqual(BigInt(2)); expect(HilbertOrder.encode2D(1, 1, 0)).toEqual(BigInt(3)); expect(HilbertOrder.encode2D(2, 0, 0)).toEqual(BigInt(0)); expect(HilbertOrder.encode2D(2, 1, 0)).toEqual(BigInt(1)); expect(HilbertOrder.encode2D(2, 1, 1)).toEqual(BigInt(2)); expect(HilbertOrder.encode2D(2, 0, 1)).toEqual(BigInt(3)); expect(HilbertOrder.encode2D(2, 0, 2)).toEqual(BigInt(4)); expect(HilbertOrder.encode2D(2, 0, 3)).toEqual(BigInt(5)); expect(HilbertOrder.encode2D(2, 1, 3)).toEqual(BigInt(6)); expect(HilbertOrder.encode2D(2, 1, 2)).toEqual(BigInt(7)); expect(HilbertOrder.encode2D(2, 2, 2)).toEqual(BigInt(8)); expect(HilbertOrder.encode2D(2, 2, 3)).toEqual(BigInt(9)); expect(HilbertOrder.encode2D(2, 3, 3)).toEqual(BigInt(10)); expect(HilbertOrder.encode2D(2, 3, 2)).toEqual(BigInt(11)); expect(HilbertOrder.encode2D(2, 3, 1)).toEqual(BigInt(12)); expect(HilbertOrder.encode2D(2, 2, 1)).toEqual(BigInt(13)); expect(HilbertOrder.encode2D(2, 2, 0)).toEqual(BigInt(14)); expect(HilbertOrder.encode2D(2, 3, 0)).toEqual(BigInt(15)); }); it("decode2D throws for invalid level", function () { expect(function () { return HilbertOrder.decode2D(-1, BigInt(0)); }).toThrowDeveloperError(); expect(function () { return HilbertOrder.decode2D(0, BigInt(0)); }).toThrowDeveloperError(); }); it("decode2D throws for invalid index", function () { expect(function () { return HilbertOrder.decode2D(1, BigInt(4)); }).toThrowDeveloperError(); }); it("decode2D works", function () { expect(HilbertOrder.decode2D(1, BigInt(0))).toEqual([0, 0]); expect(HilbertOrder.decode2D(1, BigInt(1))).toEqual([0, 1]); expect(HilbertOrder.decode2D(1, BigInt(2))).toEqual([1, 1]); expect(HilbertOrder.decode2D(1, BigInt(3))).toEqual([1, 0]); expect(HilbertOrder.decode2D(2, BigInt(0))).toEqual([0, 0]); expect(HilbertOrder.decode2D(2, BigInt(1))).toEqual([1, 0]); expect(HilbertOrder.decode2D(2, BigInt(2))).toEqual([1, 1]); expect(HilbertOrder.decode2D(2, BigInt(3))).toEqual([0, 1]); expect(HilbertOrder.decode2D(2, BigInt(4))).toEqual([0, 2]); expect(HilbertOrder.decode2D(2, BigInt(5))).toEqual([0, 3]); expect(HilbertOrder.decode2D(2, BigInt(6))).toEqual([1, 3]); expect(HilbertOrder.decode2D(2, BigInt(7))).toEqual([1, 2]); expect(HilbertOrder.decode2D(2, BigInt(8))).toEqual([2, 2]); expect(HilbertOrder.decode2D(2, BigInt(9))).toEqual([2, 3]); expect(HilbertOrder.decode2D(2, BigInt(10))).toEqual([3, 3]); expect(HilbertOrder.decode2D(2, BigInt(11))).toEqual([3, 2]); expect(HilbertOrder.decode2D(2, BigInt(12))).toEqual([3, 1]); expect(HilbertOrder.decode2D(2, BigInt(13))).toEqual([2, 1]); expect(HilbertOrder.decode2D(2, BigInt(14))).toEqual([2, 0]); expect(HilbertOrder.decode2D(2, BigInt(15))).toEqual([3, 0]); }); });