import 'package:flutter_test/flutter_test.dart';
import 'package:ot_movil/services/dictation_text_accumulator.dart';

void main() {
  test('un resultado parcial más corto no borra el texto reconocido', () {
    final accumulator = DictationTextAccumulator()..begin('Texto anterior.');

    expect(
      accumulator.addResult('revisión del drenaje de condensado'),
      'Texto anterior. revisión del drenaje de condensado',
    );
    expect(
      accumulator.addResult('revisión del drenaje'),
      'Texto anterior. revisión del drenaje de condensado',
    );
  });

  test('un resultado parcial acumulativo reemplaza la versión anterior', () {
    final accumulator = DictationTextAccumulator()..begin('');

    expect(accumulator.addResult('carga de'), 'carga de');
    expect(accumulator.addResult('carga de gas'), 'carga de gas');
  });

  test('una opción nueva se agrega sin repetir las palabras superpuestas', () {
    final accumulator = DictationTextAccumulator()..begin('');

    accumulator.addResult('limpieza de filtros');
    expect(
      accumulator.addResult('filtros y revisión del drenaje'),
      'limpieza de filtros y revisión del drenaje',
    );
  });

  test('al reiniciar después de una pausa conserva todo lo visible', () {
    final accumulator = DictationTextAccumulator()..begin('Primera opción');

    accumulator.addResult('segunda opción');
    accumulator.begin(accumulator.text);

    expect(
      accumulator.addResult('tercera opción'),
      'Primera opción segunda opción tercera opción',
    );
  });
}
