import { setGradedMode, isGradedModeActive, resetGradedMode, incrementJailbreakCount, getJailbreakCount, JAILBREAK_ESCALATION_THRESHOLD, } from "../src/graded-session"; afterEach(() => { resetGradedMode(); }); describe("graded-session", () => { it("is inactive by default", () => { expect(isGradedModeActive()).toBe(false); }); it("is active after setGradedMode(true)", () => { setGradedMode(true); expect(isGradedModeActive()).toBe(true); }); it("is inactive after resetGradedMode()", () => { setGradedMode(true); resetGradedMode(); expect(isGradedModeActive()).toBe(false); }); it("setGradedMode(false) deactivates without needing resetGradedMode()", () => { setGradedMode(true); setGradedMode(false); expect(isGradedModeActive()).toBe(false); }); it("multiple setGradedMode(true) calls are idempotent", () => { setGradedMode(true); setGradedMode(true); setGradedMode(true); expect(isGradedModeActive()).toBe(true); }); it("setGradedMode(false) on an already-inactive session is safe", () => { expect(() => setGradedMode(false)).not.toThrow(); expect(isGradedModeActive()).toBe(false); }); }); describe("jailbreak counter", () => { it("starts at zero", () => { expect(getJailbreakCount()).toBe(0); }); it("increments and returns the new count each call", () => { expect(incrementJailbreakCount()).toBe(1); expect(incrementJailbreakCount()).toBe(2); expect(incrementJailbreakCount()).toBe(3); }); it("getJailbreakCount reflects accumulated increments", () => { incrementJailbreakCount(); incrementJailbreakCount(); expect(getJailbreakCount()).toBe(2); }); it("resetGradedMode() also resets the counter to zero", () => { incrementJailbreakCount(); incrementJailbreakCount(); resetGradedMode(); expect(getJailbreakCount()).toBe(0); }); it("counter is independent of graded mode flag", () => { incrementJailbreakCount(); incrementJailbreakCount(); expect(isGradedModeActive()).toBe(false); setGradedMode(true); expect(getJailbreakCount()).toBe(2); }); it("JAILBREAK_ESCALATION_THRESHOLD is 3", () => { expect(JAILBREAK_ESCALATION_THRESHOLD).toBe(3); }); });