animation_test.dart 1.59 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1 2 3 4
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5
import 'package:flutter/foundation.dart';
6
import 'package:flutter/scheduler.dart';
7 8
import 'package:test/test.dart';

9 10
import 'scheduler_tester.dart';

11
class TestSchedulerBinding extends BindingBase with SchedulerBinding { }
Ian Hickson's avatar
Ian Hickson committed
12

13
void main() {
14
  final SchedulerBinding scheduler = new TestSchedulerBinding();
Ian Hickson's avatar
Ian Hickson committed
15

16 17 18 19
  test("Check for a time dilation being in effect", () {
    expect(timeDilation, equals(1.0));
  });

20 21 22 23 24 25
  test("Can cancel queued callback", () {
    int secondId;

    bool firstCallbackRan = false;
    bool secondCallbackRan = false;

26
    void firstCallback(Duration timeStamp) {
27 28
      expect(firstCallbackRan, isFalse);
      expect(secondCallbackRan, isFalse);
29
      expect(timeStamp.inMilliseconds, equals(0));
30
      firstCallbackRan = true;
31
      scheduler.cancelFrameCallbackWithId(secondId);
32 33
    }

34
    void secondCallback(Duration timeStamp) {
35 36
      expect(firstCallbackRan, isTrue);
      expect(secondCallbackRan, isFalse);
37
      expect(timeStamp.inMilliseconds, equals(0));
38 39 40
      secondCallbackRan = true;
    }

41 42
    scheduler.scheduleFrameCallback(firstCallback);
    secondId = scheduler.scheduleFrameCallback(secondCallback);
43

44
    tick(const Duration(milliseconds: 16));
45 46 47 48 49 50 51

    expect(firstCallbackRan, isTrue);
    expect(secondCallbackRan, isFalse);

    firstCallbackRan = false;
    secondCallbackRan = false;

52
    tick(const Duration(milliseconds: 32));
53 54 55 56 57

    expect(firstCallbackRan, isFalse);
    expect(secondCallbackRan, isFalse);
  });
}