UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

52 lines 8.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable import/order */ const fc = require("fast-check"); const util_1 = require("../../lib/util"); test('deepSet can set deeply', () => { const obj = {}; (0, util_1.deepSet)(obj, ['a', 'b'], 3); expect(obj).toEqual({ a: { b: 3 } }); }); test('deepGet can get deeply', () => { const obj = { a: { b: 3 } }; expect((0, util_1.deepGet)(obj, ['a', 'b'])).toBe(3); }); test('deepGet can return an array', () => { const obj = { a: [1, 2, 3] }; expect((0, util_1.deepGet)(obj, ['a'])).toEqual([1, 2, 3]); }); test('changing deepClones copy leaves the original intact', () => { const original = { a: [{ b: 3 }] }; const copy = (0, util_1.deepClone)(original); copy.a[0].c = 5; expect(original).toEqual({ a: [{ b: 3 }] }); }); test('deepMerge merges objects', () => { const original = { a: { b: 3 } }; (0, util_1.deepMerge)(original, { a: { c: 4 } }); expect(original).toEqual({ a: { b: 3, c: 4 } }); }); test('deepMerge overwrites non-objects', () => { const original = { a: [] }; (0, util_1.deepMerge)(original, { a: { b: 3 } }); expect(original).toEqual({ a: { b: 3 } }); }); test('deepMerge does not overwrite if rightmost is "undefined"', () => { const original = { a: 1 }; (0, util_1.deepMerge)(original, { a: undefined }); expect(original).toEqual({ a: 1 }); }); describe('splitBySize', () => { test('objects are split at the right place', () => { fc.assert(fc.property(fc.object(), fc.integer({ min: 2 }), (data, size) => { const [first, second] = (0, util_1.splitBySize)(data, size); expect(Buffer.from(JSON.stringify(first)).length).toBeLessThanOrEqual(size); expect(merge(first, second)).toEqual(data); })); function merge(fst, snd) { return { ...(fst ?? {}), ...(snd ?? {}) }; } }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsib2JqZWN0cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQWlDO0FBQ2pDLGlDQUFpQztBQUNqQyx5Q0FBcUY7QUFFckYsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtJQUNsQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixJQUFBLGNBQU8sRUFBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDNUIsTUFBTSxDQUFDLElBQUEsY0FBTyxFQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3QixNQUFNLENBQUMsSUFBQSxjQUFPLEVBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDLENB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QVEsRUFBRSxHQUFRO1lBQy9CLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9vcmRlciAqL1xuaW1wb3J0ICogYXMgZmMgZnJvbSAnZmFzdC1jaGVjayc7XG5pbXBvcnQgeyBkZWVwQ2xvbmUsIGRlZXBHZXQsIGRlZXBNZXJnZSwgZGVlcFNldCwgc3BsaXRCeVNpemUgfSBmcm9tICcuLi8uLi9saWIvdXRpbCc7XG5cbnRlc3QoJ2RlZXBTZXQgY2FuIHNldCBkZWVwbHknLCAoKSA9PiB7XG4gIGNvbnN0IG9iaiA9IHt9O1xuICBkZWVwU2V0KG9iaiwgWydhJywgJ2InXSwgMyk7XG4gIGV4cGVjdChvYmopLnRvRXF1YWwoeyBhOiB7IGI6IDMgfSB9KTtcbn0pO1xuXG50ZXN0KCdkZWVwR2V0IGNhbiBnZXQgZGVlcGx5JywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7IGE6IHsgYjogMyB9IH07XG4gIGV4cGVjdChkZWVwR2V0KG9iaiwgWydhJywgJ2InXSkpLnRvQmUoMyk7XG59KTtcblxudGVzdCgnZGVlcEdldCBjYW4gcmV0dXJuIGFuIGFycmF5JywgKCkgPT4ge1xuICBjb25zdCBvYmogPSB7IGE6IFsxLCAyLCAzXSB9O1xuICBleHBlY3QoZGVlcEdldChvYmosIFsnYSddKSkudG9FcXVhbChbMSwgMiwgM10pO1xufSk7XG5cbnRlc3QoJ2NoYW5naW5nIGRlZXBDbG9uZXMgY29weSBsZWF2ZXMgdGhlIG9yaWdpbmFsIGludGFjdCcsICgpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWwgPSB7IGE6IFt7IGI6IDMgfV0gfTtcbiAgY29uc3QgY29weSA9IGRlZXBDbG9uZShvcmlnaW5hbCk7XG4gIGNvcHkuYVswXS5jID0gNTtcblxuICBleHBlY3Qob3JpZ2luYWwpLnRvRXF1YWwoeyBhOiBbeyBiOiAzIH1dIH0pO1xufSk7XG5cbnRlc3QoJ2RlZXBNZXJnZSBtZXJnZXMgb2JqZWN0cycsICgpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWwgPSB7IGE6IHsgYjogMyB9IH07XG4gIGRlZXBNZXJnZShvcmlnaW5hbCwgeyBhOiB7IGM6IDQgfSB9KTtcblxuICBleHBlY3Qob3JpZ2luYWwpLnRvRXF1YWwoeyBhOiB7IGI6IDMsIGM6IDQgfSB9KTtcbn0pO1xuXG50ZXN0KCdkZWVwTWVyZ2Ugb3ZlcndyaXRlcyBub24tb2JqZWN0cycsICgpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWwgPSB7IGE6IFtdIH07XG4gIGRlZXBNZXJnZShvcmlnaW5hbCwgeyBhOiB7IGI6IDMgfSB9KTtcblxuICBleHBlY3Qob3JpZ2luYWwpLnRvRXF1YWwoeyBhOiB7IGI6IDMgfSB9KTtcbn0pO1xuXG50ZXN0KCdkZWVwTWVyZ2UgZG9lcyBub3Qgb3ZlcndyaXRlIGlmIHJpZ2h0bW9zdCBpcyBcInVuZGVmaW5lZFwiJywgKCkgPT4ge1xuICBjb25zdCBvcmlnaW5hbCA9IHsgYTogMSB9O1xuICBkZWVwTWVyZ2Uob3JpZ2luYWwsIHsgYTogdW5kZWZpbmVkIH0pO1xuXG4gIGV4cGVjdChvcmlnaW5hbCkudG9FcXVhbCh7IGE6IDEgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3NwbGl0QnlTaXplJywgKCkgPT4ge1xuICB0ZXN0KCdvYmplY3RzIGFyZSBzcGxpdCBhdCB0aGUgcmlnaHQgcGxhY2UnLCAoKSA9PiB7XG4gICAgZmMuYXNzZXJ0KFxuICAgICAgZmMucHJvcGVydHkoZmMub2JqZWN0KCksIGZjLmludGVnZXIoeyBtaW46IDIgfSksIChkYXRhLCBzaXplKSA9PiB7XG4gICAgICAgIGNvbnN0IFtmaXJzdCwgc2Vjb25kXSA9IHNwbGl0QnlTaXplKGRhdGEsIHNpemUpO1xuXG4gICAgICAgIGV4cGVjdChCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShmaXJzdCkpLmxlbmd0aCkudG9CZUxlc3NUaGFuT3JFcXVhbChzaXplKTtcbiAgICAgICAgZXhwZWN0KG1lcmdlKGZpcnN0LCBzZWNvbmQpKS50b0VxdWFsKGRhdGEpO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlKGZzdDogYW55LCBzbmQ6IGFueSkge1xuICAgICAgcmV0dXJuIHsgLi4uKGZzdCA/PyB7fSksIC4uLihzbmQgPz8ge30pIH07XG4gICAgfVxuICB9KTtcbn0pO1xuIl19