import { describe, it, expect } from 'vitest';
import { revealText } from '../reveal';

describe('revealText', () => {
    it('в начале не показано ничего', () => {
        expect(revealText('привет', 0, 10)).toEqual({ shown: 0, done: false });
    });

    it('печатает пропорционально времени', () => {
        // 20 cps: 250мс → 5 символов
        expect(revealText('привет мир', 250, 20)).toEqual({ shown: 5, done: false });
        expect(revealText('привет мир', 550, 20)).toEqual({ shown: 10, done: true });
    });

    it('перелистывание назад невозможно: показ не больше длины', () => {
        expect(revealText('ok', 10000, 5).shown).toBe(2);
    });

    it('cps <= 0 — весь текст сразу', () => {
        expect(revealText('привет', 0, 0)).toEqual({ shown: 6, done: true });
        expect(revealText('привет', 0, -5)).toEqual({ shown: 6, done: true });
    });

    it('пустой текст — сразу готов', () => {
        expect(revealText('', 0, 10)).toEqual({ shown: 0, done: true });
    });
});