animation_test.dart 1.6 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
class TestSchedulerBinding extends BindingBase with SchedulerBinding { }
Ian Hickson's avatar
Ian Hickson committed
10

11
void main() {
12
  SchedulerBinding scheduler = new TestSchedulerBinding();
Ian Hickson's avatar
Ian Hickson committed
13

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

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

    bool firstCallbackRan = false;
    bool secondCallbackRan = false;

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

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

39 40
    scheduler.scheduleFrameCallback(firstCallback);
    secondId = scheduler.scheduleFrameCallback(secondCallback);
41

42
    scheduler.handleBeginFrame(const Duration(milliseconds: 16));
43 44 45 46 47 48 49

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

    firstCallbackRan = false;
    secondCallbackRan = false;

50
    scheduler.handleBeginFrame(const Duration(milliseconds: 32));
51 52 53 54 55

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