require('bare-process/global') const test = require('brittle') const { HyperP2PCreditLedger, PROTOCOL } = require('../index.js') test('exports', (t) => { t.ok(HyperP2PCreditLedger) t.is(PROTOCOL, 'credit-ledger/v1') }) test('credit debit transfer', async (t) => { const m = new HyperP2PCreditLedger() m.openAccount('a', 100) m.openAccount('b', 0) m.transfer('a', 'b', 30) t.is(m.balance('a'), 70) t.is(m.balance('b'), 30) await m.close() }) test('insufficient funds', async (t) => { const m = new HyperP2PCreditLedger() m.openAccount('a', 5) try { m.transfer('a', 'b', 10) } catch (e) { t.ok(e) } await m.close() }) test('remote ledger entry', async (t) => { const m = new HyperP2PCreditLedger() m.openAccount('x', 0) m._onGossip({ type: 'ledger-entry', accountId: 'x', kind: 'credit', balance: 50, at: Date.now() }) t.is(m.balance('x'), 50) await m.close() }) test('getStats', async (t) => { const m = new HyperP2PCreditLedger() m.openAccount('z') t.ok(m.getStats().accounts >= 1) await m.close() })