// 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. import 'package:flutter_test/flutter_test.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/widgets.dart'; import 'package:test/test.dart'; void main() { test('Can tap a hyperlink', () { testWidgets((WidgetTester tester) { bool didTapLeft = false; TapGestureRecognizer tapLeft = new TapGestureRecognizer() ..onTap = () { didTapLeft = true; }; bool didTapRight = false; TapGestureRecognizer tapRight = new TapGestureRecognizer() ..onTap = () { didTapRight = true; }; Key textKey = new Key('text'); tester.pumpWidget( new Center( child: new RichText( key: textKey, text: new TextSpan( children: <TextSpan>[ new TextSpan( text: 'xxxxxxxx', recognizer: tapLeft ), new TextSpan(text: 'yyyyyyyy'), new TextSpan( text: 'zzzzzzzzz', recognizer: tapRight ), ] ) ) ) ); RenderBox box = tester.renderObjectOf(find.byKey(textKey)); expect(didTapLeft, isFalse); expect(didTapRight, isFalse); tester.tapAt(box.localToGlobal(Point.origin) + new Offset(2.0, 2.0)); expect(didTapLeft, isTrue); expect(didTapRight, isFalse); didTapLeft = false; tester.tapAt(box.localToGlobal(Point.origin) + new Offset(30.0, 2.0)); expect(didTapLeft, isTrue); expect(didTapRight, isFalse); didTapLeft = false; tester.tapAt(box.localToGlobal(new Point(box.size.width, 0.0)) + new Offset(-2.0, 2.0)); expect(didTapLeft, isFalse); expect(didTapRight, isTrue); }); }); }