Beispiel #1
0
        public void AddingTwo16BitRegistersShouldPutTheResultInTheFirstRegister()
        {
            var machine = new Machine();

            machine.Registers.Set(Reg16.HL, 0x1);
            machine.Registers.Set(Reg16.BC, 0x2);
            machine.ADD(Reg16.HL, Reg16.BC);

            Assert.Equal(0x3, machine.Registers.Read(Reg16.HL));
        }
Beispiel #2
0
        public void WhenTheTotalOfTheAdditionIsOutOfRangeTheResultShouldBeReduceBy65536()
        {
            var machine = new Machine();

            machine.Registers.Set(Reg16.HL, 0xAAAA);
            machine.Registers.Set(Reg16.BC, 0xBBBB);
            machine.ADD(Reg16.HL, Reg16.BC);

            Assert.Equal(0x6665, machine.Registers.Read(Reg16.HL));
        }
Beispiel #3
0
        public void AddingTwo16BitRegistersShouldSetTheCarryFlagWhenTheResultIsOutOfRange()
        {
            var machine = new Machine();

            machine.Registers.Set(Reg16.HL, 0xAAAA);
            machine.Registers.Set(Reg16.BC, 0xBBBB);
            machine.ADD(Reg16.HL, Reg16.BC);

            Assert.Equal(true, machine.Flags.Read(Flag.C));
        }
Beispiel #4
0
 public void AnErrorShouldBeThrownIfAnInvalidCombinationOf16BitRegistersAreSupplied(Reg16 register1, Reg16 register2)
 {
     var machine = new Machine();
     var ex      = Assert.Throws <InvalidOperationException>(() => machine.ADD(register1, register2));
 }