• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2019 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5import 'package:flutter/gestures.dart';
6import 'package:vector_math/vector_math_64.dart';
7
8import '../flutter_test_alternative.dart';
9
10void main() {
11  test('wrpped HitTestResult gets HitTestEntry added to wrapping HitTestResult', () async {
12    final HitTestEntry entry1 = HitTestEntry(_DummyHitTestTarget());
13    final HitTestEntry entry2 = HitTestEntry(_DummyHitTestTarget());
14    final HitTestEntry entry3 = HitTestEntry(_DummyHitTestTarget());
15    final Matrix4 transform = Matrix4.translationValues(40.0, 150.0, 0.0);
16
17    final HitTestResult wrapped = MyHitTestResult()
18      ..publicPushTransform(transform);
19    wrapped.add(entry1);
20    expect(wrapped.path, equals(<HitTestEntry>[entry1]));
21    expect(entry1.transform, transform);
22
23    final HitTestResult wrapping = HitTestResult.wrap(wrapped);
24    expect(wrapping.path, equals(<HitTestEntry>[entry1]));
25    expect(wrapping.path, same(wrapped.path));
26
27    wrapping.add(entry2);
28    expect(wrapping.path, equals(<HitTestEntry>[entry1, entry2]));
29    expect(wrapped.path, equals(<HitTestEntry>[entry1, entry2]));
30    expect(entry2.transform, transform);
31
32    wrapped.add(entry3);
33    expect(wrapping.path, equals(<HitTestEntry>[entry1, entry2, entry3]));
34    expect(wrapped.path, equals(<HitTestEntry>[entry1, entry2, entry3]));
35    expect(entry3.transform, transform);
36  });
37}
38
39class _DummyHitTestTarget implements HitTestTarget {
40  @override
41  void handleEvent(PointerEvent event, HitTestEntry entry) {
42    // Nothing to do.
43  }
44}
45
46class MyHitTestResult extends HitTestResult {
47  void publicPushTransform(Matrix4 transform) => pushTransform(transform);
48}
49