49 lines
1.7 KiB
Dart
49 lines
1.7 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:pj_supermarket_cloud/common/models/plugs/face_discern_models.dart';
|
|
|
|
void main() {
|
|
const defaults = FaceRecognitionConfiguration.defaults();
|
|
|
|
test('默认策略和旧版缺少占比字段的策略均使用 3%', () {
|
|
expect(defaults.minFaceAreaPercent, 3);
|
|
final legacyMap = defaults.toMap()..remove('minFaceAreaPercent');
|
|
expect(FaceRecognitionConfiguration.fromMap(legacyMap), defaults);
|
|
});
|
|
|
|
test('占比修改参与未保存判断并通过原生配置协议完整往返', () {
|
|
final changed = defaults.copyWith(minFaceAreaPercent: 12);
|
|
expect(changed, isNot(defaults));
|
|
expect(changed.usesDefaults, isFalse);
|
|
expect({defaults, changed}, hasLength(2));
|
|
expect(changed.toMap()['minFaceAreaPercent'], 12);
|
|
expect(FaceRecognitionConfiguration.fromMap(changed.toMap()), changed);
|
|
expect(changed.copyWith(enableLiveness: true).minFaceAreaPercent, 12);
|
|
expect(changed.copyWith(minFaceAreaPercent: 3).usesDefaults, isTrue);
|
|
});
|
|
|
|
test('接受已保存占比、百分比边界和小数,异常读取值回退 3% 避免阻断设置页', () {
|
|
for (final percent in <num>[1, 3, 5, 5.5, 100]) {
|
|
final decoded = FaceRecognitionConfiguration.fromMap({
|
|
'minFaceAreaPercent': percent,
|
|
});
|
|
expect(decoded.minFaceAreaPercent, percent.toDouble());
|
|
}
|
|
for (final invalid in <Object?>[
|
|
null,
|
|
'5',
|
|
false,
|
|
0,
|
|
-5,
|
|
101,
|
|
double.nan,
|
|
double.infinity,
|
|
double.negativeInfinity,
|
|
]) {
|
|
final decoded = FaceRecognitionConfiguration.fromMap({
|
|
'minFaceAreaPercent': invalid,
|
|
});
|
|
expect(decoded.minFaceAreaPercent, 3, reason: '异常值 $invalid');
|
|
}
|
|
});
|
|
}
|