♻️ Replaced with own calculator
This commit is contained in:
62
test/core_test.dart
Normal file
62
test/core_test.dart
Normal file
@@ -0,0 +1,62 @@
|
||||
import 'package:test/test.dart';
|
||||
import 'package:simple_math_calc/calculator.dart';
|
||||
import 'package:simple_math_calc/parser.dart';
|
||||
|
||||
void main() {
|
||||
group('解析器测试', () {
|
||||
test('简单加法', () {
|
||||
final parser = Parser('2 + 3');
|
||||
final expr = parser.parse();
|
||||
final result = expr.evaluate();
|
||||
expect(result.toString(), '5');
|
||||
});
|
||||
|
||||
test('乘法和加法优先级', () {
|
||||
final parser = Parser('2 + 3 * 4');
|
||||
final expr = parser.parse();
|
||||
final result = expr.evaluate();
|
||||
expect(result.toString(), '14');
|
||||
});
|
||||
|
||||
test('括号优先级', () {
|
||||
final parser = Parser('(2 + 3) * 4');
|
||||
final expr = parser.parse();
|
||||
final result = expr.evaluate();
|
||||
expect(result.toString(), '20');
|
||||
});
|
||||
|
||||
test('除法', () {
|
||||
final parser = Parser('10 / 2');
|
||||
final expr = parser.parse();
|
||||
final result = expr.evaluate();
|
||||
expect(result.toString(), '5');
|
||||
});
|
||||
|
||||
test('平方根', () {
|
||||
final parser = Parser('sqrt(9)');
|
||||
final expr = parser.parse();
|
||||
final result = expr.evaluate();
|
||||
expect(result.toString(), '3');
|
||||
});
|
||||
});
|
||||
|
||||
group('计算器测试', () {
|
||||
test('分数简化', () {
|
||||
final fraction = FractionExpr(4, 8);
|
||||
final simplified = fraction.simplify();
|
||||
expect(simplified.toString(), '1/2');
|
||||
});
|
||||
|
||||
test('分数加法', () {
|
||||
final expr = AddExpr(FractionExpr(1, 2), FractionExpr(1, 4));
|
||||
final result = expr.evaluate();
|
||||
expect(result.toString(), '3/4');
|
||||
});
|
||||
|
||||
test('分数乘法', () {
|
||||
final expr = MulExpr(FractionExpr(1, 2), FractionExpr(2, 3));
|
||||
final result = expr.evaluate();
|
||||
expect(result.toString(), '1/3');
|
||||
});
|
||||
});
|
||||
}
|
58
test/solver_test.dart
Normal file
58
test/solver_test.dart
Normal file
@@ -0,0 +1,58 @@
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:test/test.dart';
|
||||
import 'package:simple_math_calc/solver.dart';
|
||||
|
||||
void main() {
|
||||
group('求解器测试', () {
|
||||
final solver = SolverService();
|
||||
|
||||
test('简单表达式求值', () {
|
||||
final result = solver.solve('2 + 3 * 4');
|
||||
expect(result.finalAnswer, contains('14'));
|
||||
});
|
||||
|
||||
test('简单方程求解', () {
|
||||
final result = solver.solve('2x + 3 = 7');
|
||||
expect(result.finalAnswer, contains('x = 2'));
|
||||
});
|
||||
|
||||
test('二次方程求解', () {
|
||||
final result = solver.solve('x^2 - 5x + 6 = 0');
|
||||
debugPrint(result.finalAnswer);
|
||||
expect(
|
||||
result.finalAnswer.contains('x_1 = 2') &&
|
||||
result.finalAnswer.contains('x_2 = 3'),
|
||||
true,
|
||||
);
|
||||
});
|
||||
|
||||
test('三角函数求值', () {
|
||||
final result = solver.solve('sin(30)');
|
||||
debugPrint(result.finalAnswer);
|
||||
expect(result.finalAnswer.contains(r'\frac{1}{2}'), true);
|
||||
});
|
||||
|
||||
test('带括号的复杂表达式', () {
|
||||
final result = solver.solve('(2 + 3) * 4');
|
||||
expect(result.finalAnswer, contains('20'));
|
||||
});
|
||||
|
||||
test('括号展开的二次方程', () {
|
||||
final result = solver.solve('(x+8)(x+1)=-12');
|
||||
debugPrint('Result for (x+8)(x+1)=-12: ${result.finalAnswer}');
|
||||
// 这个方程应该被识别为一元二次方程,正确解应该是 x = -4 或 x = -5
|
||||
expect(
|
||||
result.steps.any((step) => step.title == '整理方程'),
|
||||
true,
|
||||
reason: '方程应被识别为一元二次方程并进行整理',
|
||||
);
|
||||
expect(
|
||||
(result.finalAnswer.contains('-4') &&
|
||||
result.finalAnswer.contains('-5')) ||
|
||||
result.finalAnswer.contains('x = -4') ||
|
||||
result.finalAnswer.contains('x = -5'),
|
||||
true,
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user