|
@@ -6,6 +6,7 @@ import 'package:flutter_test/flutter_test.dart';
|
|
|
|
|
|
|
|
import 'package:cal/calculator_page.dart';
|
|
import 'package:cal/calculator_page.dart';
|
|
|
import 'package:cal/console_page.dart';
|
|
import 'package:cal/console_page.dart';
|
|
|
|
|
+import 'package:cal/expr_editor.dart';
|
|
|
import 'package:cal/main.dart';
|
|
import 'package:cal/main.dart';
|
|
|
import 'package:cal/tools_page.dart';
|
|
import 'package:cal/tools_page.dart';
|
|
|
|
|
|
|
@@ -190,6 +191,40 @@ void main() {
|
|
|
expect(find.byKey(const ValueKey('expr-caret')), findsOneWidget);
|
|
expect(find.byKey(const ValueKey('expr-caret')), findsOneWidget);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ testWidgets('点节点左半边能把光标放回最前面', (tester) async {
|
|
|
|
|
+ await pumpApp(tester);
|
|
|
|
|
+ await press(tester, 'x');
|
|
|
|
|
+ await press(tester, '+');
|
|
|
|
|
+ await press(tester, '1');
|
|
|
|
|
+ expect(find.text('x+1'), findsOneWidget);
|
|
|
|
|
+
|
|
|
|
|
+ // 点 x 的左半边 → 光标应当落到 x 前面
|
|
|
|
|
+ final xRect = tester.getRect(
|
|
|
|
|
+ find.descendant(of: find.byType(ExprEditor), matching: find.text('x')),
|
|
|
|
|
+ );
|
|
|
|
|
+ await tester.tapAt(Offset(xRect.left + 1, xRect.center.dy));
|
|
|
|
|
+ await tester.pumpAndSettle();
|
|
|
|
|
+
|
|
|
|
|
+ // 再打一个 2:插到最前面才是 2x+1;若光标落在 x 之后就成 x2+1
|
|
|
|
|
+ await press(tester, '2');
|
|
|
|
|
+ expect(find.text('2x+1'), findsOneWidget);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ testWidgets('点节点右半边把光标放到它后面', (tester) async {
|
|
|
|
|
+ await pumpApp(tester);
|
|
|
|
|
+ await press(tester, 'x');
|
|
|
|
|
+ await press(tester, '+');
|
|
|
|
|
+
|
|
|
|
|
+ final xRect = tester.getRect(
|
|
|
|
|
+ find.descendant(of: find.byType(ExprEditor), matching: find.text('x')),
|
|
|
|
|
+ );
|
|
|
|
|
+ await tester.tapAt(Offset(xRect.right - 1, xRect.center.dy));
|
|
|
|
|
+ await tester.pumpAndSettle();
|
|
|
|
|
+
|
|
|
|
|
+ await press(tester, '2');
|
|
|
|
|
+ expect(find.text('x2+'), findsOneWidget);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
testWidgets('默认精确:求值原样送出去', (tester) async {
|
|
testWidgets('默认精确:求值原样送出去', (tester) async {
|
|
|
await pumpApp(tester);
|
|
await pumpApp(tester);
|
|
|
await press(tester, 'sin');
|
|
await press(tester, 'sin');
|