2018-06-24 15:48:23 +02:00
|
|
|
require_relative 'helper'
|
|
|
|
|
|
|
|
module Mains
|
|
|
|
class TestInterpreted < MiniTest::Test
|
|
|
|
include Risc::Ticker
|
|
|
|
def setup;end
|
|
|
|
|
|
|
|
# runnable_methods is called by minitest to determine which tests to run
|
|
|
|
def self.runnable_methods
|
|
|
|
all = Dir["test/mains/source/*.rb"]
|
|
|
|
tests =[]
|
|
|
|
all.each do |file_name|
|
|
|
|
fullname = file_name.split("/").last.split(".").first
|
|
|
|
name , stdout , exit_code = fullname.split("_")
|
|
|
|
method_name = "test_#{name}"
|
|
|
|
tests << method_name
|
|
|
|
input = File.read(file_name)
|
|
|
|
self.send(:define_method, method_name ) do
|
2018-08-06 13:13:39 +02:00
|
|
|
ticks = run_main(input)
|
|
|
|
#puts "Ticks for #{method_name}=#{ticks}"
|
2018-06-24 15:48:23 +02:00
|
|
|
assert_equal stdout , @interpreter.stdout , "Wrong stdout #{name}"
|
|
|
|
assert_equal exit_code , get_return.to_s , "Wrong exit code #{name}"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
tests
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|