| Index: third_party/pkg/angular/test/animate/animation_optimizer_spec.dart
|
| diff --git a/third_party/pkg/angular/test/animate/animation_optimizer_spec.dart b/third_party/pkg/angular/test/animate/animation_optimizer_spec.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d1be072c051c2aa06e458dbe727015feb4f2cd36
|
| --- /dev/null
|
| +++ b/third_party/pkg/angular/test/animate/animation_optimizer_spec.dart
|
| @@ -0,0 +1,154 @@
|
| +library animation_optimizer_spec;
|
| +
|
| +import '../_specs.dart';
|
| +
|
| +main() {
|
| + describe('AnimationLoop', () {
|
| + TestBed _;
|
| + AnimationOptimizer optimizer;
|
| + beforeEach(inject((TestBed tb, Expando expand) {
|
| + _ = tb;
|
| + optimizer = new AnimationOptimizer(expand);
|
| + }));
|
| +
|
| + it('should prevent animations on child elements', () {
|
| + var animation = new NoOpAnimation();
|
| + _.compile('<div><div></div></div>');
|
| +
|
| +
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + optimizer.track(animation, _.rootElement);
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| + optimizer.forget(animation);
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + });
|
| +
|
| + it('should allow multiple animations on the same element', () {
|
| + var animation1 = new NoOpAnimation();
|
| + var animation2 = new NoOpAnimation();
|
| + _.compile('<div><div></div></div>');
|
| +
|
| + expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy();
|
| + optimizer.track(animation1, _.rootElement);
|
| + expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy();
|
| + optimizer.track(animation2, _.rootElement);
|
| + expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy();
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| + optimizer.forget(animation1);
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| + optimizer.forget(animation2);
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + });
|
| +
|
| + it('should always animate an element', () {
|
| + _.compile('<div><div></div></div>');
|
| + optimizer.alwaysAnimate(_.rootElement.children[0], "never");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| + optimizer.alwaysAnimate(_.rootElement.children[0], "always");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + optimizer.alwaysAnimate(_.rootElement.children[0], "auto");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + });
|
| +
|
| + it('alwaysAnimate should not affect children', () {
|
| + _.compile('<div><div></div></div>');
|
| + optimizer.alwaysAnimate(_.rootElement, "never");
|
| + expect(optimizer.shouldAnimate(_.rootElement)).toBeFalsy();
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + optimizer.alwaysAnimate(_.rootElement, "always");
|
| + expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy();
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + optimizer.alwaysAnimate(_.rootElement, "auto");
|
| + expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy();
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + });
|
| +
|
| +
|
| + it('alwaysAnimateChildren should not affect element', () {
|
| + _.compile('<div><div></div></div>');
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "never");
|
| + expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy();
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "always");
|
| + expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy();
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "auto");
|
| + expect(optimizer.shouldAnimate(_.rootElement)).toBeTruthy();
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + });
|
| +
|
| + it('alwaysAnimate should take priority over alwaysAnimateChildren', () {
|
| + _.compile('<div><div></div></div>');
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "never");
|
| + optimizer.alwaysAnimate(_.rootElement.children[0], "always");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "always");
|
| + optimizer.alwaysAnimate(_.rootElement.children[0], "never");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| + });
|
| +
|
| + it('alwaysAnimate should take priority over running animations', () {
|
| + _.compile('<div><div></div></div>');
|
| + var animation = new NoOpAnimation();
|
| +
|
| + optimizer.track(animation, _.rootElement);
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| +
|
| + optimizer.alwaysAnimate(_.rootElement.children[0], "always");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| +
|
| + optimizer.alwaysAnimate(_.rootElement.children[0], "auto");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| +
|
| + optimizer.forget(animation);
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| + });
|
| +
|
| + it('alwaysAnimateChildren should take priority over running animations',
|
| + () {
|
| + _.compile('<div><div></div></div>');
|
| + var animation = new NoOpAnimation();
|
| +
|
| + optimizer.track(animation, _.rootElement);
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "always");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "auto");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| +
|
| + optimizer.forget(animation);
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeTruthy();
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "never");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0])).toBeFalsy();
|
| + });
|
| +
|
| +
|
| + it('alwaysAnimateChildren when nested should prioritize the closest'
|
| + +'element up the tree.',
|
| + () {
|
| + _.compile('<div><div><div></div></div></div>');
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "always");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0].children[0]))
|
| + .toBeTruthy();
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement.children[0], "never");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0].children[0]))
|
| + .toBeFalsy();
|
| +
|
| +
|
| + optimizer.alwaysAnimateChildren(_.rootElement, "never");
|
| + optimizer.alwaysAnimateChildren(_.rootElement.children[0], "always");
|
| + expect(optimizer.shouldAnimate(_.rootElement.children[0].children[0]))
|
| + .toBeTruthy();
|
| + });
|
| + });
|
| +}
|
|
|