import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; import 'package:kouyu_english/core/a0_core.dart'; import '../tool/courses/course_validator.dart'; void main() { test('tokenize expands contractions and skips digits', () { expect(tokenize("I'm Tom. Can't pay 15 dollars at 7 a.m.; let's go"), [ 'i', 'am', 'tom', 'can', 'not', 'pay', 'dollars', 'at', 'am', 'let', 'us', 'go', ]); }); test('match groups use AND across groups and OR inside a group', () { expect(satisfiesMatch("Sorry, I don't understand.", [ ['do not understand'], ]), isTrue); expect(satisfiesMatch('twelvee', [ ['twelve'], ]), isFalse); expect(satisfiesMatch('What is this word?', [ ['what does', 'what is'], ['mean'], ]), isFalse); }); test('course packs pass validation', () { final report = CourseValidator( projectRoot: Directory.current, a0Texts: [ for (final item in a0CoreItems.values) item.replaceAll(RegExp(r'\[[^\]]*\]'), ''), for (final sentence in a0DictationSentences.values) sentence.sentence, ], ).validate(); expect(report.errors.map((issue) => '$issue'), isEmpty); }); }