twonly-app-dependencies/photo_view/test/controller_test.dart
2025-12-07 16:10:41 +01:00

103 lines
2.7 KiB
Dart

import 'dart:ui';
import 'package:photo_view/src/controller/photo_view_controller.dart';
import 'package:test/test.dart';
void main() {
late PhotoViewController controller;
setUp(() {
controller = PhotoViewController();
});
test('controller constructor', () {
const double initialRotation = 0.0;
const Offset initialPosition = Offset(40.0, 40.0);
controller = PhotoViewController(
initialRotation: initialRotation,
initialPosition: initialPosition,
);
const PhotoViewControllerValue testValue = const PhotoViewControllerValue(
position: initialPosition,
scale: null,
rotation: initialRotation,
rotationFocusPoint: null,
);
expect(controller.value, testValue);
});
test('controller change values', () {
controller.scale = 0.1;
expect(controller.scale, 0.1);
controller.position = Offset.zero;
expect(controller.position, Offset.zero);
controller.rotation = 0.1;
expect(controller.rotation, 0.1);
controller.rotationFocusPoint = Offset.zero;
expect(controller.rotationFocusPoint, Offset.zero);
controller.updateMultiple(position: const Offset(1, 1));
expect(controller.scale, 0.1);
expect(controller.position, const Offset(1, 1));
expect(controller.rotation, 0.1);
expect(controller.rotationFocusPoint, Offset.zero);
controller.setScaleInvisibly(2.0);
expect(controller.scale, 2.0);
});
test('controller reset', () {
controller.updateMultiple(position: const Offset(1, 1), rotation: 40);
controller.reset();
expect(controller.position, Offset.zero);
expect(controller.rotation, 0.0);
});
test('controller stream mutation', () {
const PhotoViewControllerValue value1 = const PhotoViewControllerValue(
position: Offset.zero,
scale: null,
rotation: 1.0,
rotationFocusPoint: null,
);
const PhotoViewControllerValue value2 = const PhotoViewControllerValue(
position: Offset.zero,
scale: 3.0,
rotation: 1.0,
rotationFocusPoint: null,
);
const PhotoViewControllerValue value3 = const PhotoViewControllerValue(
position: const Offset(1, 1),
scale: 3.0,
rotation: 45.0,
rotationFocusPoint: null,
);
const PhotoViewControllerValue value4 = const PhotoViewControllerValue(
position: const Offset(1, 1),
scale: 5.0,
rotation: 45.0,
rotationFocusPoint: null,
);
expect(
controller.outputStateStream,
emitsInOrder([
value1,
value2,
value3,
value4,
]),
);
controller.rotation = 1.0;
controller.scale = 3.0;
controller.updateMultiple(position: const Offset(1, 1), rotation: 45.0);
controller.setScaleInvisibly(5.0);
});
}