Files
biz_xfj_cloud/test/common/face_camera_models_test.dart
2026-10-20 13:41:05 +08:00

62 lines
2.3 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:pj_supermarket_cloud/common/models/plugs/face_camera_models.dart';
import 'package:pj_supermarket_cloud/common/models/plugs/face_recognition_session_models.dart';
/// 核对原生相机目录、自动语义和旧会话快照的向后兼容性。
void main() {
test('配置JSON往返保留人工编号、空目录和毫秒刷新时间', () {
const value = FaceCameraConfiguration(
primaryCameraId: 1,
refreshedAt: 1792454400123,
cameras: [
FaceCameraDevice(cameraId: 0, facing: 0, orientation: 90),
FaceCameraDevice(cameraId: 1, facing: 1, orientation: 270),
],
);
final restored = FaceCameraConfiguration.fromJson(value.toJson());
expect(restored.primaryCameraId, 1);
expect(restored.refreshedAt, value.refreshedAt);
expect(restored.cameras[1].orientation, 270);
expect(restored.primaryMissing, isFalse);
expect(restored.cameras[1].description, '系统前置 · 270°');
final missing = FaceCameraConfiguration.fromJson({
'cameras': <dynamic>[],
'primaryCameraId': 1,
'refreshedAt': value.refreshedAt,
});
expect(missing.primaryMissing, isTrue);
expect(missing.primaryCameraId, 1);
expect(FaceCameraConfiguration.fromJson({}).primaryCameraId, isNull);
});
test('自动候选仍返回实际摄像头及与识别展示一致的方向参数', () {
final value = FaceCameraSelectionPreview.fromJson({
'previewSessionId': 'preview-1',
'textureId': 7,
'cameraId': 1,
'width': 1280,
'height': 720,
'rotation': 270,
'mirror': true,
});
expect(value.texture.cameraId, 1);
expect(value.texture.rotation, 270);
expect(value.texture.mirror, isTrue);
expect(value.toJson()['previewSessionId'], 'preview-1');
});
test('旧原生事件缺少摄像头扩展字段时仍能解析', () {
final legacy = FaceRecognitionSessionEvent.fromMap({});
expect(legacy.cameraId, isNull);
expect(legacy.cameraWarning, isEmpty);
expect(legacy.cameraPreviewSessionId, isNull);
final fallback = FaceRecognitionSessionEvent.fromMap({
'cameraId': 0,
'cameraWarning': '主摄 1 已失联,临时使用默认摄像头 0',
});
expect(fallback.cameraId, 0);
expect(fallback.cameraWarning, contains('失联'));
});
}