# Before 'make install' is performed this script should be runnable with # 'make test'. After 'make install' it should work as 'perl RPN.t' ######################### # change 'tests => 1' to 'tests => last_test_to_print'; use strict; use warnings; # Include RPN for testing use RPN; use Test::More tests => 20; BEGIN { use_ok('RPN') }; ######################### # Insert your test code below, the Test::More module is use()ed here so read # its man page ( perldoc Test::More ) for help writing this test script. my $expression; my $expect; my $result; # Test 2 $expression = 42; $expect = 42; $result = RPN::rpn($expression); is ($result, $expect, 'Test 2'); # Test 3 $expression = "5 3 + 8 3 - * 2 / 3 %"; $expect = 2; $result = RPN::rpn($expression); is ($result, $expect, 'Test 3'); # Test 4 $expression = "5 ++ ++ ++ ++ ++"; $expect = 10; $result = RPN::rpn($expression); is ($result, $expect, 'Test 4'); # Test 5 $expression = "10 -- -- -- -- --"; $expect = 5; $result = RPN::rpn($expression); is ($result, $expect, 'Test 5'); # Test 6 $expression = "-5 ABS"; $expect = 5; $result = RPN::rpn($expression); is ($result, $expect, 'Test 6'); # Test 7 $expression = "2.33242123 3.123123142312 + INT"; $expect = 5; $result = RPN::rpn($expression); is ($result, $expect, 'Test 7'); # Test 8 $expression = "PI INT"; $expect = 3; $result = RPN::rpn($expression); is ($result, $expect, 'Test 8'); # Test 9 $expression = "100 LOG EXP"; $expect = 100; $result = RPN::rpn($expression); is ($result, $expect, 'Test 9'); # Test 10 $expression = "2 12 POW SQRT"; $expect = 64; $result = RPN::rpn($expression); is ($result, $expect, 'Test 10'); # Test 11 $expression = "1.1 SIN DUP * 1.1 COS DUP * + ROUND"; $expect = 1; $result = RPN::rpn($expression); is ($result, $expect, 'Test 11'); # Test 12 $expression = ".11 SIN .11 COS / .11 TAN - ROUND"; $expect = 0; $result = RPN::rpn($expression); is ($result, $expect, 'Test 12'); # Test 13 $expression = ".11 SIN .11 COS ATAN2 .11 - ROUND"; $expect = 0; $result = RPN::rpn($expression); is ($result, $expect, 'Test 13'); # Test 14 $expression = "6 18 EXCH / DUP 5 MAX * DUP 3 / EXCH POP DUP 3 * MAX"; $expect = 15; $result = RPN::rpn($expression); is ($result, $expect, 'Test 14'); # Test 15 $expression = "20 10 MIN 7 MIN 30 MIN"; $expect = 7; $result = RPN::rpn($expression); is ($result, $expect, 'Test 15'); # Test 16 $expression = "20 10 MAX 7 MAX 30 MAX"; $expect = 30; $result = RPN::rpn($expression); is ($result, $expect, 'Test 16'); # Test 17 $expression = "PI SIN ROUND"; $expect = 0; $result = RPN::rpn($expression); is ($result, $expect, 'Test 17'); # Test 18 $expression = "PI COS 1 + ROUND"; $expect = 0; $result = RPN::rpn($expression); is ($result, $expect, 'Test 18'); # # Test 19 $expression = "12 13 POP"; $expect = 12; $result = RPN::rpn($expression); is ($result, $expect, 'Test 19'); # Test 20 $expression = "12 DUP POP"; $expect = 12; $result = RPN::rpn($expression); is ($result, $expect, 'Test 20');