@fluidframework/id-compressor 2.33.0-333010 → 2.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +5 -2
- package/CHANGELOG.md +4 -0
- package/api-report/id-compressor.legacy.alpha.api.md +10 -10
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/test/appendOnlySortedMap.spec.js.map +1 -1
- package/dist/test/idCompressor.spec.js.map +1 -1
- package/dist/test/idCompressorTestUtilities.d.ts +14 -0
- package/dist/test/idCompressorTestUtilities.d.ts.map +1 -1
- package/dist/test/idCompressorTestUtilities.js +40 -17
- package/dist/test/idCompressorTestUtilities.js.map +1 -1
- package/dist/test/index.d.ts +1 -1
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +2 -1
- package/dist/test/index.js.map +1 -1
- package/dist/test/numericUuid.spec.js.map +1 -1
- package/dist/test/sessionSpaceNormalizer.spec.js.map +1 -1
- package/dist/test/snapshots/summary.spec.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/test/appendOnlySortedMap.spec.js.map +1 -1
- package/lib/test/idCompressor.spec.js.map +1 -1
- package/lib/test/idCompressorTestUtilities.d.ts +14 -0
- package/lib/test/idCompressorTestUtilities.d.ts.map +1 -1
- package/lib/test/idCompressorTestUtilities.js +37 -16
- package/lib/test/idCompressorTestUtilities.js.map +1 -1
- package/lib/test/index.d.ts +1 -1
- package/lib/test/index.d.ts.map +1 -1
- package/lib/test/index.js +1 -1
- package/lib/test/index.js.map +1 -1
- package/lib/test/numericUuid.spec.js.map +1 -1
- package/lib/test/sessionSpaceNormalizer.spec.js.map +1 -1
- package/lib/test/snapshots/summary.spec.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +9 -10
- package/src/packageVersion.ts +1 -1
- package/src/test/idCompressorTestUtilities.ts +41 -18
- package/src/test/index.ts +4 -1
package/.eslintrc.cjs
CHANGED
|
@@ -14,10 +14,13 @@ module.exports = {
|
|
|
14
14
|
overrides: [
|
|
15
15
|
{
|
|
16
16
|
// Rules only for test files
|
|
17
|
-
files: ["*.spec.ts", "src/test
|
|
17
|
+
files: ["*.spec.ts", "src/test/**/*.ts"],
|
|
18
18
|
rules: {
|
|
19
19
|
// Test files are run in node only so additional node libraries can be used.
|
|
20
|
-
"import/no-nodejs-modules": [
|
|
20
|
+
"import/no-nodejs-modules": [
|
|
21
|
+
"error",
|
|
22
|
+
{ allow: ["node:assert", "node:crypto", "node:fs", "node:path"] },
|
|
23
|
+
],
|
|
21
24
|
},
|
|
22
25
|
},
|
|
23
26
|
],
|
package/CHANGELOG.md
CHANGED
|
@@ -4,22 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
```ts
|
|
6
6
|
|
|
7
|
-
// @alpha
|
|
7
|
+
// @alpha @legacy
|
|
8
8
|
export function createIdCompressor(logger?: ITelemetryBaseLogger): IIdCompressor & IIdCompressorCore;
|
|
9
9
|
|
|
10
|
-
// @alpha
|
|
10
|
+
// @alpha @legacy
|
|
11
11
|
export function createIdCompressor(sessionId: SessionId, logger?: ITelemetryBaseLogger): IIdCompressor & IIdCompressorCore;
|
|
12
12
|
|
|
13
|
-
// @alpha
|
|
13
|
+
// @alpha @legacy
|
|
14
14
|
export function createSessionId(): SessionId;
|
|
15
15
|
|
|
16
|
-
// @alpha
|
|
16
|
+
// @alpha @legacy
|
|
17
17
|
export function deserializeIdCompressor(serialized: SerializedIdCompressorWithOngoingSession, logger?: ITelemetryLoggerExt): IIdCompressor & IIdCompressorCore;
|
|
18
18
|
|
|
19
|
-
// @alpha
|
|
19
|
+
// @alpha @legacy
|
|
20
20
|
export function deserializeIdCompressor(serialized: SerializedIdCompressorWithNoSession, newSessionId: SessionId, logger?: ITelemetryLoggerExt): IIdCompressor & IIdCompressorCore;
|
|
21
21
|
|
|
22
|
-
// @alpha
|
|
22
|
+
// @alpha @legacy
|
|
23
23
|
export interface IdCreationRange {
|
|
24
24
|
// (undocumented)
|
|
25
25
|
readonly ids?: {
|
|
@@ -44,7 +44,7 @@ export interface IIdCompressor {
|
|
|
44
44
|
tryRecompress(uncompressed: StableId): SessionSpaceCompressedId | undefined;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
// @alpha
|
|
47
|
+
// @alpha @legacy
|
|
48
48
|
export interface IIdCompressorCore {
|
|
49
49
|
beginGhostSession(ghostSessionId: SessionId, ghostSessionCallback: () => void): void;
|
|
50
50
|
finalizeCreationRange(range: IdCreationRange): void;
|
|
@@ -59,17 +59,17 @@ export type OpSpaceCompressedId = number & {
|
|
|
59
59
|
readonly OpNormalized: "9209432d-a959-4df7-b2ad-767ead4dbcae";
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
// @alpha
|
|
62
|
+
// @alpha @legacy
|
|
63
63
|
export type SerializedIdCompressor = string & {
|
|
64
64
|
readonly _serializedIdCompressor: "8c73c57c-1cf4-4278-8915-6444cb4f6af5";
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
-
// @alpha
|
|
67
|
+
// @alpha @legacy
|
|
68
68
|
export type SerializedIdCompressorWithNoSession = SerializedIdCompressor & {
|
|
69
69
|
readonly _noLocalState: "3aa2e1e8-cc28-4ea7-bc1a-a11dc3f26dfb";
|
|
70
70
|
};
|
|
71
71
|
|
|
72
|
-
// @alpha
|
|
72
|
+
// @alpha @legacy
|
|
73
73
|
export type SerializedIdCompressorWithOngoingSession = SerializedIdCompressor & {
|
|
74
74
|
readonly _hasLocalState: "1281acae-6d14-47e7-bc92-71c8ee0819cb";
|
|
75
75
|
};
|
package/dist/packageVersion.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
|
|
6
6
|
*/
|
|
7
7
|
export declare const pkgName = "@fluidframework/id-compressor";
|
|
8
|
-
export declare const pkgVersion = "2.33.0
|
|
8
|
+
export declare const pkgVersion = "2.33.0";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,kCAAkC,CAAC;AACvD,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,kCAAkC,CAAC;AACvD,eAAO,MAAM,UAAU,WAAW,CAAC"}
|
package/dist/packageVersion.js
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.pkgVersion = exports.pkgName = void 0;
|
|
10
10
|
exports.pkgName = "@fluidframework/id-compressor";
|
|
11
|
-
exports.pkgVersion = "2.33.0
|
|
11
|
+
exports.pkgVersion = "2.33.0";
|
|
12
12
|
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,+BAA+B,CAAC;AAC1C,QAAA,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,+BAA+B,CAAC;AAC1C,QAAA,UAAU,GAAG,QAAQ,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/id-compressor\";\nexport const pkgVersion = \"2.33.0\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appendOnlySortedMap.spec.js","sourceRoot":"","sources":["../../src/test/appendOnlySortedMap.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable no-bitwise */\n\n// eslint-disable-next-line import/no-nodejs-modules\nimport { strict as assert } from \"node:assert\";\n\nimport { AppendOnlySortedMap } from \"../appendOnlySortedMap.js\";\nimport { compareFiniteNumbers } from \"../utilities.js\";\n\nimport { assertNotUndefined } from \"./testCommon.js\";\n\nfunction runAppendOnlyMapTests(mapBuilder: () => AppendOnlySortedMap<number, number>): void {\n\tit(\"detects out-of-order keys\", () => {\n\t\tconst map = mapBuilder();\n\t\tmap.append(0, 0);\n\t\tconst exception = \"Inserted key must be > all others in the map.\";\n\t\tassert.throws(\n\t\t\t() => map.append(-1, 1),\n\t\t\t(e: Error) => e.message === exception,\n\t\t);\n\t\tmap.append(1, 2);\n\t});\n\n\tit(\"can get the min and max keys\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tassert.equal(map.maxKey(), undefined);\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i, i);\n\t\t\tassert.equal(map.maxKey(), i);\n\t\t\tassert.equal(map.minKey(), 0);\n\t\t}\n\t});\n\n\tit(\"can get the first and last pairs\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tassert.equal(map.first(), undefined);\n\t\tassert.equal(map.last(), undefined);\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i, i);\n\t\t\tassert.deepEqual(map.last(), [i, i]);\n\t\t\tassert.deepEqual(map.first(), [0, 0]);\n\t\t}\n\t});\n\n\tit(\"can get values\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i, i);\n\t\t}\n\t\tassert.equal(map.get(-1), undefined);\n\t\tassert.equal(map.get(10), undefined);\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tassert.equal(map.get(i), i);\n\t\t}\n\t});\n\n\tit(\"can get pairs by index\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i * 10, i);\n\t\t}\n\t\tassert.equal(map.getAtIndex(-1), undefined);\n\t\tassert.equal(map.getAtIndex(10), undefined);\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tassert.deepEqual(map.getAtIndex(i), [i * 10, i]);\n\t\t}\n\t});\n\n\tit(\"can get an entry or next lower by key\", () => {\n\t\tfor (const elementCount of [99, 100]) {\n\t\t\tconst map = mapBuilder();\n\t\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\t\tmap.append(i * 2, i * 2);\n\t\t\t}\n\t\t\tassert.equal(map.getPairOrNextLower(-1), undefined);\n\t\t\tfor (let i = 0; i < map.size; i++) {\n\t\t\t\tassert.deepEqual(map.getPairOrNextLower(i * 2), [i * 2, i * 2]);\n\t\t\t\tassert.deepEqual(map.getPairOrNextLower(i * 2 + 1), [i * 2, i * 2]);\n\t\t\t}\n\t\t\tconst maxKey = assertNotUndefined(map.maxKey());\n\t\t\tassert.deepEqual(map.getPairOrNextLower(maxKey + 1), [maxKey, maxKey]);\n\t\t}\n\t});\n\n\tit(\"can get an entry or next higher by key\", () => {\n\t\tfor (const elementCount of [99, 100]) {\n\t\t\tconst map = mapBuilder();\n\t\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\t\tmap.append(i * 2, i * 2);\n\t\t\t}\n\t\t\tconst minKey = assertNotUndefined(map.minKey());\n\t\t\tassert.deepEqual(map.getPairOrNextHigher(minKey - 1), [minKey, minKey]);\n\t\t\tfor (let i = 0; i < map.size - 1; i++) {\n\t\t\t\tassert.deepEqual(map.getPairOrNextHigher(i * 2), [i * 2, i * 2]);\n\t\t\t\tassert.deepEqual(map.getPairOrNextHigher(i * 2 + 1), [i * 2 + 2, i * 2 + 2]);\n\t\t\t}\n\t\t\tassert.equal(map.getPairOrNextHigher(map.size * 2 + 1), undefined);\n\t\t}\n\t});\n\n\tit(\"knows how big it is\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tassert.equal(map.size, i);\n\t\t\tmap.append(i, i);\n\t\t}\n\t\tassert.equal(map.size, elementCount);\n\t});\n\n\tit(\"can enumerate its keys and values\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tconst keys: number[] = [];\n\t\tconst values: number[] = [];\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tconst key = i;\n\t\t\tconst value = i * 2;\n\t\t\tmap.append(key, value);\n\t\t\tkeys.push(key);\n\t\t\tvalues.push(value);\n\t\t}\n\t\tassert.deepEqual([...map.keys()], keys);\n\t\tassert.deepEqual([...map.values()], values);\n\t});\n\n\tit(\"can calculate the indexOf a search element\", () => {\n\t\tconst elements: number[] = [0, 0, 2, 0, 3, 0];\n\t\tconst comparator = (search: number, key: number, value: number): number => {\n\t\t\treturn compareFiniteNumbers(search, key);\n\t\t};\n\t\tassert.equal(AppendOnlySortedMap.keyIndexOf(elements, 0, comparator), 0);\n\t\tassert.equal(AppendOnlySortedMap.keyIndexOf(elements, 2, comparator), 2);\n\t\tassert.equal(AppendOnlySortedMap.keyIndexOf(elements, 3, comparator), 4);\n\t\tassert.equal(\n\t\t\tAppendOnlySortedMap.keyIndexOf(elements, -1, comparator),\n\t\t\t0 ^ AppendOnlySortedMap.failureXor,\n\t\t);\n\t\tassert.equal(\n\t\t\tAppendOnlySortedMap.keyIndexOf(elements, 1, comparator),\n\t\t\t2 ^ AppendOnlySortedMap.failureXor,\n\t\t);\n\t\tassert.equal(\n\t\t\tAppendOnlySortedMap.keyIndexOf(elements, 10, comparator),\n\t\t\t6 ^ AppendOnlySortedMap.failureXor,\n\t\t);\n\t});\n\n\tdescribe(\"can perform range queries\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i * 2, i * 2);\n\t\t}\n\t\tconst maxKey = assertNotUndefined(map.maxKey());\n\n\t\tit(\"on empty ranges\", () => {\n\t\t\tassert.deepEqual([...map.getRange(1, -1)], []);\n\t\t\tassert.deepEqual([...map.getRange(maxKey + 1, maxKey + 1)], []);\n\t\t});\n\n\t\tit(\"on ranges of size 1\", () => {\n\t\t\tassert.deepEqual([...map.getRange(0, 0)], [[0, 0]]);\n\t\t\tassert.deepEqual([...map.getRange(1, 1)], []);\n\t\t\tassert.deepEqual([...map.getRange(-1, -1)], []);\n\t\t});\n\n\t\tit(\"on non-empty ranges\", () => {\n\t\t\tassert.deepEqual([...map.getRange(0, 1)], [[0, 0]]);\n\t\t\tassert.deepEqual(\n\t\t\t\t[...map.getRange(0, 2)],\n\t\t\t\t[\n\t\t\t\t\t[0, 0],\n\t\t\t\t\t[2, 2],\n\t\t\t\t],\n\t\t\t);\n\t\t\tassert.deepEqual(\n\t\t\t\t[...map.getRange(1, 5)],\n\t\t\t\t[\n\t\t\t\t\t[2, 2],\n\t\t\t\t\t[4, 4],\n\t\t\t\t],\n\t\t\t);\n\t\t\tconst allEntries = [...map.entries()];\n\t\t\tassert.deepEqual([...map.getRange(0, maxKey)], allEntries);\n\t\t\tassert.deepEqual([...map.getRange(-maxKey, maxKey)], allEntries);\n\t\t\tassert.deepEqual([...map.getRange(0, 2 * maxKey)], allEntries);\n\t\t\tassert.deepEqual([...map.getRange(-maxKey, 2 * maxKey)], allEntries);\n\t\t});\n\t});\n}\n\ndescribe(\"AppendOnlySortedMap\", () => {\n\trunAppendOnlyMapTests(() => new AppendOnlySortedMap(compareFiniteNumbers));\n});\n"]}
|
|
1
|
+
{"version":3,"file":"appendOnlySortedMap.spec.js","sourceRoot":"","sources":["../../src/test/appendOnlySortedMap.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable no-bitwise */\n\nimport { strict as assert } from \"node:assert\";\n\nimport { AppendOnlySortedMap } from \"../appendOnlySortedMap.js\";\nimport { compareFiniteNumbers } from \"../utilities.js\";\n\nimport { assertNotUndefined } from \"./testCommon.js\";\n\nfunction runAppendOnlyMapTests(mapBuilder: () => AppendOnlySortedMap<number, number>): void {\n\tit(\"detects out-of-order keys\", () => {\n\t\tconst map = mapBuilder();\n\t\tmap.append(0, 0);\n\t\tconst exception = \"Inserted key must be > all others in the map.\";\n\t\tassert.throws(\n\t\t\t() => map.append(-1, 1),\n\t\t\t(e: Error) => e.message === exception,\n\t\t);\n\t\tmap.append(1, 2);\n\t});\n\n\tit(\"can get the min and max keys\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tassert.equal(map.maxKey(), undefined);\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i, i);\n\t\t\tassert.equal(map.maxKey(), i);\n\t\t\tassert.equal(map.minKey(), 0);\n\t\t}\n\t});\n\n\tit(\"can get the first and last pairs\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tassert.equal(map.first(), undefined);\n\t\tassert.equal(map.last(), undefined);\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i, i);\n\t\t\tassert.deepEqual(map.last(), [i, i]);\n\t\t\tassert.deepEqual(map.first(), [0, 0]);\n\t\t}\n\t});\n\n\tit(\"can get values\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i, i);\n\t\t}\n\t\tassert.equal(map.get(-1), undefined);\n\t\tassert.equal(map.get(10), undefined);\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tassert.equal(map.get(i), i);\n\t\t}\n\t});\n\n\tit(\"can get pairs by index\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i * 10, i);\n\t\t}\n\t\tassert.equal(map.getAtIndex(-1), undefined);\n\t\tassert.equal(map.getAtIndex(10), undefined);\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tassert.deepEqual(map.getAtIndex(i), [i * 10, i]);\n\t\t}\n\t});\n\n\tit(\"can get an entry or next lower by key\", () => {\n\t\tfor (const elementCount of [99, 100]) {\n\t\t\tconst map = mapBuilder();\n\t\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\t\tmap.append(i * 2, i * 2);\n\t\t\t}\n\t\t\tassert.equal(map.getPairOrNextLower(-1), undefined);\n\t\t\tfor (let i = 0; i < map.size; i++) {\n\t\t\t\tassert.deepEqual(map.getPairOrNextLower(i * 2), [i * 2, i * 2]);\n\t\t\t\tassert.deepEqual(map.getPairOrNextLower(i * 2 + 1), [i * 2, i * 2]);\n\t\t\t}\n\t\t\tconst maxKey = assertNotUndefined(map.maxKey());\n\t\t\tassert.deepEqual(map.getPairOrNextLower(maxKey + 1), [maxKey, maxKey]);\n\t\t}\n\t});\n\n\tit(\"can get an entry or next higher by key\", () => {\n\t\tfor (const elementCount of [99, 100]) {\n\t\t\tconst map = mapBuilder();\n\t\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\t\tmap.append(i * 2, i * 2);\n\t\t\t}\n\t\t\tconst minKey = assertNotUndefined(map.minKey());\n\t\t\tassert.deepEqual(map.getPairOrNextHigher(minKey - 1), [minKey, minKey]);\n\t\t\tfor (let i = 0; i < map.size - 1; i++) {\n\t\t\t\tassert.deepEqual(map.getPairOrNextHigher(i * 2), [i * 2, i * 2]);\n\t\t\t\tassert.deepEqual(map.getPairOrNextHigher(i * 2 + 1), [i * 2 + 2, i * 2 + 2]);\n\t\t\t}\n\t\t\tassert.equal(map.getPairOrNextHigher(map.size * 2 + 1), undefined);\n\t\t}\n\t});\n\n\tit(\"knows how big it is\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tassert.equal(map.size, i);\n\t\t\tmap.append(i, i);\n\t\t}\n\t\tassert.equal(map.size, elementCount);\n\t});\n\n\tit(\"can enumerate its keys and values\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tconst keys: number[] = [];\n\t\tconst values: number[] = [];\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tconst key = i;\n\t\t\tconst value = i * 2;\n\t\t\tmap.append(key, value);\n\t\t\tkeys.push(key);\n\t\t\tvalues.push(value);\n\t\t}\n\t\tassert.deepEqual([...map.keys()], keys);\n\t\tassert.deepEqual([...map.values()], values);\n\t});\n\n\tit(\"can calculate the indexOf a search element\", () => {\n\t\tconst elements: number[] = [0, 0, 2, 0, 3, 0];\n\t\tconst comparator = (search: number, key: number, value: number): number => {\n\t\t\treturn compareFiniteNumbers(search, key);\n\t\t};\n\t\tassert.equal(AppendOnlySortedMap.keyIndexOf(elements, 0, comparator), 0);\n\t\tassert.equal(AppendOnlySortedMap.keyIndexOf(elements, 2, comparator), 2);\n\t\tassert.equal(AppendOnlySortedMap.keyIndexOf(elements, 3, comparator), 4);\n\t\tassert.equal(\n\t\t\tAppendOnlySortedMap.keyIndexOf(elements, -1, comparator),\n\t\t\t0 ^ AppendOnlySortedMap.failureXor,\n\t\t);\n\t\tassert.equal(\n\t\t\tAppendOnlySortedMap.keyIndexOf(elements, 1, comparator),\n\t\t\t2 ^ AppendOnlySortedMap.failureXor,\n\t\t);\n\t\tassert.equal(\n\t\t\tAppendOnlySortedMap.keyIndexOf(elements, 10, comparator),\n\t\t\t6 ^ AppendOnlySortedMap.failureXor,\n\t\t);\n\t});\n\n\tdescribe(\"can perform range queries\", () => {\n\t\tconst map = mapBuilder();\n\t\tconst elementCount = 10;\n\t\tfor (let i = 0; i < elementCount; i++) {\n\t\t\tmap.append(i * 2, i * 2);\n\t\t}\n\t\tconst maxKey = assertNotUndefined(map.maxKey());\n\n\t\tit(\"on empty ranges\", () => {\n\t\t\tassert.deepEqual([...map.getRange(1, -1)], []);\n\t\t\tassert.deepEqual([...map.getRange(maxKey + 1, maxKey + 1)], []);\n\t\t});\n\n\t\tit(\"on ranges of size 1\", () => {\n\t\t\tassert.deepEqual([...map.getRange(0, 0)], [[0, 0]]);\n\t\t\tassert.deepEqual([...map.getRange(1, 1)], []);\n\t\t\tassert.deepEqual([...map.getRange(-1, -1)], []);\n\t\t});\n\n\t\tit(\"on non-empty ranges\", () => {\n\t\t\tassert.deepEqual([...map.getRange(0, 1)], [[0, 0]]);\n\t\t\tassert.deepEqual(\n\t\t\t\t[...map.getRange(0, 2)],\n\t\t\t\t[\n\t\t\t\t\t[0, 0],\n\t\t\t\t\t[2, 2],\n\t\t\t\t],\n\t\t\t);\n\t\t\tassert.deepEqual(\n\t\t\t\t[...map.getRange(1, 5)],\n\t\t\t\t[\n\t\t\t\t\t[2, 2],\n\t\t\t\t\t[4, 4],\n\t\t\t\t],\n\t\t\t);\n\t\t\tconst allEntries = [...map.entries()];\n\t\t\tassert.deepEqual([...map.getRange(0, maxKey)], allEntries);\n\t\t\tassert.deepEqual([...map.getRange(-maxKey, maxKey)], allEntries);\n\t\t\tassert.deepEqual([...map.getRange(0, 2 * maxKey)], allEntries);\n\t\t\tassert.deepEqual([...map.getRange(-maxKey, 2 * maxKey)], allEntries);\n\t\t});\n\t});\n}\n\ndescribe(\"AppendOnlySortedMap\", () => {\n\trunAppendOnlyMapTests(() => new AppendOnlySortedMap(compareFiniteNumbers));\n});\n"]}
|