@river-build/dlog
Version:
Includes logging and a few other catchall items
182 lines • 5.47 kB
JavaScript
/**
* @group main
*/
import { dlog, dlogError } from '../dlog';
import debug from 'debug';
import { bin_fromHexString } from '../binary';
describe.concurrent('dlogTest', () => {
it('basic', () => {
const longHex = bin_fromHexString('0102030405060708090a0b0c0d0e0f101112131415161718191a');
const obj = {
a: 1,
b: 'b',
c: {
d: 2,
e: 'e',
},
d: [1, 2, 3],
q: new Uint8Array([1, 2, 3]),
longHex,
nested: {
a: 1,
more: {
even_more: {
more_yet: {
z: 1000,
},
},
},
},
};
const log = dlog('test:dlog');
log(obj);
log('\n\n\n');
log('obj =', obj);
log('\n\n\n');
log('b', 'q', obj, obj, 'end');
log('\n\n\n');
log(obj, obj);
log('\n\n\n');
log('obj =', obj, 'obj =', obj);
log('\n\n\n');
log(longHex);
log('\n\n\n');
log('longHex =', longHex);
log('\n\n\n');
log('shortenedHexKey =', { '0x0102030405060708090a0b0c0d0e0f101112131415161718191a': true });
log('shortenedHexValue =', '0x0102030405060708090a0b0c0d0e0f101112131415161718191a');
log('shortenedHexValue =', {
key: '0x0102030405060708090a0b0c0d0e0f101112131415161718191a',
});
});
it('extend', () => {
const base_log = dlog('test:dlog');
const log = base_log.extend('extend');
log('extend');
log(22);
log('33 =', 33);
log('gonna print more', '44 =', 44);
});
it('enabled1', () => {
const log = dlog('test:dlog');
if (log.enabled) {
log('enabled', log.enabled);
log.enabled = false;
log('(should not print)', log.enabled);
log.enabled = true;
log('enabled', log.enabled);
}
});
it('circularReference', () => {
const log = dlog('test:dlog');
class A {
b;
constructor() {
this.b = new B(this);
}
}
class B {
a;
constructor(a) {
this.a = a;
}
}
const a = new A();
log('test circular:', { a });
});
it('numbers', () => {
const log = dlog('test:dlog');
log('test same number:', { a: 1, b: 1, c: 1, d: 2 });
});
it('error', () => {
const log = dlogError('test:dlog:error');
log('test same number:', { a: 1, b: 1, c: 1, d: 2 });
log(new Error('test error'));
function funcThatThrows() {
throw new Error('test error 2');
}
try {
funcThatThrows();
}
catch (e) {
log(e);
}
try {
funcThatThrows();
}
catch (e) {
log('test error 3', e, 123, 'more text');
}
});
it('set', () => {
const s = new Set([111, 222, { aaa: 333 }]);
dlog('test:dlog')(s);
const log = dlog('test:dlog');
log.enabled = true;
let output = '';
log.baseDebug.log = (...args) => {
for (const arg of args) {
output += `${arg}`;
}
};
log(s);
expect(output).toContain('111');
expect(output).toContain('222');
expect(output).toContain('333');
expect(output).toContain('aaa');
});
it('map', () => {
const s = new Map([
['aaa', 111],
['bbb', 222],
['ccc', { a: 333 }],
]);
dlog('test:dlog')(s);
const log = dlog('test:dlog');
log.enabled = true;
let output = '';
log.baseDebug.log = (...args) => {
for (const arg of args) {
output += `${arg}`;
}
};
log(s);
expect(output).toContain('111');
expect(output).toContain('aaa');
expect(output).toContain('222');
expect(output).toContain('bbb');
expect(output).toContain('333');
expect(output).toContain('ccc');
});
it('enabled2', () => {
const ns = 'uniqueLogName';
// Override
let log = dlog(ns);
expect(log.enabled).toBeFalsy();
log.enabled = true;
expect(log.enabled).toBeTruthy();
log.enabled = false;
expect(log.enabled).toBeFalsy();
// Default
log = dlog(ns, { defaultEnabled: true, allowJest: true });
expect(log.enabled).toBeTruthy();
log.enabled = false;
expect(log.enabled).toBeFalsy();
// Default under Jest
log = dlog(ns, { defaultEnabled: true });
expect(log.enabled).toBeFalsy();
log.enabled = true;
expect(log.enabled).toBeTruthy();
// Enabled explicitly by settings
debug.enable(ns);
log = dlog(ns);
expect(log.enabled).toBeTruthy();
// Disabled explicitly by settings
debug.enable('-' + ns);
expect(log.enabled).toBeFalsy();
// Disabled explicitly by settings, default ignored
log = dlog(ns, { defaultEnabled: true, allowJest: true });
expect(log.enabled).toBeFalsy();
});
});
//# sourceMappingURL=dlog.test.js.map