import 'package:flutter_test/flutter_test.dart'; import 'package:kouyu_english/core/models.dart'; import 'package:kouyu_english/core/review_feedback.dart'; ReviewItem review(String id, String target) => ReviewItem( id: id, target: target, prompt: 'Test prompt', hint: target, dueAt: DateTime(2026), skill: '回忆表达', ); void main() { test('does not accept unrelated English for a core phrase', () { final result = ReviewFeedback.check( review('A0-P12', "I'm from [place]."), 'I like tea.', ); expect(result.complete, isFalse); }); test('accepts a new place in the from pattern', () { final result = ReviewFeedback.check( review('A0-P12', "I'm from [place]."), "I'm from Guangzhou.", ); expect(result.complete, isTrue); }); test('checks an A0 word without accepting a different word', () { expect( ReviewFeedback.check(review('A0-W08', 'three'), 'four').complete, isFalse, ); expect( ReviewFeedback.check(review('A0-W08', 'three'), 'three').complete, isTrue, ); }); test('A0-P17 accepts standard o clock expressions', () { expect( ReviewFeedback.check( review('A0-P17', "It's [hour] o'clock."), "It's three o'clock.", ).complete, isTrue, ); expect( ReviewFeedback.check( review('A0-P17', "It's [hour] o'clock."), 'It is two o’clock.', ).complete, isTrue, ); expect( ReviewFeedback.check( review('A0-P17', "It's [hour] o'clock."), 'It is five oclock.', ).complete, isTrue, ); }); test('A0-P20 accepts please say that again and please speak slowly', () { expect( ReviewFeedback.check( review('A0-P20', 'Please say that again.'), 'Please say that again.', ).complete, isTrue, ); expect( ReviewFeedback.check( review('A0-P20', 'Please say that again.'), 'Please speak slowly.', ).complete, isTrue, ); }); }