feat:人脸识别人脸占比设置
This commit is contained in:
1 parent
382b8d660f
commit
e75b3bd58e
10 files changed
+475
-110
No files matched your search
@@ -0,0 +1,48 @@
|
||||
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('默认策略和旧版缺少占比字段的策略均使用 5%', () {
|
||||
expect(defaults.minFaceAreaPercent, 5);
|
||||
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: 5).usesDefaults, isTrue);
|
||||
});
|
||||
|
||||
test('接受百分比边界和小数,异常读取值回退 5% 避免阻断设置页', () {
|
||||
for (final percent in <num>[1, 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, 5, reason: '异常值 $invalid');
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user