2016-05-08 09:20:05 +02:00
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe Waterfoul::CPU do
|
|
|
|
subject { Waterfoul::CPU.new }
|
|
|
|
|
2016-09-18 15:02:01 +02:00
|
|
|
describe '#af=' do
|
|
|
|
it 'doesnt overwrite the F register' do
|
|
|
|
subject.af = 0x101
|
|
|
|
expect(subject.f).to eq 0
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'writes values into A register' do
|
|
|
|
subject.af = 0x101
|
|
|
|
expect(subject.a).to eq 0x1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#af' do
|
|
|
|
it 'pairs the A, F register to form a 16 bit register' do
|
|
|
|
subject.set_register :a, 0x5
|
|
|
|
subject.set_register :f, 0x3
|
|
|
|
expect(subject.af).to eq 0x503
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[[:b, :c], [:d, :e], [:h, :l]].each do |i|
|
2016-05-08 09:20:05 +02:00
|
|
|
read_register_method = i.join
|
|
|
|
write_register_method = i.join + '='
|
|
|
|
|
|
|
|
describe "##{write_register_method}" do
|
|
|
|
it "pairs the #{i[0]}, #{i[1]} register to form a 16bit register" do
|
|
|
|
subject.public_send write_register_method, 0x501
|
|
|
|
expect(subject.public_send(i[0])).to eq 0x5
|
|
|
|
expect(subject.public_send(i[1])).to eq 0x1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "##{read_register_method}" do
|
|
|
|
it "pairs the #{i[0]}, #{i[1]} register to form a 16bit register" do
|
|
|
|
subject.set_register i[0], 0x5
|
|
|
|
subject.set_register i[1], 0x3
|
|
|
|
expect(subject.public_send(read_register_method)).to eq 0x503
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|