397777089e
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 lines
1.3 KiB
JavaScript
25 lines
1.3 KiB
JavaScript
// Тесты sub-plan E Task 5 — терминация внешней петли (§4 SE-R7-6 спеки R6.3).
|
|
import { describe, it, expect } from 'vitest';
|
|
import { loopTerminationDecision } from './loop-termination.mjs';
|
|
|
|
describe('loopTerminationDecision (SE-R7-6)', () => {
|
|
it('владелец объявил цель достигнутой → terminate', () => {
|
|
expect(loopTerminationDecision({ ownerDeclaredDone: true }).terminate).toBe(true);
|
|
});
|
|
it('судья gate-3 GO → terminate', () => {
|
|
expect(loopTerminationDecision({ judgeGate3Go: true }).terminate).toBe(true);
|
|
});
|
|
it('ни того ни другого → продолжать (контроллер сам не закрывает)', () => {
|
|
const r = loopTerminationDecision({});
|
|
expect(r.terminate).toBe(false);
|
|
expect(r.reason).toMatch(/контроллер сам не закрывает/);
|
|
});
|
|
it('оба → terminate', () => {
|
|
expect(loopTerminationDecision({ ownerDeclaredDone: true, judgeGate3Go: true }).terminate).toBe(true);
|
|
});
|
|
it('truthy-не-true НЕ закрывает (строгий ===true, fail-safe)', () => {
|
|
expect(loopTerminationDecision({ ownerDeclaredDone: 'yes' }).terminate).toBe(false);
|
|
expect(loopTerminationDecision({ judgeGate3Go: 1 }).terminate).toBe(false);
|
|
});
|
|
});
|