15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (c) 2012 The Chromium Authors. All rights reserved. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) **/ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)window.runTests = function(log) { 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var run = window.calculatorTestRun.create(); 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test fixes for <http://crbug.com/156448>: 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test('Twenty eight can be divided by three', '28 / 3 = [9.3333333]'); 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test('Twenty nine can be divided by three', '29 / 3 = [9.6666667]'); 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test('Thirty can be divided by three', '30 / 3 = [10]'); 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test('Thirty one can be divided by three', '31 / 3 = [10.333333]'); 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test('Thirty two can be divided by three', '32 / 3 = [10.666667]'); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test('Thirty three can be divided by three', '33 / 3 = [11]'); 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test fixes for <http://crbug.com/156449>: 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Equals without operator results in operand value', 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '123 = [123]'); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Operations without operands uses default operands', 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '2 + = [[2 _ 2][_ + 2][][4 _ 4]]'); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Test the display for the expected output. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Successive operators replace each other.', 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '123 + - * / [123 / _] and no previous [* + *]'); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test fixes for <http://crbug.com/156450>: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Operand can be erased and replaced', 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '123 + 456 < < < < 789 = [789]'); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Test the display for the expected output. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Operators can be erased and replaced.', 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '123 + 456 < < < < < * 2 = [246]'); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Test the display for the expected output. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Erase is ignored after equals.', '123 + 456 = < [579]'); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Erase is ignored after zero result.', '123 - 123 = < [9]'); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Test the display for the expected output. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Erasing an operand makes it blank.', 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '123 + 456 < < < [_ + _]'); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test fixes for <http://crbug.com/156451>: 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Negation applies to zero', '~ [[-0]]'); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Negation applies before input', '~ 123 = [[-123]]'); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Negation applies after input is erased', 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '123 < < < ~ 456 [[-456]]'); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Negation is preserved when input is erased', 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '123 ~ < < < 456 [[-456]]'); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Negation supports small values', 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '0.0000001 ~ [[-0.0000001]]'); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Addition resets negated zeros', '~ + [_ + [0]]'); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Subtraction resets negated zeros', '~ - [_ - [0]]'); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Multiplication resets negated zeros', '~ * [_ * [0]]'); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Division resets negated zeros', '~ / [_ / [0]]'); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Equals resets negated zeros', '~ = [0 _ [0]]'); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test fixes for <http://crbug.com/156452>: 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Test the display for the expected output. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Make the test utilities support 'error'. 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Errors results are spelled out', '1 / 0 = [[error]]'); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Addition treats errors as zero', 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '1 / 0 = [error] + [0 + [0]] 123 = [123]'); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Subtraction treats errors as zero', 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '1 / 0 = [error] - [0 - [0]] 123 = [-123]'); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Multiplication treats errors as zero', 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '1 / 0 = [error] * [0 * [0]] 123 = [0]'); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Division treats errors as zero', 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '1 / 0 = [error] / [0 / [0]] 123 = [0]'); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Equals treats errors as zero', 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '1 / 0 = [error] = [0]'); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test fixes for <http://crbug.com/156453>: 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Common operations are reversible', 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '1 / 3 * 3 = [[1]]'); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Large numbers are displayed as exponentials', 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '12345678 * 10 = [[1.23456e8]]'); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // run.test('Small numbers are displayed as exponentials', 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '0.0000001 / 10 = [[1e-8]]'); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // --------------------------------------------------------------------------- 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Other tests. 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Organize and beef up these tests. 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Test {nega,posi}tive {under,over}flows. 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Initialization", function(controller) { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.verify(null, controller.model.accumulator, 'Accumulator'); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.verify(null, controller.model.operator, 'Operator'); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.verify(null, controller.model.operand, 'Operand'); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.verify(null, controller.model.defaults.operator, 'Default Operator'); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.verify(null, controller.model.defaults.operand, 'Defaults Operand'); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("AC", '1 + 2 = [3] 4 A [[_ _ 0]]'); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("back", '1 + 2 < [_ + _] < [_ _ _] < [_ _ 0]'); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt@chromium.org): The previous lines should be: 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '1 + 2 < [_ + _] < [_ _ 0] < [_ _ 0]' 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt@chromium.org): Test more AC, C, back 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test A", 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '2 [_ _ 2] + [[2 _ 2][_ + _]] = [[2 _ 2][_ + _][][4 _ 4]]' + 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ' + [[2 _ 2][_ + _][][4 _ 4][_ + _]]' + 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ' = [[2 _ 2][_ + _][][4 _ 4][_ + _][][8 _ 8]]' + 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ' = [[2 _ 2][_ + _][][4 _ 4][_ + _][][8 _ 8][][12 _ 12]]'); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt@chromium.org): The previous lines should be: 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '2 [_ _ 2] + [[2 _ 2][_ + _]] = [[2 _ 2][_ + 2][][4 _ 4]]' + 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ' + [[2 _ 2][_ + 2][][4 _ 4][_ + _]]' + 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ' = [[2 _ 2][_ + 2][][4 _ 4][_ + 4][][8 _ 8]]' + 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ' = [[2 _ 2][_ + 2][][4 _ 4][_ + 4][][8 _ 8][][12 _ 12]]'); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test B", '2 * = [4] * [_ * _] = [16] = [64]'); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test C", '0.020202020 [_ _ 0.0202020==]'); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test D", '.2 [_ _ 0 .2]'); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test E", '0.00000014 [_ _ 0.0000001=]'); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test F", '0.10000004 [_ _ 0.1000000=]'); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test G", '0.12312312 [_ _ 0.1231231=]'); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test H", '1.231231234 [_ _ 1.2312312==]'); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test I", '123.1231234 [_ _ 123.12312==]'); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test J", '123123.1234 [_ _ 123123.12==]'); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test K", '12312312.34 [_ _ 12312312.==]'); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test L", '12312312.04 [_ _ 12312312.==]'); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test M", '1231231234 [_ _ 12312312==]'); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test N", '1 + 1 + [[1 _ 1][2 + 1][_ + _]] = [4]'); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Miscellaneous Test O", '1 + 1 [_ + 1] 2 [_ + 1 2]'); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Positive + Positive", '82959 + 4 = [82963]'); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Positive + Negative", '123 + 456~ = [-333]'); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Negative + Positive", '502~ + 385 = [-117]'); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Negative + Negative", '4296~ + 32~ = [-4328]'); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Positive + Zero", '23650 + 0 = [23650]'); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Negative + Zero", '489719~ + 0 = [-489719]'); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Zero + Positive", '0 + 4296 = [4296]'); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Zero + Negative", '0 + 322~ = [-322]'); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Zero + Zero", '0 + 0 = [0]'); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Addition Chain", 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '+ 5 + 3~ + [2] 2~ + [0] 1~ + [-1] 3 + [2] 0 = [2]'); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Positive - Positive", '4534 - 327 = [4207]'); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Subtraction Chain", 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '- 5 - [-5] 3~ - [-2] 2~ - [0] 1~ - [1] 3 - [-2] 0 = [-2]'); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Positive * Positive", '7459 * 660 = [4922940]'); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Multiplication Chain", 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '* 5 = [0] 1 * [1] 5 * [5] 2~ ' + 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '* [-10] 1.5 * [-15] 1~ * [15] 0 = [0]'); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Positive / Positive", '181 / 778 = [0.2326478]'); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Division Chain", 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '/ 5 = [0] 1 / [1] 5 / [0.2] 2~ ' + 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '/ [-0.1] 0.1 / [-1] 1~ / [1] 0 = [E]'); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Positive Decimal Plus Positive Decimal", 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '7.48 + 8.2 = [15.68]'); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Decimals with Leading Zeros", 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '0.0023 + 0.082 = [0.0843]'); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Addition and Subtraction Chain", 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '4 + [4] 1055226 - [1055230] 198067 = [857163]'); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Multiplication and Division Chain", 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '580 * [580] 544 / [315520] 64 = [4930]'); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Addition After Equals", 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '5138 + 3351301 = [3356439] 550 + 62338 = [62888]'); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Missing First Operand in Addition", '+ 9701389 = [9701389]'); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Missing First Operand in Subtraction", '- 1770 = [-1770]'); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Missing First Operand in Multiplication", '* 65146 = [0]'); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Missing First Operand in Division", '/ 8 = [0]'); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Missing Second Operand in Addition", 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '28637 + = [[28637 _ 28637][_ + _][][57274 _ 57274]]'); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Previous line should be: 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '28637 + = [[28637 _ 28637][_ + 28637][][57274 _ 57274]'); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Missing Second Operand in Subtraction", 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '52288 - = [[52288 _ 52288][_ - _][][0 _ 0]]'); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Previous line should be: 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '52288 - = [[52288 _ 52288][_ - 52288][][0 _ 0]]'); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Missing Second Operand in Multiplication", 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '17 * = [17 _ 17][_ * _][][289]'); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Previous line should be: 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '17 * = [17 _ 17][_ * 17][][289]'); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Missing Second Operand in Division", 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '47 / = [47 _ 47][_ / _][][1]'); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(dharcourt): Previous line should be: 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // '47 / = [47 _ 47][_ / 47][][1]'); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Missing Last Operand in Addition and Subtraction Chain", 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '8449 + 4205138 - [4213587] = [0]'); 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* TODO(dharcourt): Fix & reactivate these: 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Leading zeros should be collapsed", 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '0 [_ _ [0]] 0 [_ _ [0]] 0 [_ _ [0]] ' + 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '2 [_ _ [2]] 0 [_ _ [2 0]] + [20 + _] ' + 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '0 [20 + [0]] 0 [20 + [0]] 0 [20 + [0]] ' + 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '2 [20 + [2]] 0 [20 + [2 0]] = [40 _ _]'); 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.test("Test utilities should correctly predict zeros collapse", 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '000 [[0==]] 20 [[20]] + 000 [[0==]] 20 [[20]] = [40]' + 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) '00020 + 00020 = [40]'); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/ 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (log || typeof log === 'undefined') 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run.log(); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return run; 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 259