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