@@ -7,6 +7,8 @@ import 'dart:ui';
77
88import 'package:test/test.dart' ;
99
10+ import 'test_util.dart' ;
11+
1012void main () {
1113 test ('lerpDouble should return null if and only if both inputs are null' , () {
1214 expect (lerpDouble (null , null , 1.0 ), isNull);
@@ -65,47 +67,53 @@ void main() {
6567 expect (lerpDouble (10 , 0 , 5 ), - 40 );
6668 });
6769
68- test ('lerpDouble should return NaN if any input is NaN' , () {
69- expect (lerpDouble (0.0 , 10.0 , double .nan), isNaN);
70- expect (lerpDouble (0.0 , double .infinity, double .nan), isNaN);
71- expect (lerpDouble (0.0 , double .nan, 5.0 ), isNaN);
72- expect (lerpDouble (0.0 , double .nan, double .infinity), isNaN);
73- expect (lerpDouble (0.0 , double .nan, double .nan), isNaN);
74- expect (lerpDouble (double .infinity, 10.0 , double .nan), isNaN);
75- expect (lerpDouble (double .infinity, double .infinity, double .nan), isNaN);
76- expect (lerpDouble (double .infinity, double .nan, 5.0 ), isNaN);
77- expect (lerpDouble (double .infinity, double .nan, double .infinity), isNaN);
78- expect (lerpDouble (double .infinity, double .nan, double .nan), isNaN);
79- expect (lerpDouble (double .nan, 10.0 , 5.0 ), isNaN);
80- expect (lerpDouble (double .nan, 10.0 , double .infinity), isNaN);
81- expect (lerpDouble (double .nan, 10.0 , double .nan), isNaN);
82- expect (lerpDouble (double .nan, double .infinity, 5.0 ), isNaN);
83- expect (lerpDouble (double .nan, double .infinity, double .infinity), isNaN);
84- expect (lerpDouble (double .nan, double .infinity, double .nan), isNaN);
70+ test ('lerpDouble should return input value in all cases if begin/end are equal' , () {
71+ expect (lerpDouble (10.0 , 10.0 , 5.0 ), 10.0 );
72+ expect (lerpDouble (10.0 , 10.0 , double .nan), 10.0 );
73+ expect (lerpDouble (10.0 , 10.0 , double .infinity), 10.0 );
74+ expect (lerpDouble (10.0 , 10.0 , - double .infinity), 10.0 );
75+
76+ expect (lerpDouble (10 , 10 , 5.0 ), 10.0 );
77+ expect (lerpDouble (10 , 10 , double .nan), 10.0 );
78+ expect (lerpDouble (10 , 10 , double .infinity), 10.0 );
79+ expect (lerpDouble (10 , 10 , - double .infinity), 10.0 );
80+
8581 expect (lerpDouble (double .nan, double .nan, 5.0 ), isNaN);
86- expect (lerpDouble (double .nan, double .nan, double .infinity), isNaN);
8782 expect (lerpDouble (double .nan, double .nan, double .nan), isNaN);
83+ expect (lerpDouble (double .nan, double .nan, double .infinity), isNaN);
84+ expect (lerpDouble (double .nan, double .nan, - double .infinity), isNaN);
85+
86+ expect (lerpDouble (double .infinity, double .infinity, 5.0 ), double .infinity);
87+ expect (lerpDouble (double .infinity, double .infinity, double .nan), double .infinity);
88+ expect (lerpDouble (double .infinity, double .infinity, double .infinity), double .infinity);
89+ expect (lerpDouble (double .infinity, double .infinity, - double .infinity), double .infinity);
90+
91+ expect (lerpDouble (- double .infinity, - double .infinity, 5.0 ), - double .infinity);
92+ expect (lerpDouble (- double .infinity, - double .infinity, double .nan), - double .infinity);
93+ expect (lerpDouble (- double .infinity, - double .infinity, double .infinity), - double .infinity);
94+ expect (lerpDouble (- double .infinity, - double .infinity, - double .infinity), - double .infinity);
8895 });
8996
90- test ('lerpDouble returns NaN if interpolation results in Infinity - Infinity' , () {
91- expect (lerpDouble (double .infinity, 10.0 , 5.0 ), isNaN);
92- expect (lerpDouble (double .infinity, 10.0 , double .infinity), isNaN);
93- expect (lerpDouble (- double .infinity, 10.0 , 5.0 ), isNaN);
94- expect (lerpDouble (- double .infinity, 10.0 , double .infinity), isNaN);
97+ test ('lerpDouble should throw AssertionError if interpolation value is NaN and a != b' , () {
98+ expectAssertion (() => lerpDouble (0.0 , 10.0 , double .nan));
9599 });
96100
97- test ('lerpDouble returns +/- infinity if interpolating towards an infinity' , () {
98- expect (lerpDouble (double .infinity, 10.0 , - 5.0 )? .isInfinite, isTrue);
99- expect (lerpDouble (double .infinity, 10.0 , - double .infinity)? .isInfinite, isTrue);
100- expect (lerpDouble (- double .infinity, 10.0 , - 5.0 )? .isInfinite, isTrue);
101- expect (lerpDouble (- double .infinity, 10.0 , - double .infinity)? .isInfinite, isTrue);
102- expect (lerpDouble (0.0 , double .infinity, 5.0 )? .isInfinite, isTrue);
103- expect (lerpDouble (0.0 , double .infinity, - 5.0 )? .isInfinite, isTrue);
104- expect (lerpDouble (0.0 , 10.0 , double .infinity)? .isInfinite, isTrue);
105- expect (lerpDouble (0.0 , double .infinity, double .infinity)? .isInfinite, isTrue);
101+ test ('lerpDouble should throw AssertionError if interpolation value is +/- infinity and a != b' , () {
102+ expectAssertion (() => lerpDouble (0.0 , 10.0 , double .infinity));
103+ expectAssertion (() => lerpDouble (0.0 , 10.0 , - double .infinity));
106104 });
107105
108- test ('lerpDouble returns NaN if start/end and interpolation value are infinity' , () {
109- expect (lerpDouble (double .infinity, double .infinity, double .infinity), isNaN);
106+ test ('lerpDouble should throw AssertionError if either start or end are NaN' , () {
107+ expectAssertion (() => lerpDouble (double .nan, 10.0 , 5.0 ));
108+ expectAssertion (() => lerpDouble (0.0 , double .nan, 5.0 ));
109+ });
110+
111+ test ('lerpDouble should throw AssertionError if either start or end are +/- infinity' , () {
112+ expectAssertion (() => lerpDouble (double .infinity, 10.0 , 5.0 ));
113+ expectAssertion (() => lerpDouble (- double .infinity, 10.0 , 5.0 ));
114+ expectAssertion (() => lerpDouble (0.0 , double .infinity, 5.0 ));
115+ expectAssertion (() => lerpDouble (0.0 , - double .infinity, 5.0 ));
110116 });
111117}
118+
119+ final Matcher throwsAssertionError = throwsA (const TypeMatcher <AssertionError >());
0 commit comments