UNPKG

nes-emu

Version:

A NES emulator

99 lines (98 loc) 2.37 kB
"use strict"; var _ = _interopRequireDefault(require(".")); var _createTestContext = _interopRequireDefault(require("../../helpers/createTestContext")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const should = require("chai").Should(); describe("instructions", () => { describe("checks", () => { let cpu, context; beforeEach(() => { ({ cpu, context } = (0, _createTestContext.default)()); }); describe("BIT", () => { [{ mask: 0b01100101, value: 0b10011010, z: true, n: true, v: false }, { mask: 0b11100101, value: 0b01011010, z: false, n: false, v: true }].forEach(_ref => { let { mask, value, z, n, v } = _ref; it("sets the Z, N, and V flags with mask=0b".concat(mask.toString(2), " and value=0b").concat(value.toString(2)), () => { cpu.registers.a.value = mask; _.default.BIT.execute(context, value); cpu.flags.z.should.equal(z); cpu.flags.n.should.equal(n); cpu.flags.v.should.equal(v); }); }); }); [{ instruction: "CMP", register: "a", source: 10, value: 120, z: false, n: true, c: false }, { instruction: "CMP", register: "a", source: 112, value: 2, z: false, n: false, c: true }, { instruction: "CPX", register: "x", source: 100, value: 100, z: true, n: false, c: true }, { instruction: "CPY", register: "y", source: 240, value: 30, z: false, n: true, c: true }].forEach(_ref2 => { let { instruction, register, source, value, z, n, c } = _ref2; describe(instruction, () => { it("compares and sets the proper flags with ".concat(register, "=").concat(source, " and value=").concat(value), () => { cpu.registers[register].value = source; _.default[instruction].execute(context, value); cpu.flags.z.should.equal(z); cpu.flags.n.should.equal(n); cpu.flags.c.should.equal(c); }); }); }); }); });