66 lines
2.0 KiB
Dart
66 lines
2.0 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:relationship_saver/features/local/chat_preference_extractor.dart';
|
|
import 'package:relationship_saver/features/local/local_models.dart';
|
|
|
|
void main() {
|
|
const ChatPreferenceExtractor extractor = ChatPreferenceExtractor();
|
|
|
|
test('extracts prefer-over like/dislike signals', () {
|
|
final List<ExtractedPreferenceSignalCandidate> result = extractor.extract(
|
|
'I prefer tea over coffee, especially at night.',
|
|
);
|
|
|
|
expect(
|
|
result.any(
|
|
(ExtractedPreferenceSignalCandidate item) =>
|
|
item.key == 'drink:tea' &&
|
|
item.polarity == PreferenceSignalPolarity.like,
|
|
),
|
|
isTrue,
|
|
);
|
|
expect(
|
|
result.any(
|
|
(ExtractedPreferenceSignalCandidate item) =>
|
|
item.key == 'drink:coffee' &&
|
|
item.polarity == PreferenceSignalPolarity.dislike,
|
|
),
|
|
isTrue,
|
|
);
|
|
});
|
|
|
|
test('extracts positive and negative statements with categories', () {
|
|
final List<ExtractedPreferenceSignalCandidate> result = extractor.extract(
|
|
"I love bookstores and I don't like loud clubs.",
|
|
);
|
|
|
|
expect(
|
|
result.any(
|
|
(ExtractedPreferenceSignalCandidate item) =>
|
|
item.category == 'hobby' &&
|
|
item.polarity == PreferenceSignalPolarity.like,
|
|
),
|
|
isTrue,
|
|
);
|
|
expect(
|
|
result.any(
|
|
(ExtractedPreferenceSignalCandidate item) =>
|
|
item.category == 'environment' &&
|
|
item.polarity == PreferenceSignalPolarity.dislike,
|
|
),
|
|
isTrue,
|
|
);
|
|
});
|
|
|
|
test('extracts allergy as high-confidence dislike signal', () {
|
|
final List<ExtractedPreferenceSignalCandidate> result = extractor.extract(
|
|
'I am allergic to peanuts, please remember that.',
|
|
);
|
|
|
|
final ExtractedPreferenceSignalCandidate signal = result.firstWhere(
|
|
(ExtractedPreferenceSignalCandidate item) => item.key == 'health:peanuts',
|
|
);
|
|
expect(signal.polarity, PreferenceSignalPolarity.dislike);
|
|
expect(signal.confidence, greaterThan(0.9));
|
|
});
|
|
}
|