36 lines
747 B
Ruby
36 lines
747 B
Ruby
|
require_relative "helper"
|
||
|
module Mom
|
||
|
class PlusEquals < Instruction
|
||
|
attr_reader :a , :b
|
||
|
def initialize(source , arg , b)
|
||
|
super(source)
|
||
|
@a = arg
|
||
|
@b = b
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
module Vool
|
||
|
class TestMacroMom < MiniTest::Test
|
||
|
include VoolCompile
|
||
|
|
||
|
def setup
|
||
|
@compiler = compile_first_method( "X.plus_equals(arg,1)")
|
||
|
@ins = @compiler.mom_instructions.next
|
||
|
end
|
||
|
|
||
|
def test_class_compiles
|
||
|
assert_equal Mom::PlusEquals , @ins.class , @ins
|
||
|
end
|
||
|
def test_arg1
|
||
|
assert_equal Vool::LocalVariable , @ins.a.class
|
||
|
assert_equal :arg , @ins.a.name
|
||
|
end
|
||
|
def test_arg2
|
||
|
assert_equal Vool::IntegerConstant , @ins.b.class
|
||
|
assert_equal 1 , @ins.b.value
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|