From f0c9697a745d1b2d08d61ece2ef5060242021919 Mon Sep 17 00:00:00 2001 From: RuiAlonso Date: Fri, 25 Mar 2022 09:24:13 +0100 Subject: [PATCH] test: tests for shapes --- .../src/components/shapes/ellipse_shape.dart | 6 +- .../shapes/bezier_curve_shape_test.dart | 32 +++++++- .../components/shapes/ellipse_shape_test.dart | 82 ++----------------- 3 files changed, 42 insertions(+), 78 deletions(-) diff --git a/packages/pinball_components/lib/src/components/shapes/ellipse_shape.dart b/packages/pinball_components/lib/src/components/shapes/ellipse_shape.dart index 6e480f11..bfa7d435 100644 --- a/packages/pinball_components/lib/src/components/shapes/ellipse_shape.dart +++ b/packages/pinball_components/lib/src/components/shapes/ellipse_shape.dart @@ -25,7 +25,7 @@ class EllipseShape extends ChainShape { /// The top left corner of the ellipse. /// - /// Where the initial painting begines. + /// Where the initial painting begins. // TODO(ruialonso): Change to use appropiate center. final Vector2 center; @@ -37,9 +37,7 @@ class EllipseShape extends ChainShape { /// Rotates the ellipse by a given [angle] in radians. void rotate(double angle) { - createChain( - vertices.map((vector) => vector..rotate(angle)).toList(), - ); + vertices.map((vector) => vector..rotate(angle)).toList(); } EllipseShape copyWith({ diff --git a/packages/pinball_components/test/src/components/shapes/bezier_curve_shape_test.dart b/packages/pinball_components/test/src/components/shapes/bezier_curve_shape_test.dart index 06cea6f7..e8192363 100644 --- a/packages/pinball_components/test/src/components/shapes/bezier_curve_shape_test.dart +++ b/packages/pinball_components/test/src/components/shapes/bezier_curve_shape_test.dart @@ -1,5 +1,35 @@ +import 'dart:math' as math; +import 'package:flame/extensions.dart'; +import 'package:flame/game.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:pinball_components/src/components/components.dart'; void main() { - group('ArcShape', () {}); + group('BezierCurveShape', () { + group('rotate', () { + test('returns vertices rotated', () { + const rotationAngle = 2 * math.pi; + final controlPoints = [ + Vector2(0, 0), + Vector2(10, 0), + Vector2(0, 10), + Vector2(10, 10), + ]; + + final bezierCurveShape = BezierCurveShape( + controlPoints: controlPoints, + ); + final bezierCurveShapeRotated = BezierCurveShape( + controlPoints: controlPoints, + )..rotate(rotationAngle); + + for (var index = 0; index < bezierCurveShape.vertices.length; index++) { + expect( + bezierCurveShape.vertices[index]..rotate(rotationAngle), + equals(bezierCurveShapeRotated.vertices[index]), + ); + } + }); + }); + }); } diff --git a/packages/pinball_components/test/src/components/shapes/ellipse_shape_test.dart b/packages/pinball_components/test/src/components/shapes/ellipse_shape_test.dart index e0327c76..ff525c1d 100644 --- a/packages/pinball_components/test/src/components/shapes/ellipse_shape_test.dart +++ b/packages/pinball_components/test/src/components/shapes/ellipse_shape_test.dart @@ -1,3 +1,4 @@ +import 'dart:math' as math; import 'package:flame/extensions.dart'; import 'package:flame/game.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -5,89 +6,24 @@ import 'package:pinball_components/src/components/components.dart'; void main() { group('EllipseShape', () { - group('rotate', () {}); - - group('copyWith', () { - test('returns same shape when no properties are passed', () { + group('rotate', () { + test('returns vertices rotated', () { + const rotationAngle = 2 * math.pi; final ellipseShape = EllipseShape( center: Vector2.zero(), majorRadius: 10, minorRadius: 8, ); - final ellipseShapeCopied = ellipseShape.copyWith(); - - for (var index = 0; index < ellipseShape.vertices.length; index++) { - expect( - ellipseShape.vertices[index], - equals(ellipseShapeCopied.vertices[index]), - ); - } - }); - - test('returns object with updated center when center is passed', () { - final ellipseShapeExpected = EllipseShape( - center: Vector2.all(10), - majorRadius: 10, - minorRadius: 8, - ); - final ellipseShapeCopied = EllipseShape( - center: Vector2.zero(), - majorRadius: 10, - minorRadius: 8, - ).copyWith(center: Vector2.all(10)); - - for (var index = 0; - index < ellipseShapeCopied.vertices.length; - index++) { - expect( - ellipseShapeCopied.vertices[index], - equals(ellipseShapeExpected.vertices[index]), - ); - } - }); - - test('returns object with updated majorRadius when majorRadius is passed', - () { - final ellipseShapeExpected = EllipseShape( - center: Vector2.zero(), - majorRadius: 12, - minorRadius: 8, - ); - final ellipseShapeCopied = EllipseShape( + final ellipseShapeRotated = EllipseShape( center: Vector2.zero(), majorRadius: 10, minorRadius: 8, - ).copyWith(majorRadius: 12); + )..rotate(rotationAngle); - for (var index = 0; - index < ellipseShapeCopied.vertices.length; - index++) { - expect( - ellipseShapeCopied.vertices[index], - equals(ellipseShapeExpected.vertices[index]), - ); - } - }); - - test('returns object with updated minorRadius when minorRadius is passed', - () { - final ellipseShapeExpected = EllipseShape( - center: Vector2.zero(), - majorRadius: 12, - minorRadius: 5, - ); - final ellipseShapeCopied = EllipseShape( - center: Vector2.zero(), - majorRadius: 12, - minorRadius: 8, - ).copyWith(minorRadius: 5); - - for (var index = 0; - index < ellipseShapeCopied.vertices.length; - index++) { + for (var index = 0; index < ellipseShape.vertices.length; index++) { expect( - ellipseShapeCopied.vertices[index], - equals(ellipseShapeExpected.vertices[index]), + ellipseShape.vertices[index]..rotate(rotationAngle), + equals(ellipseShapeRotated.vertices[index]), ); } });