• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5import 'package:flutter_gallery/demo/calculator/logic.dart';
6
7import 'package:test_api/test_api.dart' hide TypeMatcher, isInstanceOf;
8
9void main() {
10  test('Test order of operations: 12 + 3 * 4 = 24', () {
11    CalcExpression expression = CalcExpression.empty();
12    expression = expression.appendDigit(1);
13    expression = expression.appendDigit(2);
14    expression = expression.appendOperation(Operation.Addition);
15    expression = expression.appendDigit(3);
16    expression = expression.appendOperation(Operation.Multiplication);
17    expression = expression.appendDigit(4);
18    expression = expression.computeResult();
19    expect(expression.state, equals(ExpressionState.Result));
20    expect(expression.toString(), equals('24'));
21  });
22
23  test('Test floating point 0.1 + 0.2 = 0.3', () {
24    CalcExpression expression = CalcExpression.empty();
25    expression = expression.appendDigit(0);
26    expression = expression.appendPoint();
27    expression = expression.appendDigit(1);
28    expression = expression.appendOperation(Operation.Addition);
29    expression = expression.appendDigit(0);
30    expression = expression.appendPoint();
31    expression = expression.appendDigit(2);
32    expression = expression.computeResult();
33    expect(expression.state, equals(ExpressionState.Result));
34    expect(expression.toString(), equals('0.3'));
35  });
36
37  test('Test floating point 1.0/10.0 = 0.1', () {
38    CalcExpression expression = CalcExpression.empty();
39    expression = expression.appendDigit(1);
40    expression = expression.appendPoint();
41    expression = expression.appendDigit(0);
42    expression = expression.appendOperation(Operation.Division);
43    expression = expression.appendDigit(1);
44    expression = expression.appendDigit(0);
45    expression = expression.appendPoint();
46    expression = expression.appendDigit(0);
47    expression = expression.computeResult();
48    expect(expression.state, equals(ExpressionState.Result));
49    expect(expression.toString(), equals('0.1'));
50  });
51
52  test('Test 1/0 = Infinity', () {
53    CalcExpression expression = CalcExpression.empty();
54    expression = expression.appendDigit(1);
55    expression = expression.appendOperation(Operation.Division);
56    expression = expression.appendDigit(0);
57    expression = expression.computeResult();
58    expect(expression.state, equals(ExpressionState.Result));
59    expect(expression.toString(), equals('Infinity'));
60  });
61
62  test('Test use result in next calculation: 1 + 1 = 2 + 1 = 3 + 1 = 4', () {
63    CalcExpression expression = CalcExpression.empty();
64    expression = expression.appendDigit(1);
65    expression = expression.appendOperation(Operation.Addition);
66    expression = expression.appendDigit(1);
67    expression = expression.computeResult();
68    expression = expression.appendOperation(Operation.Addition);
69    expression = expression.appendDigit(1);
70    expression = expression.computeResult();
71    expression = expression.appendOperation(Operation.Addition);
72    expression = expression.appendDigit(1);
73    expression = expression.computeResult();
74    expect(expression.state, equals(ExpressionState.Result));
75    expect(expression.toString(), equals('4'));
76  });
77
78  test('Test minus -3 - -2 = -1', () {
79    CalcExpression expression = CalcExpression.empty();
80    expression = expression.appendMinus();
81    expression = expression.appendDigit(3);
82    expression = expression.appendMinus();
83    expression = expression.appendMinus();
84    expression = expression.appendDigit(2);
85    expression = expression.computeResult();
86    expect(expression.state, equals(ExpressionState.Result));
87    expect(expression.toString(), equals('-1'));
88  });
89}
90