63 lines
1.7 KiB
Dart
63 lines
1.7 KiB
Dart
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');
|
|
});
|
|
});
|
|
}
|