Spaces:
Runtime error
Runtime error
| import { describe, it } from "node:test"; | |
| import assert from "node:assert/strict"; | |
| import { | |
| CAVEMAN_RULES, | |
| getRulesForContext, | |
| getRuleByName, | |
| } from "../../../open-sse/services/compression/cavemanRules.ts"; | |
| describe("cavemanRules", () => { | |
| it("should have 29+ rules", () => { | |
| assert.ok(CAVEMAN_RULES.length >= 29, `Expected 29+ rules, got ${CAVEMAN_RULES.length}`); | |
| }); | |
| it("every rule should have a name, pattern, replacement, and context", () => { | |
| for (const rule of CAVEMAN_RULES) { | |
| assert.ok(rule.name, "Rule missing name"); | |
| assert.ok(rule.pattern instanceof RegExp, `Rule ${rule.name} missing pattern`); | |
| assert.ok(rule.replacement !== undefined, `Rule ${rule.name} missing replacement`); | |
| assert.ok( | |
| ["all", "user", "system", "assistant"].includes(rule.context), | |
| `Rule ${rule.name} has invalid context: ${rule.context}` | |
| ); | |
| } | |
| }); | |
| it("all regex patterns should compile", () => { | |
| for (const rule of CAVEMAN_RULES) { | |
| assert.doesNotThrow(() => rule.pattern.test("test"), `Rule ${rule.name} pattern fails`); | |
| } | |
| }); | |
| it("getRulesForContext filters correctly", () => { | |
| const userRules = getRulesForContext("user"); | |
| const systemRules = getRulesForContext("system"); | |
| const assistantRules = getRulesForContext("assistant"); | |
| assert.ok(userRules.length >= 20, `Expected 20+ user rules, got ${userRules.length}`); | |
| assert.ok(systemRules.length >= 15, `Expected 15+ system rules, got ${systemRules.length}`); | |
| assert.ok( | |
| assistantRules.length >= 15, | |
| `Expected 15+ assistant rules, got ${assistantRules.length}` | |
| ); | |
| for (const rule of userRules) { | |
| assert.ok( | |
| rule.context === "all" || rule.context === "user", | |
| `User rules should include ${rule.name}` | |
| ); | |
| } | |
| }); | |
| it("getRuleByName returns correct rule", () => { | |
| const rule = getRuleByName("polite_framing"); | |
| assert.ok(rule); | |
| assert.equal(rule.name, "polite_framing"); | |
| const missing = getRuleByName("nonexistent_rule"); | |
| assert.equal(missing, undefined); | |
| }); | |
| it("polite_framing removes 'please'", () => { | |
| const rule = getRuleByName("polite_framing"); | |
| assert.ok(rule); | |
| const result = "Please analyze this code".replace(rule.pattern, rule.replacement); | |
| assert.ok( | |
| !result.toLowerCase().includes("please"), | |
| `Expected 'please' removed, got: ${result}` | |
| ); | |
| }); | |
| it("hedging removes 'it seems like'", () => { | |
| const rule = getRuleByName("hedging"); | |
| assert.ok(rule); | |
| const result = "It seems like this works".replace(rule.pattern, rule.replacement); | |
| assert.ok( | |
| !result.toLowerCase().includes("it seems like"), | |
| `Expected hedging removed, got: ${result}` | |
| ); | |
| }); | |
| it("verbose_instructions compresses", () => { | |
| const rule = getRuleByName("verbose_instructions"); | |
| assert.ok(rule); | |
| const result = "provide a detailed explanation".replace( | |
| rule.pattern, | |
| typeof rule.replacement === "function" | |
| ? (...args: string[]) => rule.replacement(args[0], ...args.slice(1)) | |
| : rule.replacement | |
| ); | |
| assert.ok(result.includes("provide"), `Expected 'provide', got: ${result}`); | |
| assert.ok(!result.includes("detailed"), `Expected 'detailed' removed, got: ${result}`); | |
| }); | |
| it("filler_adverbs removes 'basically'", () => { | |
| const rule = getRuleByName("filler_adverbs"); | |
| assert.ok(rule); | |
| const result = "This is basically a test".replace(rule.pattern, rule.replacement); | |
| assert.ok( | |
| !result.toLowerCase().includes("basically"), | |
| `Expected 'basically' removed, got: ${result}` | |
| ); | |
| }); | |
| it("excessive_gratitude removes 'Thank you so much'", () => { | |
| const rule = getRuleByName("excessive_gratitude"); | |
| assert.ok(rule); | |
| const result = "Thank you so much for your help!".replace(rule.pattern, rule.replacement); | |
| assert.ok( | |
| !result.toLowerCase().includes("thank you so much"), | |
| `Expected gratitude removed, got: ${result}` | |
| ); | |
| }); | |
| it("context_setup converts 'Here is my code' to 'Code:'", () => { | |
| const rule = getRuleByName("context_setup"); | |
| assert.ok(rule); | |
| const result = "Here is my code for review:".replace(rule.pattern, rule.replacement); | |
| assert.ok(result.includes("Code:"), `Expected 'Code:', got: ${result}`); | |
| }); | |
| it("intent_clarification converts intent to 'Goal:'", () => { | |
| const rule = getRuleByName("intent_clarification"); | |
| assert.ok(rule); | |
| const result = "What I'm trying to do is fix the bug".replace(rule.pattern, rule.replacement); | |
| assert.ok(result.startsWith("Goal:"), `Expected 'Goal:', got: ${result}`); | |
| }); | |
| it("purpose_phrases converts 'in order to' to 'to'", () => { | |
| const rule = getRuleByName("purpose_phrases"); | |
| assert.ok(rule); | |
| const result = "in order to fix this".replace(rule.pattern, rule.replacement); | |
| assert.ok(result.startsWith("to "), `Expected 'to ', got: ${result}`); | |
| assert.ok(!result.includes("in order"), `Expected 'in order' removed, got: ${result}`); | |
| }); | |
| it("passive_voice converts 'is being used' to 'uses'", () => { | |
| const rule = getRuleByName("passive_voice"); | |
| assert.ok(rule); | |
| const result = "The function is being used".replace( | |
| rule.pattern, | |
| typeof rule.replacement === "function" | |
| ? (...args: string[]) => rule.replacement(args[0]) | |
| : rule.replacement | |
| ); | |
| assert.ok(result.includes("uses"), `Expected 'uses', got: ${result}`); | |
| }); | |
| it("repeated_context converts to 'See above'", () => { | |
| const rule = getRuleByName("repeated_context"); | |
| assert.ok(rule); | |
| const result = "As we discussed earlier, this needs fixing".replace( | |
| rule.pattern, | |
| rule.replacement | |
| ); | |
| assert.ok(result.includes("See above"), `Expected 'See above', got: ${result}`); | |
| }); | |
| it("emphasis_removal removes 'very' before adjectives", () => { | |
| const rule = getRuleByName("emphasis_removal"); | |
| assert.ok(rule); | |
| const result = "This is very important".replace(rule.pattern, rule.replacement); | |
| assert.ok(!result.includes("very"), `Expected 'very' removed, got: ${result}`); | |
| assert.ok(result.includes("important"), `Expected 'important' kept, got: ${result}`); | |
| }); | |
| }); | |