57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
|
|
'use strict';
|
||
|
|
|
||
|
|
var ipldGarbage = require('ipld-garbage');
|
||
|
|
require('../cborg.js');
|
||
|
|
var chai = require('chai');
|
||
|
|
var encode = require('../lib/encode.js');
|
||
|
|
var decode = require('../lib/decode.js');
|
||
|
|
|
||
|
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
||
|
|
|
||
|
|
var chai__default = /*#__PURE__*/_interopDefaultLegacy(chai);
|
||
|
|
|
||
|
|
const {assert} = chai__default["default"];
|
||
|
|
describe('Fuzz round-trip', () => {
|
||
|
|
it('random objects', function () {
|
||
|
|
this.timeout(5000);
|
||
|
|
for (let i = 0; i < 1000; i++) {
|
||
|
|
const obj = ipldGarbage.garbage(300, { weights: { CID: 0 } });
|
||
|
|
const byts = encode.encode(obj);
|
||
|
|
const decoded = decode.decode(byts);
|
||
|
|
assert.deepEqual(decoded, obj);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
it('circular references error', () => {
|
||
|
|
let obj = {};
|
||
|
|
obj.obj = obj;
|
||
|
|
assert.throws(() => encode.encode(obj), /circular references/);
|
||
|
|
obj = {
|
||
|
|
blip: [
|
||
|
|
1,
|
||
|
|
2,
|
||
|
|
{ blop: {} }
|
||
|
|
]
|
||
|
|
};
|
||
|
|
obj.blip[2].blop.boop = obj;
|
||
|
|
assert.throws(() => encode.encode(obj), /circular references/);
|
||
|
|
obj = {
|
||
|
|
blip: [
|
||
|
|
1,
|
||
|
|
2,
|
||
|
|
{ blop: {} }
|
||
|
|
]
|
||
|
|
};
|
||
|
|
obj.blip[2].blop.boop = obj.blip;
|
||
|
|
assert.throws(() => encode.encode(obj), /circular references/);
|
||
|
|
obj = {
|
||
|
|
blip: {},
|
||
|
|
bloop: {}
|
||
|
|
};
|
||
|
|
obj.bloop = obj.blip;
|
||
|
|
assert.doesNotThrow(() => encode.encode(obj));
|
||
|
|
const arr = [];
|
||
|
|
arr[0] = arr;
|
||
|
|
assert.throws(() => encode.encode(arr), /circular references/);
|
||
|
|
});
|
||
|
|
});
|