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