From eed745eaca8af2a5f8a7a4e40e84828b8c155dc8 Mon Sep 17 00:00:00 2001 From: Uri Shaked Date: Sun, 10 May 2020 09:01:53 +0300 Subject: feat(gpio): add setPin() function close #26 --- src/peripherals/gpio.spec.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/peripherals/gpio.spec.ts') diff --git a/src/peripherals/gpio.spec.ts b/src/peripherals/gpio.spec.ts index f3b1a0f..1dfaf7d 100644 --- a/src/peripherals/gpio.spec.ts +++ b/src/peripherals/gpio.spec.ts @@ -93,4 +93,27 @@ describe('GPIO', () => { expect(listener).toHaveBeenCalled(); }); }); + + describe('setPin', () => { + it('should set the value of the given pin', () => { + const cpu = new CPU(new Uint16Array(1024)); + const port = new AVRIOPort(cpu, portBConfig); + cpu.writeData(0x24, 0); // DDRB <- 0 + port.setPin(4, true); + expect(cpu.data[0x23]).toEqual(0x10); + port.setPin(4, false); + expect(cpu.data[0x23]).toEqual(0x0); + }); + + it('should only update PIN register when pin in Input mode', () => { + const cpu = new CPU(new Uint16Array(1024)); + const port = new AVRIOPort(cpu, portBConfig); + cpu.writeData(0x24, 0x10); // DDRB <- 0x10 + cpu.writeData(0x25, 0x0); // PORTB <- 0x0 + port.setPin(4, true); + expect(cpu.data[0x23]).toEqual(0x0); + cpu.writeData(0x24, 0x0); // DDRB <- 0x0 + expect(cpu.data[0x23]).toEqual(0x10); + }); + }); }); -- cgit v1.2.3