mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-03-30 13:43:26 +08:00
test: add 3 tests for alternation regex, double-negative clamping, and self-rename (Round 95)
This commit is contained in:
@@ -1272,6 +1272,28 @@ function runTests() {
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
// ── Round 95: renameAlias with same old and new name (self-rename) ──
|
||||
console.log('\nRound 95: renameAlias (self-rename same name):');
|
||||
|
||||
if (test('renameAlias returns "already exists" error when renaming alias to itself', () => {
|
||||
resetAliases();
|
||||
// Create an alias first
|
||||
const created = aliases.setAlias('self-rename', '/path/session', 'Self Rename');
|
||||
assert.strictEqual(created.success, true, 'Setup: alias should be created');
|
||||
|
||||
// Attempt to rename to the same name
|
||||
const result = aliases.renameAlias('self-rename', 'self-rename');
|
||||
assert.strictEqual(result.success, false, 'Renaming to itself should fail');
|
||||
assert.ok(result.error.includes('already exists'),
|
||||
'Error should indicate alias already exists (line 333-334 check)');
|
||||
|
||||
// Verify original alias is still intact
|
||||
const resolved = aliases.resolveAlias('self-rename');
|
||||
assert.ok(resolved, 'Original alias should still exist after failed self-rename');
|
||||
assert.strictEqual(resolved.sessionPath, '/path/session',
|
||||
'Alias data should be preserved');
|
||||
})) passed++; else failed++;
|
||||
|
||||
// Summary
|
||||
console.log(`\nResults: Passed: ${passed}, Failed: ${failed}`);
|
||||
process.exit(failed > 0 ? 1 : 0);
|
||||
|
||||
@@ -1488,6 +1488,22 @@ src/main.ts
|
||||
'Content without session items should have 0 totalItems');
|
||||
})) passed++; else failed++;
|
||||
|
||||
// ── Round 95: getAllSessions with both negative offset AND negative limit ──
|
||||
console.log('\nRound 95: getAllSessions (both negative offset and negative limit):');
|
||||
|
||||
if (test('getAllSessions clamps both negative offset (to 0) and negative limit (to 1) simultaneously', () => {
|
||||
const result = sessionManager.getAllSessions({ offset: -5, limit: -10 });
|
||||
// offset clamped: Math.max(0, Math.floor(-5)) → 0
|
||||
// limit clamped: Math.max(1, Math.floor(-10)) → 1
|
||||
// slice(0, 0+1) → first session only
|
||||
assert.strictEqual(result.offset, 0,
|
||||
'Negative offset should be clamped to 0');
|
||||
assert.strictEqual(result.limit, 1,
|
||||
'Negative limit should be clamped to 1');
|
||||
assert.ok(result.sessions.length <= 1,
|
||||
'Should return at most 1 session (slice(0, 1))');
|
||||
})) passed++; else failed++;
|
||||
|
||||
// Summary
|
||||
console.log(`\nResults: Passed: ${passed}, Failed: ${failed}`);
|
||||
process.exit(failed > 0 ? 1 : 0);
|
||||
|
||||
@@ -1282,6 +1282,24 @@ function runTests() {
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
// ── Round 95: countInFile with regex alternation (no g flag) ──
|
||||
console.log('\nRound 95: countInFile (regex alternation without g flag):');
|
||||
|
||||
if (test('countInFile with /apple|banana/ (alternation, no g) counts all matches', () => {
|
||||
const tmpDir = path.join(utils.getTempDir(), `ecc-r95-alternation-${Date.now()}`);
|
||||
fs.mkdirSync(tmpDir, { recursive: true });
|
||||
const testFile = path.join(tmpDir, 'alternation.txt');
|
||||
try {
|
||||
utils.writeFile(testFile, 'apple banana apple cherry banana apple');
|
||||
// /apple|banana/ has alternation but no g flag — countInFile should auto-append g
|
||||
const count = utils.countInFile(testFile, /apple|banana/);
|
||||
assert.strictEqual(count, 5,
|
||||
'Should find 3 apples + 2 bananas = 5 total (g flag auto-appended to alternation regex)');
|
||||
} finally {
|
||||
fs.rmSync(tmpDir, { recursive: true, force: true });
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
// Summary
|
||||
console.log('\n=== Test Results ===');
|
||||
console.log(`Passed: ${passed}`);
|
||||
|
||||
Reference in New Issue
Block a user