{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-active-expression-proxies/test/reflection-test.js"],"names":["chai","expect","sinon","sinonChai","reflection","use","expectToInclude","hull","elements","forEach","element","has","to","be","true","describe","it","arr","Set","lively","convexHull","an","instanceof","have","property","set","usePrototype","size","greaterThan","prototype","recursive","a","b","foo","c","d","map","Map","equal","undefined"],"mappings":"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","file":"reflection-test.js","sourcesContent":["import chai, {expect} from 'src/external/chai.js';\nimport sinon from 'src/external/sinon-3.2.1.js';\nimport sinonChai from 'src/external/sinon-chai.js';\nchai.use(sinonChai);\n\nimport * as reflection from 'src/client/reflection.js';\n\nfunction expectToInclude(hull, elements) {\n  elements.forEach(element => {\n    expect(hull.has(1)).to.be.true;    \n  })\n}\n\ndescribe('reflection', function() {\n\n  it('reach into collections (Set)',  () => {\n    var arr = new Set([1,2, 3,4])\n    \n    const hull = lively.reflection.convexHull(arr)\n\n    expect(hull).to.be.an.instanceof(Set);\n    expect(hull).to.have.property('size', 5);\n    expect(hull.has(arr)).to.be.true;\n    expect(hull.has(1)).to.be.true;\n    expect(hull.has(2)).to.be.true;\n    expect(hull.has(3)).to.be.true;\n    expect(hull.has(4)).to.be.true;\n  });\n\n  it('include prototype of Set',  () => {\n    var set = new Set([1,2, 3,4])\n    \n    const hull = lively.reflection.convexHull(set, { usePrototype: true })\n\n    expect(hull).to.be.an.instanceof(Set);\n    expect(hull.size).to.be.greaterThan(5);\n    expect(hull.has(set)).to.be.true;\n    expect(hull.has(1)).to.be.true;\n    expect(hull.has(2)).to.be.true;\n    expect(hull.has(3)).to.be.true;\n    expect(hull.has(4)).to.be.true;\n    expect(hull.has(Set.prototype)).to.be.true;\n  });\n\n  it('allows for recursive data structures',  () => {\n    const recursive = {\n      a: 42,\n      b: {\n        foo: 17,\n        c: ['hello', 'world', { d: 54 }]\n      }\n    };\n    recursive.b.c[3] = recursive;\n\n    const hull = lively.reflection.convexHull(recursive)\n\n    expect(hull).to.be.an.instanceof(Set);\n    expect(hull.size).to.greaterThan(8);\n    expect(hull.has(recursive)).to.be.true;\n    expect(hull.has(recursive.a)).to.be.true;\n    expect(hull.has(recursive.b)).to.be.true;\n    expect(hull.has(recursive.b.foo)).to.be.true;\n    expect(hull.has(recursive.b.c)).to.be.true;\n    expect(hull.has(recursive.b.c[0])).to.be.true;\n    expect(hull.has(recursive.b.c[1])).to.be.true;\n    expect(hull.has(recursive.b.c[2])).to.be.true;\n    expect(hull.has(recursive.b.c[2].d)).to.be.true;\n  });\n  \n  it('reach into collections (Map)',  () => {\n    const map = new Map([[1,2], [3,4]]);\n\n    const hull = lively.reflection.convexHull(map);\n\n    expect(hull).to.be.an.instanceof(Set);\n    expect(hull.size).to.equal(7);\n    expect(hull.has(map)).to.be.true;\n    // pairs are dynamically generated\n    expect(hull.has(1)).to.be.true;\n    expect(hull.has(2)).to.be.true;\n    expect(hull.has(3)).to.be.true;\n    expect(hull.has(4)).to.be.true;\n  });\n\n  it('convexHull of undefined is empty',  () => {\n    const hull = lively.reflection.convexHull(undefined)\n\n    expect(hull).to.be.an.instanceof(Set);\n    expect(hull.size).to.equal(0);\n  });\n});\n"]}