Sha256: cd3fbe066cbf8d22dcf4ac089e66feda6b2e47e390766f3cd946377d2e247d4d

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

require 'test_helper'

class MethicParserTest < Minitest::Test
  include ParserTestHelper

  def setup
    @parser = MethicParser.new
  end

  def test_number
    assert_equal 0, parse('0').eval
    assert_equal 1, parse('1').eval
    assert_equal 123, parse('123').eval
  end

  def test_variable
    assert_equal 0, parse('x').eval('x' => 0)
    assert_equal 3, parse('x').eval('x' => 3)
    assert_equal 10, parse('y').eval('y' => 10)
  end

  def test_addition
    assert_equal 10, parse('x + 5').eval('x' => 5)
  end

  def test_subtraction
    assert_equal 0, parse('x - 5').eval('x' => 5)
  end

  def test_multiplication
    assert_equal 6, parse('x * 2').eval('x' => 3)
  end

  def test_division
    assert_equal 3, parse('x / 2').eval('x' => 6)
  end

  def test_order_of_operations
    assert_equal 11, parse('1 + 2 * 3 + 4').eval
  end

  def test_left_to_right
    assert_equal 2, parse('5 - 2 - 1').eval
  end

  def test_parentheses
    assert_equal 25, parse('(5 + x) * (10 - y)').eval('x' => 0, 'y' => 5)
  end

  def test_equality
    assert parse('4 == 4').eval
    assert !parse('4 == 3').eval
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
methic-0.0.1 test/methic_test.rb