UNPKG

@seanox/aspect-js

Version:

full stack JavaScript framework for SPAs incl. reactivity rendering, mvc / mvvm, models, expression language, datasource, routing, paths, unit test and some more

169 lines (165 loc) 5.6 kB
<!DOCTYPE HTML> <html> <head> <meta charset="ISO-8859-1"> <title>Seanox aspect-js test environment</title> <style> body { font-family: monospace; white-space: pre; } </style> <script src="aspect-js.js"></script> <script type="text/javascript"> Test.activate(); const TestModel = {}; TestModel.ticks = 0; TestModel.ping = () => { return ++TestModel.ticks; }; TestModel.events = []; TestModel.onEvent = (event) => { if (TestModel.events[event] === undefined) TestModel.events[event] = 0; TestModel.events[event]++; }; Composite.listen(Composite.EVENT_RENDER_START, TestModel.onEvent); Composite.listen(Composite.EVENT_RENDER_NEXT, TestModel.onEvent); Composite.listen(Composite.EVENT_RENDER_END, TestModel.onEvent); Test.create({test() { const events = TestModel.events[Composite.EVENT_RENDER_START]; Assert.assertTrue(events !== undefined); Assert.assertEquals(1, events); }}); Test.create({test() { const events = TestModel.events[Composite.EVENT_RENDER_NEXT]; Assert.assertTrue(events !== undefined); // 73 initial elements + text // +63 text dynamic (added by renderer) // +84 text static (added by renderer) Assert.assertEquals(220, events); }}); Test.create({test() { const events = TestModel.events[Composite.EVENT_RENDER_END]; Assert.assertTrue(events !== undefined); Assert.assertEquals(1, events); }}); Composite.listen(Composite.EVENT_RENDER_END, () => { Test.start(); }); </script> </head> <body> <span> A-1:{{TestModel.ping()}} A-2:{{TestModel.ping()}} A-3:{{TestModel.ping()}} <span> <span> A-A-A-1:{{TestModel.ping()}} A-A-A-2:{{TestModel.ping()}} A-A-A-3:{{TestModel.ping()}} <span> A-A-A-A-1:{{TestModel.ping()}} A-A-A-A-2:{{TestModel.ping()}} A-A-A-A-3:{{TestModel.ping()}} <span> A-A-A-A-A-1:{{TestModel.ping()}} A-A-A-A-A-2:{{TestModel.ping()}} A-A-A-A-A-3:{{TestModel.ping()}} </span> <span> A-A-A-A-B-1:{{TestModel.ping()}} A-A-A-A-B-2:{{TestModel.ping()}} A-A-A-A-B-3:{{TestModel.ping()}} </span> </span> <span> A-A-A-B-1:{{TestModel.ping()}} A-A-A-B-2:{{TestModel.ping()}} A-A-A-B-3:{{TestModel.ping()}} </span> <span> A-A-A-C-1:{{TestModel.ping()}} A-A-A-C-2:{{TestModel.ping()}} A-A-A-C-3:{{TestModel.ping()}} </span> </span> </span> </span> <span> B-1:{{TestModel.ping()}} B-2:{{TestModel.ping()}} B-3:{{TestModel.ping()}} <span> <span> B-A-A-1:{{TestModel.ping()}} B-A-A-2:{{TestModel.ping()}} B-A-A-3:{{TestModel.ping()}} <span> B-A-A-A-1:{{TestModel.ping()}} B-A-A-A-2:{{TestModel.ping()}} B-A-A-A-3:{{TestModel.ping()}} <span> B-A-A-A-A-1:{{TestModel.ping()}} B-A-A-A-A-2:{{TestModel.ping()}} B-A-A-A-A-3:{{TestModel.ping()}} </span> <span> B-A-A-A-B-1:{{TestModel.ping()}} B-A-A-A-B-2:{{TestModel.ping()}} B-A-A-A-B-3:{{TestModel.ping()}} </span> </span> <span> B-A-A-B-1:{{TestModel.ping()}} B-A-A-B-2:{{TestModel.ping()}} B-A-A-B-3:{{TestModel.ping()}} </span> <span> B-A-A-C-1:{{TestModel.ping()}} B-A-A-C-2:{{TestModel.ping()}} B-A-A-C-3:{{TestModel.ping()}} </span> </span> </span> </span> <span> C-1:{{TestModel.ping()}} C-2:{{TestModel.ping()}} C-3:{{TestModel.ping()}} <span> <span> C-A-A-1:{{TestModel.ping()}} C-A-A-2:{{TestModel.ping()}} C-A-A-3:{{TestModel.ping()}} <span> C-A-A-A-1:{{TestModel.ping()}} C-A-A-A-2:{{TestModel.ping()}} C-A-A-A-3:{{TestModel.ping()}} <span> C-A-A-A-A-1:{{TestModel.ping()}} C-A-A-A-A-2:{{TestModel.ping()}} C-A-A-A-A-3:{{TestModel.ping()}} </span> <span> C-A-A-A-B-1:{{TestModel.ping()}} C-A-A-A-B-2:{{TestModel.ping()}} C-A-A-A-B-3:{{TestModel.ping()}} </span> </span> <span> C-A-A-B-1:{{TestModel.ping()}} C-A-A-B-2:{{TestModel.ping()}} C-A-A-B-3:{{TestModel.ping()}} </span> <span> C-A-A-C-1:{{TestModel.ping()}} C-A-A-C-2:{{TestModel.ping()}} C-A-A-C-3:{{TestModel.ping()}} </span> </span> </span> </span> </body> </html>