// Copyright 2014 The Flutter 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/rendering.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { const Rect rect = Rect.fromLTWH(100, 100, 200, 500); const Offset outsideTopLeft = Offset(50, 50); const Offset outsideLeft = Offset(50, 200); const Offset outsideBottomLeft = Offset(50, 700); const Offset outsideTop = Offset(200, 50); const Offset outsideTopRight = Offset(350, 50); const Offset outsideRight = Offset(350, 200); const Offset outsideBottomRight = Offset(350, 700); const Offset outsideBottom = Offset(200, 700); const Offset center = Offset(150, 300); group('selection utils', () { test('selectionBasedOnRect works', () { expect( SelectionUtils.getResultBasedOnRect(rect, outsideTopLeft), SelectionResult.previous, ); expect( SelectionUtils.getResultBasedOnRect(rect, outsideLeft), SelectionResult.previous, ); expect( SelectionUtils.getResultBasedOnRect(rect, outsideBottomLeft), SelectionResult.next, ); expect( SelectionUtils.getResultBasedOnRect(rect, outsideTop), SelectionResult.previous, ); expect( SelectionUtils.getResultBasedOnRect(rect, outsideTopRight), SelectionResult.previous, ); expect( SelectionUtils.getResultBasedOnRect(rect, outsideRight), SelectionResult.next, ); expect( SelectionUtils.getResultBasedOnRect(rect, outsideBottomRight), SelectionResult.next, ); expect( SelectionUtils.getResultBasedOnRect(rect, outsideBottom), SelectionResult.next, ); expect( SelectionUtils.getResultBasedOnRect(rect, center), SelectionResult.end, ); }); test('adjustDragOffset works', () { // ltr expect(SelectionUtils.adjustDragOffset(rect, outsideTopLeft), rect.topLeft); expect(SelectionUtils.adjustDragOffset(rect, outsideLeft), rect.topLeft); expect(SelectionUtils.adjustDragOffset(rect, outsideBottomLeft), rect.bottomRight); expect(SelectionUtils.adjustDragOffset(rect, outsideTop), rect.topLeft); expect(SelectionUtils.adjustDragOffset(rect, outsideTopRight), rect.topLeft); expect(SelectionUtils.adjustDragOffset(rect, outsideRight), rect.bottomRight); expect(SelectionUtils.adjustDragOffset(rect, outsideBottomRight), rect.bottomRight); expect(SelectionUtils.adjustDragOffset(rect, outsideBottom), rect.bottomRight); expect(SelectionUtils.adjustDragOffset(rect, center), center); // rtl expect(SelectionUtils.adjustDragOffset(rect, outsideTopLeft, direction: TextDirection.rtl), rect.topRight); expect(SelectionUtils.adjustDragOffset(rect, outsideLeft, direction: TextDirection.rtl), rect.topRight); expect(SelectionUtils.adjustDragOffset(rect, outsideBottomLeft, direction: TextDirection.rtl), rect.bottomLeft); expect(SelectionUtils.adjustDragOffset(rect, outsideTop, direction: TextDirection.rtl), rect.topRight); expect(SelectionUtils.adjustDragOffset(rect, outsideTopRight, direction: TextDirection.rtl), rect.topRight); expect(SelectionUtils.adjustDragOffset(rect, outsideRight, direction: TextDirection.rtl), rect.bottomLeft); expect(SelectionUtils.adjustDragOffset(rect, outsideBottomRight, direction: TextDirection.rtl), rect.bottomLeft); expect(SelectionUtils.adjustDragOffset(rect, outsideBottom, direction: TextDirection.rtl), rect.bottomLeft); expect(SelectionUtils.adjustDragOffset(rect, center, direction: TextDirection.rtl), center); }); }); }