'use strict' const expect = require('chai').expect, gpio = require('../lib/gpio') let pin = new gpio.Pin(128) describe('GPIO Pin Class - ', function () { it('Verify getter and setter ', function () { expect(pin.cfg, 'config getter failed').to.deep.equal(gpio.configs('output')) expect(pin.cfg.intr, 'config get subkeys failed').to.equal(0) pin.cfg = gpio.configs('toggle_switch') expect(pin.cfg, 'config setter failed').to.deep.equal(gpio.configs('toggle_switch')) expect(pin.adr.value, 'pin address getter failed').to.equal(128) expect(pin.adr.fmt, 'pin address format getter failed').to.equal('DEC') expect(pin.id, 'pin id default from address failed').to.equal(8) pin.adr = { 'val': 20, 'fmt': 'HEX' } expect(pin.adr.value, 'pin address setter failed').to.equal(20) expect(pin.adr.fmt, 'pin address format setter failed').to.equal('HEX') pin.id = 2 expect(pin.id, 'pin id setter failed').to.equal(2) pin.adr = 32 expect(pin.adr.value, 'pin address setter failed').to.equal(32) expect(pin.adr.fmt, 'pin address format setter failed').to.equal('DEC') }) it('should merge partial config change', function () { pin.cfg = gpio.configs('output') pin.cfg = { dir: 15 } let merged = { dir: 15, ivrt: 0, pullup: 0, intr: 0, usedef: 0, defval: 0 } expect(pin.cfg, 'single config value change failed').to.deep.equal(merged) }) // TODO waiting on new clone function // it('should clone a new Pin with change of address', function () { // expect(newPin.adr.val, "clone pin failed").to.equal(4) // expect(newPin.cfg.dir, "clone pin failed").to.equal(15) // }) }) let port = new gpio.Port({ portID: 'A1' }) describe('GPIO Port Class - ', function () { it('should set the pin ids and addresses by default', function () { expect(port.pin(7).id, 'a pin\'s id failed').to.equal(7) expect(port.pin(7).adr.value, 'id and address don\'t match').to.equal(64) }) let port2 = new gpio.Port({ reverse: true }) it('reversing pin number order should work', function () { expect(port2.pin(2).adr.value, 'reversing pin numbers failed').to.equal(64) }) //TODO add a pin map for the port so pins could be arranged in any order })