UNPKG

prototoy

Version:

Lightweight JavaScript object generator for your node REPL (or elsewhere, I suppose)

111 lines (82 loc) 4.05 kB
const t = require('../'), assert = require('assert'), defaultString = /^(\w+\s){9}\w+$/, arrayOf10Integers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; /* array() */ assert.deepStrictEqual(t.array(), arrayOf10Integers, 'array()'); assert.deepStrictEqual(t.array(1), [1], 'array(1)'); assert.deepStrictEqual(t.array(2), [1, 2], 'array(2)'); assert.deepStrictEqual(t.array(2, Boolean), [false, true], 'array(2, Boolean)'); assert.deepStrictEqual(t.array(2, Number), [1, 2], 'array(2, Number)'); assert.deepStrictEqual(t.array(2, Object), [{a: 1}, {a: 1}], 'array(2, Object)'); let array = t.array(2, String); assert.equal(array.length, 2, 'array(2, String).length'); assert(defaultString.test(array[0]), 'array(2, String)[0]'); assert(defaultString.test(array[1]), 'array(2, String)[1]'); /* json() */ let json = JSON.parse(t.json(2)); assert.deepStrictEqual(json, {a: 1, b: 2}, 'json(2)'); json = JSON.parse(t.json(['foo', 'bar'])); assert.deepStrictEqual(json, {foo: 1, bar: 2}, 'json([foo, bar])'); /* map() */ let map = t.map(); assert.deepStrictEqual(Array.from(map.keys()), ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'], 'map().keys()'); assert.deepStrictEqual(Array.from(map.values()), arrayOf10Integers, 'map().values()'); map = t.map(1); assert.equal(map.get('a'), 1, 'map(1).a'); map = t.map(2); assert.equal(map.size, 2, 'map(2).size'); assert.equal(map.get('a'), 1, 'map(2).a'); assert.equal(map.get('b'), 2, 'map(2).b'); map = t.map(2, Number); assert.equal(map.size, 2, 'map(2, Number).size'); assert.equal(map.get(1), 1, 'map(2, Number).1'); assert.equal(map.get(2), 2, 'map(2, Number).2'); map = t.map(2, Number, Date); assert.equal(map.size, 2, 'map(2, Number, Date).size'); assert(map.get(1) instanceof Date, 'map(2, Number, Date).1'); assert(map.get(2) instanceof Date, 'map(2, Number, Date).2'); assert(map.get(1).getTime() < map.get(2).getTime(), 'map(2, Number, Date) dates ascend'); /* object() */ let obj = t.object(1); assert.deepStrictEqual(obj, {a: 1}, 'object(1)'); obj = t.object(2); assert.deepStrictEqual(obj, {a: 1, b: 2}, 'object(2)'); obj = t.object(27); assert.equal(Object.keys(obj).length, 27, 'object(27)'); assert.equal(obj.a, 1, 'object(27).a'); assert.equal(obj.b, 2, 'object(27).b'); assert.equal(obj.aa, 27, 'object(27).aa'); obj = t.object(['foo', 'bar']); assert.deepStrictEqual(obj, {foo: 1, bar: 2}); assert.equal(t.object, t.obj); /* iterator */ assert.deepStrictEqual(Array.from(t.iterator()), arrayOf10Integers, 'iterator()'); assert.deepStrictEqual(Array.from(t.iter(1)), [1], 'iter(1)'); assert.deepStrictEqual(Array.from(t.iter(2)), [1, 2], 'iter(2)'); assert.deepStrictEqual(Array.from(t.iter(['foo', 'bar'])), ['foo', 'bar'], 'iter([foo, bar])'); let iter = t.iter(['foo', 'bar']); assert.deepStrictEqual(iter.next(), {value: 'foo', done: false}, 'iter([foo, bar], true)[0]'); assert.deepStrictEqual(iter.next(), {value: 'bar', done: false}, 'iter([foo, bar], true)[1]'); assert.deepStrictEqual(iter.next(), {value: undefined, done: true}, 'iter([foo, bar], true)[2]'); /* set() */ assert.deepStrictEqual(Array.from(t.set()), arrayOf10Integers, 'set()'); assert.deepStrictEqual(Array.from(t.set(1)), [1], 'set(1)'); array = Array.from(t.set(2, Date)); assert(array[0] instanceof Date, 'set(2, Date)'); assert(array[1] instanceof Date, 'set(2, Date)'); assert.deepStrictEqual(Array.from(t.set(2, n => n + 100)), [100, 101], 'set(2, function {})'); /* string() */ assert(defaultString.test(t.string()), 'string()'); assert(/^\w+$/.test(t.string(1)), 'string(1)'); assert(/^\w+\s\w+$/.test(t.string(2)), 'string(2)'); assert(defaultString.test(t.string(10)), 'string(10)'); /* defaultLength */ assert.equal(t.defaultLength, 10, 'defaultLength'); t.defaultLength = null; assert.equal(t.defaultLength, 10, 'defaultLength = null'); t.defaultLength = 0; assert.equal(t.defaultLength, 10, 'defaultLength = 0'); t.defaultLength = 2; assert.equal(t.defaultLength, 2, 'defaultLength = 2'); assert.deepStrictEqual(t.array(), [1, 2], 'array(), defaultLength = 2');