require_relative "../helper"

module Risc
  class TestFakeMemory < MiniTest::Test
    def setup
      @fake = FakeMemory.new(2,16)
    end
    def test_init
      assert @fake
    end
    def test_size
      assert_equal 16 , @fake.size
    end
    def test_not_instantiates
      assert_raises {FakeMemory.new(1,7)}
    end
    def test_access_fail_big
      assert_raises {@fake.set(20 , 12)}
    end
    def test_access_fail_small
      assert_raises {@fake.set(1 , 12)}
    end
    def test_access_fail_minus
      assert_raises {@fake.set(-1 , 12)}
    end
    def test_set
      assert_equal 12 ,  @fake.set(2 , 12)
    end
    def test_set_arr
      assert_equal 12 ,  @fake[2] = 12
    end
    def test_get_no_init
      assert_nil @fake.get(2)
    end
    def test_get_arr
      assert_nil @fake[2]
    end
    def test_get_set
      @fake[2] = 12
      assert_equal 12 , @fake[2]
    end
    def test_set_all
      (2...16).each{ |i| @fake[i] = i * 2}
      assert_equal 4 , @fake[2]
      assert_equal 30 , @fake[15]
      assert_equal 16 , @fake.size
    end

  end
end