/*! * Copyright (c) Microsoft Corporation and contributors. All rights reserved. * Licensed under the MIT License. */ /// import type { LocalReferenceCollection } from "../localReference.js"; import type { MergeTree } from "../mergeTree.js"; import type { MergeBlock } from "../mergeTreeNodes.js"; import { type Perspective } from "../perspective.js"; import type { OperationStamp } from "../stamps.js"; import { ClientTestHelper } from "./clientTestHelper.js"; export declare function loadTextFromFile(filename: string, mergeTree: MergeTree, segLimit?: number): MergeTree; export declare function loadTextFromFileWithMarkers(filename: string, mergeTree: MergeTree, segLimit?: number): MergeTree; export interface MockRemoteClient { perspectiveAt(args: { refSeq: number; }): Perspective; stampAt(args: { seq: number; }): OperationStamp; /** * Short client id for this client. */ id: number; } /** * Creates a "mock remote client" which allows ergonomically generating {@link Perspective}s and {@link OperationStamp}s * for use in tests that interact directly with a {@link MergeTree}. * * Example: * * ```typescript * let seq = 0; * const remoteClient = makeRemoteClient({ clientId: 18 }); * * mergeTree.insertSegments( * 0, * [TextSegment.make("some text")], * remoteClient.perspectiveAt({ refSeq: seq }), * remoteClient.stampAt({ seq: ++seq }), * undefined * ); * ``` */ export declare function makeRemoteClient({ clientId }: { clientId: number; }): MockRemoteClient; export declare function nodeOrdinalsHaveIntegrity(block: MergeBlock): boolean; /** * Returns an object that tallies each delta and maintenance operation observed * for the given 'mergeTree'. */ export declare function countOperations(mergeTree: MergeTree): object; export declare function validatePartialLengths(clientId: number, mergeTree: MergeTree, expectedValues?: { seq: number; len: number; localSeq?: number; }[], minRefSeqForLocalSeq?: Map, mergeBlock?: MergeBlock): void; export declare function validateRefCount(collection?: LocalReferenceCollection): void; /** * Enable stricter partial length assertions inside tests * * Note that these assertions can be expensive, and so should not be enabled in * production code or tests that run through thousands of ops (e.g. the SharedString * fuzz tests). */ export declare function useStrictPartialLengthChecks(): void; interface ObliterateTestArgs { title: string; action: (helper: ClientTestHelper) => void; expectedText: string; } export declare function itCorrectlyObliterates(args: ObliterateTestArgs): Mocha.Test; export declare namespace itCorrectlyObliterates { var skip: (args: ObliterateTestArgs) => Mocha.Test; var only: (args: ObliterateTestArgs) => Mocha.Test; } export {}; //# sourceMappingURL=testUtils.d.ts.map