PageRenderTime 126ms CodeModel.GetById 40ms RepoModel.GetById 12ms app.codeStats 0ms

/vendor/bundle/ruby/1.9.1/gems/treetop-1.4.10/examples/lambda_calculus/arithmetic_test.rb

https://bitbucket.org/sqctest01/sample_app_3_1
Ruby | 58 lines | 45 code | 13 blank | 0 comment | 0 complexity | fb9bdae4618eb94b61fa530c7f710675 MD5 | raw file
Possible License(s): GPL-2.0
  1. dir = File.dirname(__FILE__)
  2. require File.expand_path("#{dir}/test_helper")
  3. require File.expand_path("#{dir}/arithmetic_node_classes")
  4. Treetop.load File.expand_path("#{dir}/arithmetic")
  5. class ArithmeticParserTest < Test::Unit::TestCase
  6. include ParserTestHelper
  7. def setup
  8. @parser = ArithmeticParser.new
  9. end
  10. def test_number
  11. assert_equal 0, parse('0').eval
  12. assert_equal 1, parse('1').eval
  13. assert_equal 123, parse('123').eval
  14. end
  15. def test_variable
  16. assert_equal 0, parse('x').eval('x' => 0)
  17. assert_equal 3, parse('x').eval('x' => 3)
  18. assert_equal 10, parse('y').eval('y' => 10)
  19. end
  20. def test_addition
  21. assert_equal 10, parse('x + 5').eval('x' => 5)
  22. end
  23. def test_subtraction
  24. assert_equal 0, parse('x - 5').eval('x' => 5)
  25. end
  26. def test_multiplication
  27. assert_equal 6, parse('x * 2').eval('x' => 3)
  28. end
  29. def test_division
  30. assert_equal 3, parse('x / 2').eval('x' => 6)
  31. end
  32. def test_order_of_operations
  33. assert_equal 11, parse('1 + 2 * 3 + 4').eval
  34. end
  35. def test_left_to_right
  36. assert_equal 2, parse('5 - 2 - 1').eval
  37. end
  38. def test_parentheses
  39. assert_equal 25, parse('(5 + x) * (10 - y)').eval('x' => 0, 'y' => 5)
  40. end
  41. def test_equality
  42. assert parse('4 == 4').eval
  43. assert !parse('4 == 3').eval
  44. end
  45. end