private _popAndAssert()

in packages/bonito-core/src/logging/mock-logger.ts [72:132]


    private _popAndAssert(
        level: LogLevel,
        message: string,
        ...args: unknown[]
    ) {
        if (!this.enableChecking) {
            // If checking is not enabled, this is a no-op
            return;
        }
        const argsMatch = (
            expectedArgs?: unknown[],
            actualArgs?: unknown[]
        ) => {
            // If one is undefined or null, both must be
            if (expectedArgs == null || actualArgs == null) {
                return expectedArgs == null && actualArgs == null;
            }

            // Length mismatch is an automatic failure
            if (expectedArgs.length !== actualArgs.length) {
                return false;
            }

            // Check each arg
            for (let i = 0; i < expectedArgs.length; i++) {
                const expected = expectedArgs[i];
                const actual = actualArgs[i];
                if (expected instanceof Error) {
                    if (String(expected) !== String(actual)) {
                        return false;
                    }
                } else {
                    if (expected !== actual) {
                        return false;
                    }
                }
            }

            // All arguments matched
            return true;
        };

        const expected = this.popExpected();
        if (
            expected.level !== level ||
            expected.message !== message ||
            !argsMatch(expected.args, args)
        ) {
            throw new Error(
                `Expected message did not match actual.\n\nExpected:\n${MockLogger._formatSummary(
                    expected.level,
                    expected.message,
                    expected.args
                )}\n\nActual:\n${MockLogger._formatSummary(
                    level,
                    message,
                    args
                )}`
            );
        }
    }