OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright 2014 Google Inc. All rights reserved. |
| 3 * |
| 4 * Use of this source code is governed by a BSD-style |
| 5 * license that can be found in the LICENSE file or at |
| 6 * https://developers.google.com/open-source/licenses/bsd |
| 7 */ |
| 8 |
| 9 library charted.test.interpolators; |
| 10 |
| 11 import 'package:charted/core/utils.dart'; |
| 12 import 'package:charted/interpolators/interpolators.dart'; |
| 13 import 'package:unittest/unittest.dart'; |
| 14 |
| 15 part 'easing_test.dart'; |
| 16 |
| 17 class MockObject { |
| 18 num a; |
| 19 List b; |
| 20 MockObject(this.a, this.b); |
| 21 } |
| 22 |
| 23 interpolatorsTests() { |
| 24 testEasing(); |
| 25 |
| 26 test('interpolateNumber correctly interpolates two [num]s', () { |
| 27 InterpolateFn interpolator = interpolateNumber(1, 10); |
| 28 expect(interpolator(0), equals(1)); |
| 29 expect(interpolator(0.5), equals(5.5)); |
| 30 expect(interpolator(1), equals(10)); |
| 31 }); |
| 32 |
| 33 test('interpolateRound correctly interpolates two [num]s', () { |
| 34 InterpolateFn interpolator = interpolateRound(0.8, 10.3); |
| 35 expect(interpolator(0), equals(1)); |
| 36 expect(interpolator(0.5), equals(6)); |
| 37 expect(interpolator(1), equals(10)); |
| 38 }); |
| 39 |
| 40 test('interpolateString correctly interpolates two [String]s', () { |
| 41 InterpolateFn interpolator = |
| 42 interpolateString('M1,2L2,2M5,3', 'M2,4L5,5M5,4'); |
| 43 expect(interpolator(0), equals('M1,2L2,2M5,3')); |
| 44 expect(interpolator(0.5), equals('M1.5,3.0L3.5,3.5M5.0,3.5')); |
| 45 expect(interpolator(1), equals('M2,4L5,5M5,4')); |
| 46 }); |
| 47 |
| 48 test('interpolateColor interpolates two [Color]s in RGB color system', () { |
| 49 InterpolateFn interpolator = interpolateRgbColor( |
| 50 new Color.fromRgb(100, 0, 150), new Color.fromRgb(200, 150, 0)); |
| 51 expect(interpolator(0).hexString, equals('#640096')); |
| 52 expect(interpolator(0.5).hexString, equals('#964b4b')); |
| 53 expect(interpolator(1).hexString, equals('#c89600')); |
| 54 }); |
| 55 |
| 56 test('interpolateHsl interpolates two [Color]s in HSL color system', () { |
| 57 InterpolateFn interpolator = interpolateHslColor( |
| 58 new Color.fromRgb(100, 0, 150), new Color.fromRgb(200, 150, 0)); |
| 59 expect(interpolator(0), equals('#640096')); |
| 60 expect(interpolator(0.5), equals('#00af7c')); |
| 61 expect(interpolator(1), equals('#c89600')); |
| 62 }); |
| 63 |
| 64 test('uninterpolateNumber returns the reverse of interpolateNumber', () { |
| 65 InterpolateFn interpolator = uninterpolateNumber(1, 10); |
| 66 expect(interpolator(-3.5), equals(-0.5)); |
| 67 expect(interpolator(1), equals(0)); |
| 68 expect(interpolator(5.5), equals(0.5)); |
| 69 expect(interpolator(10), equals(1)); |
| 70 }); |
| 71 |
| 72 test('uninterpolateClamp clamps uninterpolated result to [0, 1]', () { |
| 73 InterpolateFn interpolator = uninterpolateClamp(1, 10); |
| 74 expect(interpolator(-3.5), equals(0)); |
| 75 expect(interpolator(1), equals(0)); |
| 76 expect(interpolator(5.5), equals(0.5)); |
| 77 expect(interpolator(10), equals(1)); |
| 78 expect(interpolator(15), equals(1)); |
| 79 }); |
| 80 |
| 81 test('interpolateTransform correctly interpolates two transforms', () { |
| 82 // Both transform string contain complete information |
| 83 InterpolateFn interpolator = |
| 84 interpolateTransform("translate(10,10)rotate(30)skewX(0.5)scale(1,1)", |
| 85 "translate(100,100)rotate(360)skewX(45)scale(3,3)"); |
| 86 |
| 87 expect(interpolator(0), |
| 88 equals('translate(10,10)scale(1,1)rotate(390)skewX(0.5)')); |
| 89 expect(interpolator(0.5), |
| 90 equals('translate(55.0,55.0)scale(2.0,2.0)rotate(375.0)skewX(22.75)')); |
| 91 expect(interpolator(1), |
| 92 equals('translate(100,100)scale(3,3)rotate(360)skewX(45.0)')); |
| 93 |
| 94 // The first transform string is empty |
| 95 interpolator = interpolateTransform("", |
| 96 "translate(100,100)rotate(360)skewX(45)scale(3,3)"); |
| 97 expect(interpolator(0), |
| 98 equals('translate(0,0)scale(1,1)rotate(360)skewX(0)')); |
| 99 expect(interpolator(0.5), |
| 100 equals('translate(50.0,50.0)scale(2.0,2.0)rotate(360.0)skewX(22.5)')); |
| 101 expect(interpolator(1), |
| 102 equals('translate(100,100)scale(3,3)rotate(360)skewX(45)')); |
| 103 |
| 104 // Two transform strings are not complete |
| 105 interpolator = interpolateTransform("translate(10,10)rotate(30)scale(1,1)", |
| 106 "skewX(45)scale(3,3)"); |
| 107 expect(interpolator(0), |
| 108 equals('translate(10,10)scale(1,1)rotate(30)skewX(0)')); |
| 109 expect(interpolator(0.5), |
| 110 equals('translate(5.0,5.0)scale(2.0,2.0)rotate(15.0)skewX(22.5)')); |
| 111 expect(interpolator(1), |
| 112 equals('translate(0,0)scale(3,3)rotate(0)skewX(45)')); |
| 113 }); |
| 114 |
| 115 test('interpolateZoom correctly interpolates two [Zoom]s', () { |
| 116 // dr != 0 |
| 117 InterpolateFn interpolator = interpolateZoom([3, 5, 2], [1, 10, 4]); |
| 118 |
| 119 List zoom = interpolator(0); |
| 120 expect(zoom[0], closeTo(3, EPSILON)); |
| 121 expect(zoom[1], closeTo(5, EPSILON)); |
| 122 expect(zoom[2], closeTo(2, EPSILON)); |
| 123 |
| 124 zoom = interpolator(0.5); |
| 125 expect(zoom[0], closeTo(2.333333333333334, EPSILON)); |
| 126 expect(zoom[1], closeTo(6.666666666666665, EPSILON)); |
| 127 expect(zoom[2], closeTo(5.811865258054227, EPSILON)); |
| 128 |
| 129 zoom = interpolator(1); |
| 130 expect(zoom[0], closeTo(1, EPSILON)); |
| 131 expect(zoom[1], closeTo(10, EPSILON)); |
| 132 expect(zoom[2], closeTo(4, EPSILON)); |
| 133 |
| 134 // dr == 0 |
| 135 interpolator = interpolateZoom([5, 10, 4], [5, 10, 4]); |
| 136 |
| 137 zoom = interpolator(0); |
| 138 expect(zoom[0], closeTo(5, EPSILON)); |
| 139 expect(zoom[1], closeTo(10, EPSILON)); |
| 140 expect(zoom[2], closeTo(4, EPSILON)); |
| 141 |
| 142 zoom = interpolator(0.5); |
| 143 expect(zoom[0], closeTo(5, EPSILON)); |
| 144 expect(zoom[1], closeTo(10, EPSILON)); |
| 145 expect(zoom[2], closeTo(4, EPSILON)); |
| 146 |
| 147 zoom = interpolator(1); |
| 148 expect(zoom[0], closeTo(5, EPSILON)); |
| 149 expect(zoom[1], closeTo(10, EPSILON)); |
| 150 expect(zoom[2], closeTo(4, EPSILON)); |
| 151 }); |
| 152 } |
OLD | NEW |