require 'test/unit' require 'full_adder_rules0.rb' class FARulesTest < Test::Unit::TestCase def test_FA_rules_000 s = simulate_full_adder('000') assert_equal('00', s) end def test_FA_rules_001 s = simulate_full_adder('001') assert_equal('10', s) end def test_FA_rules_010 s = simulate_full_adder('010') assert_equal('10', s) end def test_FA_rules_011 s = simulate_full_adder('011') assert_equal('01', s) end def test_FA_rules_100 s = simulate_full_adder('100') assert_equal('10', s) end def test_FA_rules_101 s = simulate_full_adder('101') assert_equal('01', s) end def test_FA_rules_110 s = simulate_full_adder('110') assert_equal('01', s) end def test_FA_rules_111 s = simulate_full_adder('111') assert_equal('11', s) end def test_FA_rules_non_binary d = gen_random_bad_3string() puts "\nBad:" + d #write it out for curiosity s = simulate_full_adder(d) #error case assert_equal('unrecognized digits', s) end def test_FA_rules_length0 s = simulate_full_adder('') #error case assert_equal('illegal length', s) end def test_FA_rules_length1 s = simulate_full_adder('0') #error case assert_equal('illegal length', s) end def test_FA_rules_length2 s = simulate_full_adder('00') #error case assert_equal('illegal length', s) end def test_FA_rules_length4 s = simulate_full_adder('0000') #error case assert_equal('illegal length', s) end #Helper method to generate a string of length 3 #that contains at least one char that is not a 0 or 1. #Used to generate error strings for test_FA_rules_non_binary. def gen_random_bad_3string() begin threechr = [] threechr << (rand(95)+32).chr << (rand(95)+32).chr << (rand(95)+32).chr end while (threechr - ["0","1"]).length == 0 return threechr.to_s #convert the array into a string and return it end end