import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:smtias_capture/models/display_orientation.dart'; /// 向きの単一定義 [DisplayOrientation] が,ライブ系・スナップショット系の /// 両方へ正しい値を派生させることを固定する契約テスト. /// /// リファクタリングで「現行の向き挙動」が変わっていないことを保証する. /// (ライブ系の見た目はゴールデンテスト,最終的な向きの正しさは実機目視で確認.) void main() { group('DisplayOrientation.attachmentDownward(下向き設置の確定値)', () { const orientation = DisplayOrientation.attachmentDownward; test('ライブ系: previewMatrix が 180°回転(X反転+Y反転)である', () { expect(orientation.flipHorizontal, isTrue); expect(orientation.flipVertical, isTrue); expect( orientation.previewMatrix.storage, Matrix4.diagonal3Values(-1.0, -1.0, 1.0).storage, ); }); test('スナップショット系: native へ rotation:90, mirror:true を渡す', () { expect(orientation.snapshotRotationDegrees, 90); expect(orientation.snapshotMirror, isTrue); }); }); group('previewMatrix の派生', () { test('反転なしの場合は単位行列になる', () { const noFlip = DisplayOrientation( flipHorizontal: false, flipVertical: false, snapshotRotationDegrees: 0, snapshotMirror: false, ); expect(noFlip.previewMatrix.storage, Matrix4.identity().storage); }); test('X のみ反転すると対角 x = -1 になる', () { const flipX = DisplayOrientation( flipHorizontal: true, flipVertical: false, snapshotRotationDegrees: 0, snapshotMirror: false, ); expect( flipX.previewMatrix.storage, Matrix4.diagonal3Values(-1.0, 1.0, 1.0).storage, ); }); }); }