multitap_test.dart 2.15 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// Copyright 2017 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.

import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/gestures.dart';

import 'gesture_tester.dart';

class TestDrag extends Drag {
}

void main() {
  setUp(ensureGestureBinding);

  testGesture('Should recognize pan', (GestureTester tester) {
17
    final MultiTapGestureRecognizer tap = new MultiTapGestureRecognizer(longTapDelay: kLongPressTimeout);
18

19
    final List<String> log = <String>[];
20 21 22 23 24 25 26 27

    tap.onTapDown = (int pointer, TapDownDetails details) { log.add('tap-down $pointer'); };
    tap.onTapUp = (int pointer, TapUpDetails details) { log.add('tap-up $pointer'); };
    tap.onTap = (int pointer) { log.add('tap $pointer'); };
    tap.onLongTapDown = (int pointer, TapDownDetails details) { log.add('long-tap-down $pointer'); };
    tap.onTapCancel = (int pointer) { log.add('tap-cancel $pointer'); };


28
    final TestPointer pointer5 = new TestPointer(5);
29
    final PointerDownEvent down5 = pointer5.down(const Offset(10.0, 10.0));
30 31 32 33 34 35 36
    tap.addPointer(down5);
    tester.closeArena(5);
    expect(log, <String>['tap-down 5']);
    log.clear();
    tester.route(down5);
    expect(log, isEmpty);

37
    final TestPointer pointer6 = new TestPointer(6);
38
    final PointerDownEvent down6 = pointer6.down(const Offset(15.0, 15.0));
39 40 41 42 43 44 45
    tap.addPointer(down6);
    tester.closeArena(6);
    expect(log, <String>['tap-down 6']);
    log.clear();
    tester.route(down6);
    expect(log, isEmpty);

46
    tester.route(pointer5.move(const Offset(11.0, 12.0)));
47 48
    expect(log, isEmpty);

49
    tester.route(pointer6.move(const Offset(14.0, 13.0)));
50 51 52 53 54 55 56 57 58 59 60 61 62
    expect(log, isEmpty);

    tester.route(pointer5.up());
    expect(log, <String>[
      'tap-up 5',
      'tap 5',
    ]);
    log.clear();

    tester.async.elapse(kLongPressTimeout + kPressTimeout);
    expect(log, <String>['long-tap-down 6']);
    log.clear();

63
    tester.route(pointer6.move(const Offset(4.0, 3.0)));
64 65 66 67 68 69 70 71 72
    expect(log, <String>['tap-cancel 6']);
    log.clear();

    tester.route(pointer6.up());
    expect(log, isEmpty);

    tap.dispose();
  });
}