diff options
Diffstat (limited to 'types.html')
-rw-r--r-- | types.html | 141 |
1 files changed, 86 insertions, 55 deletions
@@ -27,67 +27,98 @@ </head> <body> - <table><thead><tr id="head"><th>Type</th></tr></thead><tbody id="body"></tbody></table> <script> - console.log("Testing type parsing...") - console.log(new Type("int")) - console.log(new Type("List<int>")) - console.log(new Type("(int, T1)", ["T1"])) - console.log(new Type("List<(T,int)>", ["T"])) - console.log(new Type("(int|float|Vector3)")) - console.log(new Type("List<(int|float|Vector3)>")) - console.log(new Type("(List<List<(int|float|Vector3)>>|List<any>)")) - console.log("Done!") - - console.log("Testing type intersections"); - const tistart = performance.now(); - const types = [ - //standard - new Type("int"), - new Type("bool"), - //template - new Type("List<int>"), - new Type("List<float>"), - new Type("List<List<int>>"), - new Type("List<List<any>>"), - new Type("List<(int|float)>"), - new Type("List<(float|Vector3)>"), - new Type("List<any>"), - //union - new Type("(int|float|bool)"), - new Type("(List<any>|bool)"), - //any - new Type("any"), - //dumb shit - new Type("List<(List<(int|float)>|Vector3)>"), - ]; - const head = document.getElementById("head"); - const body = document.getElementById("body"); + function test() { + for (const el of document.body.children) + if (el.tagName != 'SCRIPT') + el.remove(); + + const tbl = document.createElement('table'); + tbl.innerHTML = '<thead><tr id="head"><th>Type</th></tr></thead><tbody id="body"></tbody>'; + document.body.prepend(tbl); + + console.log("Testing type parsing...") + console.log(new Type("int")) + console.log(new Type("List<int>")) + console.log(new Type("(int, T1)", ["T1"])) + console.log(new Type("List<(T,int)>", ["T"])) + console.log(new Type("(int|float|Vector3)")) + console.log(new Type("List<(int|float|Vector3)>")) + console.log(new Type("(List<List<(int|float|Vector3)>>|List<any>)")) + console.log("Done!") - for (const t of types) { - const headel = document.createElement("th"); - headel.innerText = t; - head.appendChild(headel); + console.log("Testing type intersections"); + const tistart = performance.now(); + const types = [ + //standard + new Type("int"), + new Type("bool"), + //template + new Type("List<int>"), + new Type("List<float>"), + new Type("List<List<int>>"), + new Type("List<List<any>>"), + new Type("List<(int|float)>"), + new Type("List<(float|Vector3)>"), + new Type("List<any>"), + //union + new Type("(int|float|bool)"), + new Type("(List<any>|bool)"), + //any + new Type("any"), + //dumb shit + new Type("List<(List<(int|float)>|Vector3)>"), + ]; + const head = document.getElementById("head"); + const body = document.getElementById("body"); - const row = document.createElement("tr"); - body.appendChild(row); - const title = document.createElement("th"); - title.innerText = t; - row.appendChild(title); - for (const t2 of types) { - const sect = document.createElement("td"); - sect.innerText = intersect(t,t2); - row.appendChild(sect); + for (const t of types) { + const headel = document.createElement("th"); + headel.innerText = t; + head.appendChild(headel); + + const row = document.createElement("tr"); + body.appendChild(row); + const title = document.createElement("th"); + title.innerText = t; + row.appendChild(title); + for (const t2 of types) { + const sect = document.createElement("td"); + sect.innerText = intersect(t,t2); + row.appendChild(sect); + } } - } - - console.log(`Done in ${performance.now() - tistart}ms!`) - console.log("Testing chip class...") - const node = {"ReadonlyPaletteName": "Set Rotation","ReadonlyChipName": "Set Rotation","Description": "Sets the rotation of the target player or object. Players will rotate about the vertical axis only. Will fail in the following cases: If the target object is currently held, select/frozen by the maker pen, or is the child of a gizmo. Will also fail on players that are seated.","IsBetaChip": true,"DeprecationStage": "Active","PaletteNameSource": "FirstNodeDesc","ChipNameSource": "FirstNodeDesc","NodeDescs": [{"Name": "Set Rotation","ReadonlyTypeParams": {"T": "(Player | Rec Room Object)","U": "(Vector3 | Quaternion)"},"Inputs": [{"Name": "","ReadonlyType": "exec","Description": ""},{"Name": "Target","ReadonlyType": "T","Description": ""},{"Name": "Rotation","ReadonlyType": "U","Description": ""}],"Outputs": [{"Name": "","ReadonlyType": "exec","Description": ""},{"Name": "Success","ReadonlyType": "bool","Description": ""}]}],"NodeFilters": [{"FilterPath": ["Player","Physics"]},{"FilterPath": ["Object","Physics"]}]}; - document.body.append((x=new Chip(node).root)); - document.body.appendChild(x); + console.log(`Done in ${performance.now() - tistart}ms!`) + + console.log("Testing chip class...") + const nf = {"ReadonlyPaletteName": "foo","ReadonlyChipName": "foo","Description": "","IsBetaChip": false,"DeprecationStage": "Active","PaletteNameSource": "FirstNodeDesc","ChipNameSource": "FirstNodeDesc","NodeDescs": [{"Name": "foo","ReadonlyTypeParams": {"T": "(int|float|bool|string)","U": "(Vector3 | Quaternion)"},"Inputs": [{"Name": "Input0","ReadonlyType": "T","Description": ""},{"Name": "Input1","ReadonlyType": "List<U>","Description": ""}],"Outputs": [{"Name": "Output0","ReadonlyType": "T","Description": ""},{"Name": "Output1","ReadonlyType": "List<U>","Description": ""}]}]}; + const nb = {"ReadonlyPaletteName": "bar","ReadonlyChipName": "bar","Description": "","IsBetaChip": false,"DeprecationStage": "Active","PaletteNameSource": "FirstNodeDesc","ChipNameSource": "FirstNodeDesc","NodeDescs": [{"Name": "bar","ReadonlyTypeParams": {"T": "(int|float)"},"Inputs": [{"Name": "Input0","ReadonlyType": "T","Description": ""},{"Name": "Input1","ReadonlyType": "List<Quaternion>","Description": ""}],"Outputs": [{"Name": "Output0","ReadonlyType": "T","Description": ""},{"Name": "Output1","ReadonlyType": "List<Quaternion>","Description": ""}]}]}; + const nu = {"ReadonlyPaletteName": "buzz","ReadonlyChipName": "buzz","Description": "","IsBetaChip": false,"DeprecationStage": "Active","PaletteNameSource": "FirstNodeDesc","ChipNameSource": "FirstNodeDesc","NodeDescs": [{"Name": "buzz","ReadonlyTypeParams": {},"Inputs": [{"Name": "Input0","ReadonlyType": "int","Description": ""}],"Outputs": [{"Name": "Output0","ReadonlyType": "int","Description": ""}]}]}; + const na = {"ReadonlyPaletteName": "bazz","ReadonlyChipName": "bazz","Description": "","IsBetaChip": false,"DeprecationStage": "Active","PaletteNameSource": "FirstNodeDesc","ChipNameSource": "FirstNodeDesc","NodeDescs": [{"Name": "bazz","ReadonlyTypeParams": {},"Inputs": [{"Name": "Input0","ReadonlyType": "int","Description": ""}],"Outputs": [{"Name": "Output0","ReadonlyType": "int","Description": ""}]}]}; + + + const chstart = performance.now(); + const foo = newEl('div', ''); + const nodefoo = new Chip(nf, nf.NodeDescs[0], foo); + const bar = newEl('div', ''); + const nodebar = new Chip(nb, nb.NodeDescs[0], bar); + const buzz = newEl('div', ''); + const nodebuzz = new Chip(nu, nu.NodeDescs[0], buzz); + const bazz = newEl('div', ''); + const nodebazz = new Chip(na, na.NodeDescs[0], bazz); + wireData(nodefoo.ins[0], nodebar.outs[0]); + wireData(nodebar.ins[0], nodebuzz.outs[0]); + document.body.append(foo,bar,buzz,bazz); + console.log(`Done in ${performance.now() - chstart}ms!`) + } + const start = performance.now(); + const tests = 100; + for (let i = 0; i < tests; i++) + test(); + const time = performance.now() - start; + console.log(`Avg time: ${time / tests}ms`); </script> </body> </html>
\ No newline at end of file |