OLD | NEW |
(Empty) | |
| 1 library animation_optimizer_spec; |
| 2 |
| 3 import '../_specs.dart'; |
| 4 |
| 5 main() { |
| 6 describe('AnimationLoop', () { |
| 7 TestBed _; |
| 8 AnimationOptimizer optimizer; |
| 9 beforeEach(inject((TestBed tb, Expando expand) { |
| 10 _ = tb; |
| 11 optimizer = new AnimationOptimizer(expand); |
| 12 })); |
| 13 |
| 14 it('should prevent animations on child elements', () { |
| 15 var animation = new NoOpAnimation(); |
| 16 _.compile('<div><div></div></div>'); |
| 17 |
| 18 |
| 19 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 20 optimizer.track(animation, _.rootElement); |
| 21 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 22 optimizer.forget(animation); |
| 23 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 24 }); |
| 25 |
| 26 it('should allow multiple animations on the same element', () { |
| 27 var animation1 = new NoOpAnimation(); |
| 28 var animation2 = new NoOpAnimation(); |
| 29 _.compile('<div><div></div></div>'); |
| 30 |
| 31 expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy(); |
| 32 optimizer.track(animation1, _.rootElement); |
| 33 expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy(); |
| 34 optimizer.track(animation2, _.rootElement); |
| 35 expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy(); |
| 36 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 37 optimizer.forget(animation1); |
| 38 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 39 optimizer.forget(animation2); |
| 40 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 41 }); |
| 42 |
| 43 it('should always animate an element', () { |
| 44 _.compile('<div><div></div></div>'); |
| 45 optimizer.alwaysAnimate(_.rootElement.children[0], "never"); |
| 46 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 47 optimizer.alwaysAnimate(_.rootElement.children[0], "always"); |
| 48 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 49 optimizer.alwaysAnimate(_.rootElement.children[0], "auto"); |
| 50 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 51 }); |
| 52 |
| 53 it('alwaysAnimate should not affect children', () { |
| 54 _.compile('<div><div></div></div>'); |
| 55 optimizer.alwaysAnimate(_.rootElement, "never"); |
| 56 expect(optimizer.shouldAnimate(_.rootElement)).toBeFalsy(); |
| 57 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 58 optimizer.alwaysAnimate(_.rootElement, "always"); |
| 59 expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy(); |
| 60 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 61 optimizer.alwaysAnimate(_.rootElement, "auto"); |
| 62 expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy(); |
| 63 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 64 }); |
| 65 |
| 66 |
| 67 it('alwaysAnimateChildren should not affect element', () { |
| 68 _.compile('<div><div></div></div>'); |
| 69 |
| 70 optimizer.alwaysAnimateChildren(_.rootElement, "never"); |
| 71 expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy(); |
| 72 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 73 |
| 74 optimizer.alwaysAnimateChildren(_.rootElement, "always"); |
| 75 expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy(); |
| 76 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 77 |
| 78 optimizer.alwaysAnimateChildren(_.rootElement, "auto"); |
| 79 expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy(); |
| 80 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 81 }); |
| 82 |
| 83 it('alwaysAnimate should take priority over alwaysAnimateChildren', () { |
| 84 _.compile('<div><div></div></div>'); |
| 85 |
| 86 optimizer.alwaysAnimateChildren(_.rootElement, "never"); |
| 87 optimizer.alwaysAnimate(_.rootElement.children[0], "always"); |
| 88 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 89 |
| 90 optimizer.alwaysAnimateChildren(_.rootElement, "always"); |
| 91 optimizer.alwaysAnimate(_.rootElement.children[0], "never"); |
| 92 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 93 }); |
| 94 |
| 95 it('alwaysAnimate should take priority over running animations', () { |
| 96 _.compile('<div><div></div></div>'); |
| 97 var animation = new NoOpAnimation(); |
| 98 |
| 99 optimizer.track(animation, _.rootElement); |
| 100 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 101 |
| 102 optimizer.alwaysAnimate(_.rootElement.children[0], "always"); |
| 103 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 104 |
| 105 optimizer.alwaysAnimate(_.rootElement.children[0], "auto"); |
| 106 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 107 |
| 108 optimizer.forget(animation); |
| 109 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 110 }); |
| 111 |
| 112 it('alwaysAnimateChildren should take priority over running animations', |
| 113 () { |
| 114 _.compile('<div><div></div></div>'); |
| 115 var animation = new NoOpAnimation(); |
| 116 |
| 117 optimizer.track(animation, _.rootElement); |
| 118 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 119 |
| 120 optimizer.alwaysAnimateChildren(_.rootElement, "always"); |
| 121 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 122 |
| 123 optimizer.alwaysAnimateChildren(_.rootElement, "auto"); |
| 124 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 125 |
| 126 optimizer.forget(animation); |
| 127 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy(); |
| 128 |
| 129 optimizer.alwaysAnimateChildren(_.rootElement, "never"); |
| 130 expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy(); |
| 131 }); |
| 132 |
| 133 |
| 134 it('alwaysAnimateChildren when nested should prioritize the closest' |
| 135 +'element up the tree.', |
| 136 () { |
| 137 _.compile('<div><div><div></div></div></div>'); |
| 138 |
| 139 optimizer.alwaysAnimateChildren(_.rootElement, "always"); |
| 140 expect(optimizer.shouldAnimate(_.rootElement.children[0].children[0])) |
| 141 .toBeTruthy(); |
| 142 |
| 143 optimizer.alwaysAnimateChildren(_.rootElement.children[0], "never"); |
| 144 expect(optimizer.shouldAnimate(_.rootElement.children[0].children[0])) |
| 145 .toBeFalsy(); |
| 146 |
| 147 |
| 148 optimizer.alwaysAnimateChildren(_.rootElement, "never"); |
| 149 optimizer.alwaysAnimateChildren(_.rootElement.children[0], "always"); |
| 150 expect(optimizer.shouldAnimate(_.rootElement.children[0].children[0])) |
| 151 .toBeTruthy(); |
| 152 }); |
| 153 }); |
| 154 } |
OLD | NEW |