151 lines
4.3 KiB
JavaScript
151 lines
4.3 KiB
JavaScript
window.testSuites.push( class testParse {
|
|
|
|
testParseConstructor() {
|
|
class Space extends Shadow {
|
|
form
|
|
contents = []
|
|
|
|
constructor(...params) {
|
|
super(...params)
|
|
}
|
|
}
|
|
|
|
let newClass = window.Registry.parseConstructor(Space)
|
|
if(!newClass.prototype.constructor.toString().includes("window.Registry.construct(")) {
|
|
return "'window.Registry.construct(' not detected!"
|
|
}
|
|
}
|
|
|
|
testParseConstructorIfNoneProvided() {
|
|
class Space extends Shadow {
|
|
$form
|
|
}
|
|
|
|
let newClass = window.Registry.parseConstructor(Space)
|
|
if(!newClass.prototype.constructor.toString().includes("window.Registry.construct(")) {
|
|
return "'window.Registry.construct(' not detected!"
|
|
}
|
|
}
|
|
|
|
testParseConstructorFailsIfNoSuper() {
|
|
class Space extends Shadow {
|
|
form
|
|
contents = []
|
|
|
|
constructor() {
|
|
}
|
|
}
|
|
|
|
try {
|
|
let newClass = window.Registry.parseConstructor(Space)
|
|
return "No error thrown!"
|
|
} catch(e) {
|
|
|
|
}
|
|
}
|
|
|
|
testParseClassFieldsWithNoDefault() {
|
|
class Space extends Shadow {
|
|
form
|
|
contents = []
|
|
|
|
constructor(...params) {
|
|
super(...params)
|
|
}
|
|
}
|
|
|
|
const fields = window.Registry.parseClassFields(Space);
|
|
if(!(JSON.stringify(fields) === JSON.stringify(["form", "contents"]))) {
|
|
return `Fields don't match`
|
|
}
|
|
}
|
|
|
|
testParseClassFieldsWithEqualityCheck() {
|
|
class Space extends Shadow {
|
|
form = Forms.observe(window.location.pathname, this)
|
|
|
|
contents = [
|
|
...this.form.children.map(form => {
|
|
switch(form.type) {
|
|
case "file" === "file":
|
|
return File(form)
|
|
case "space":
|
|
return ChildSpace(form)
|
|
case "link":
|
|
return Link()
|
|
}
|
|
})
|
|
]
|
|
|
|
constructor(...params) {
|
|
super(...params)
|
|
}
|
|
}
|
|
|
|
const fields = window.Registry.parseClassFields(Space);
|
|
if(!(JSON.stringify(fields) === JSON.stringify(["form", "contents"]))) {
|
|
return `Fields don't match`
|
|
}
|
|
}
|
|
|
|
testParseClassFieldsWithInnerFunctionVariable() {
|
|
class Space extends Shadow {
|
|
form = Forms.observe(window.location.pathname, this)
|
|
|
|
contents = [
|
|
...this.form.children.map(form => {
|
|
let file;
|
|
file = "hey"
|
|
switch(form.type) {
|
|
case "file" === "file":
|
|
return File(form)
|
|
case "space":
|
|
return ChildSpace(form)
|
|
case "link":
|
|
return Link()
|
|
}
|
|
})
|
|
]
|
|
|
|
constructor(...params) {
|
|
super(...params)
|
|
}
|
|
}
|
|
|
|
const fields = window.Registry.parseClassFields(Space);
|
|
if(!(JSON.stringify(fields) === JSON.stringify(["form", "contents"]))) {
|
|
return `Fields don't match`
|
|
}
|
|
}
|
|
|
|
ParseConstructorWithFunctionsBelow() {
|
|
class Space extends Shadow {
|
|
$$form = Forms.observe(window.location.pathname, this)
|
|
|
|
render = () => {
|
|
ForEach(this.form.children, (form) => {
|
|
switch(form.type) {
|
|
case "file":
|
|
File(form)
|
|
break
|
|
case "space":
|
|
ChildSpace(form)
|
|
break
|
|
case "link":
|
|
Link()
|
|
break
|
|
}
|
|
})
|
|
}
|
|
|
|
constructor() {
|
|
super()
|
|
}
|
|
|
|
connectedCallback() {
|
|
}
|
|
}
|
|
|
|
window.Registry.parseConstructor(Space)
|
|
}
|
|
}) |