const {assert} = require('chai'); const Event = require('../src/r3/r3-event.js'); //GENERATED_COMPONENT_IMPORTS_START const ComponentCode = require('../src/r3/r3-component/./r3-component-code.js'); const ComponentCodeJS = require('../src/r3/r3-component/./r3-component-code-j-s.js'); const ComponentDOM = require('../src/r3/r3-component/./r3-component-d-o-m.js'); const ComponentDOMCanvas = require('../src/r3/r3-component/./r3-component-d-o-m-canvas.js'); const ComponentDOMImage = require('../src/r3/r3-component/./r3-component-d-o-m-image.js'); const ComponentGraphics = require('../src/r3/r3-component/./r3-component-graphics.js'); const ComponentGraphicsGeometry = require('../src/r3/r3-component/./r3-component-graphics-geometry.js'); const ComponentGraphicsGeometryBuffer = require('../src/r3/r3-component/./r3-component-graphics-geometry-buffer.js'); const ComponentGraphicsGeometryBufferPlane = require('../src/r3/r3-component/./r3-component-graphics-geometry-buffer-plane.js'); const ComponentGraphicsImage = require('../src/r3/r3-component/./r3-component-graphics-image.js'); const ComponentGraphicsMaterial = require('../src/r3/r3-component/./r3-component-graphics-material.js'); const ComponentGraphicsMesh = require('../src/r3/r3-component/./r3-component-graphics-mesh.js'); const ComponentGraphicsTexture = require('../src/r3/r3-component/./r3-component-graphics-texture.js'); const ComponentInput = require('../src/r3/r3-component/./r3-component-input.js'); const ComponentInputTouch = require('../src/r3/r3-component/./r3-component-input-touch.js'); //GENERATED_COMPONENT_IMPORTS_END //GENERATED_ENTITY_IMPORTS_START const EntitySlider = require('../src/r3/r3-entity/./r3-entity-slider.js'); //GENERATED_ENTITY_IMPORTS_END //GENERATED_RUNTIME_IMPORTS_START const RuntimeAudio = require('../src/r3/r3-runtime/./r3-runtime-audio.js'); const RuntimeAudioThree = require('../src/r3/r3-runtime/./r3-runtime-audio-three.js'); const RuntimeCode = require('../src/r3/r3-runtime/./r3-runtime-code.js'); const RuntimeCodeJS = require('../src/r3/r3-runtime/./r3-runtime-code-j-s.js'); const RuntimeCoder = require('../src/r3/r3-runtime/./r3-runtime-coder.js'); const RuntimeCoderCodeMirror = require('../src/r3/r3-runtime/./r3-runtime-coder-code-mirror.js'); const RuntimeDOM = require('../src/r3/r3-runtime/./r3-runtime-d-o-m.js'); const RuntimeDOMJS = require('../src/r3/r3-runtime/./r3-runtime-d-o-m-j-s.js'); const RuntimeDOMWeb = require('../src/r3/r3-runtime/./r3-runtime-d-o-m-web.js'); const RuntimeGUI = require('../src/r3/r3-runtime/./r3-runtime-g-u-i.js'); const RuntimeGUIControlKit = require('../src/r3/r3-runtime/./r3-runtime-g-u-i-control-kit.js'); const RuntimeGraphics = require('../src/r3/r3-runtime/./r3-runtime-graphics.js'); const RuntimeGraphicsThree = require('../src/r3/r3-runtime/./r3-runtime-graphics-three.js'); const RuntimePhysics = require('../src/r3/r3-runtime/./r3-runtime-physics.js'); const RuntimePhysicsBullet = require('../src/r3/r3-runtime/./r3-runtime-physics-bullet.js'); const RuntimeSocket = require('../src/r3/r3-runtime/./r3-runtime-socket.js'); const RuntimeStatistics = require('../src/r3/r3-runtime/./r3-runtime-statistics.js'); const RuntimeStatisticsStats = require('../src/r3/r3-runtime/./r3-runtime-statistics-stats.js'); //GENERATED_RUNTIME_IMPORTS_END //GENERATED_R3_OBJECT_IMPORTS_START const Project = require('../src/r3/r3-object/./r3-project.js'); //GENERATED_R3_OBJECT_IMPORTS_END describe('R3 Tests', () => { it ( 'R3 loads', () => { const R3 = require('../src/r3/'); assert.typeOf(R3.Version, 'string'); assert.typeOf(R3.CompileDate, 'string'); console.log('R3 Version : ' + R3.Version); console.log('R3 Compile Date : ' + R3.CompileDate); } ); it ( 'Creation of all components succeed', () => { //GENERATED_COMPONENT_CREATE_START const componentCode = new ComponentCode(); assert.isTrue(componentCode.initialized); const componentCodeJS = new ComponentCodeJS(); assert.isTrue(componentCodeJS.initialized); const componentDOM = new ComponentDOM(); assert.isTrue(componentDOM.initialized); const componentDOMCanvas = new ComponentDOMCanvas(); assert.isTrue(componentDOMCanvas.initialized); const componentDOMImage = new ComponentDOMImage(); assert.isTrue(componentDOMImage.initialized); const componentGraphics = new ComponentGraphics(); assert.isTrue(componentGraphics.initialized); const componentGraphicsGeometry = new ComponentGraphicsGeometry(); assert.isTrue(componentGraphicsGeometry.initialized); const componentGraphicsGeometryBuffer = new ComponentGraphicsGeometryBuffer(); assert.isTrue(componentGraphicsGeometryBuffer.initialized); const componentGraphicsGeometryBufferPlane = new ComponentGraphicsGeometryBufferPlane(); assert.isTrue(componentGraphicsGeometryBufferPlane.initialized); const componentGraphicsImage = new ComponentGraphicsImage(); assert.isTrue(componentGraphicsImage.initialized); const componentGraphicsMaterial = new ComponentGraphicsMaterial(); assert.isTrue(componentGraphicsMaterial.initialized); const componentGraphicsMesh = new ComponentGraphicsMesh(); assert.isTrue(componentGraphicsMesh.initialized); const componentGraphicsTexture = new ComponentGraphicsTexture(); assert.isTrue(componentGraphicsTexture.initialized); const componentInput = new ComponentInput(); assert.isTrue(componentInput.initialized); const componentInputTouch = new ComponentInputTouch(); assert.isTrue(componentInputTouch.initialized); //GENERATED_COMPONENT_CREATE_END } ); it ( 'Creation of all entities succeed', () => { //GENERATED_ENTITY_CREATE_START const entitySlider = new EntitySlider(); assert.isTrue(entitySlider.initialized); //GENERATED_ENTITY_CREATE_END } ); it ( 'Creation of all runtimes succeed', () => { //GENERATED_RUNTIME_CREATE_START const runtimeAudio = new RuntimeAudio(); const runtimeAudioThree = new RuntimeAudioThree(); const runtimeCode = new RuntimeCode(); const runtimeCodeJS = new RuntimeCodeJS(); const runtimeCoder = new RuntimeCoder(); const runtimeCoderCodeMirror = new RuntimeCoderCodeMirror(); const runtimeDOM = new RuntimeDOM(); const runtimeDOMJS = new RuntimeDOMJS(); const runtimeDOMWeb = new RuntimeDOMWeb(); const runtimeGUI = new RuntimeGUI(); const runtimeGUIControlKit = new RuntimeGUIControlKit(); const runtimeGraphics = new RuntimeGraphics(); const runtimeGraphicsThree = new RuntimeGraphicsThree(); const runtimePhysics = new RuntimePhysics(); const runtimePhysicsBullet = new RuntimePhysicsBullet(); const runtimeSocket = new RuntimeSocket(); const runtimeStatistics = new RuntimeStatistics(); const runtimeStatisticsStats = new RuntimeStatisticsStats(); //GENERATED_RUNTIME_CREATE_END } ); it ( 'Creation of all objects succeed', () => { //GENERATED_R3_OBJECT_CREATE_START const project = new Project(); //GENERATED_R3_OBJECT_CREATE_END } ); it ( 'Linking system sets parent / child relationships correctly', () => { const slider1 = new EntitySlider( { name : 'slider1' } ); const canvas = new ComponentCanvas(); const touch = new ComponentTouch(); const image1 = new ComponentImage(); const image2 = new ComponentImage(); const image3 = new ComponentImage(); // test normal assignment slider1.canvas = canvas; assert.deepEqual(canvas.parents, [slider1]); assert.deepEqual(slider1.children, [canvas]); assert.deepEqual(slider1.components, [canvas]); slider1.images = [image1]; assert.deepEqual(image1.parents, [slider1]); assert.deepEqual(slider1.children, [canvas, image1]); assert.deepEqual(slider1.images, [image1]); assert.deepEqual(slider1.components, [canvas, image1]); // test assignment through constructor const slider2 = new EntitySlider( { name : 'slider2', canvas : canvas, images : [image1, image2] } ) assert.deepEqual(canvas.parents, [slider1, slider2]); assert.deepEqual(image1.parents, [slider1, slider2]); assert.deepEqual(image2.parents, [slider2]); assert.deepEqual(slider2.images, [image1, image2]); assert.deepEqual(slider2.children, [canvas, image1, image2]); assert.deepEqual(slider2.components, [canvas, image1, image2]); try { const slider3 = new EntitySlider( { name: 'badSlider3', canvas: canvas, images: null } ) } catch (err) { assert.isTrue(err instanceof TypeError); } const slider3 = new EntitySlider( { name : 'slider3', canvas } ); slider3.images = [image1, image2, image3]; assert.deepEqual(image1.parents, [slider1, slider2, slider3]); assert.deepEqual(slider3.children, [canvas, image1, image2, image3]); assert.deepEqual(slider3.components, [canvas, image1, image2, image3]); //test normal re-assignment slider3.images = [image1, image3]; assert.deepEqual(image1.parents, [slider1, slider2, slider3]); assert.deepEqual(image2.parents, [slider2]); assert.deepEqual(slider3.children, [canvas, image1, image3]); assert.deepEqual(slider3.components, [canvas, image1, image3]); //test via splice slider3.images = [];//splice(0,2); assert.deepEqual(image1.parents, [slider1, slider2]); assert.deepEqual(image2.parents, [slider2]); assert.deepEqual(image3.parents, []); assert.deepEqual(slider3.children, [canvas]); assert.deepEqual(slider3.components, [canvas]); slider3.canvas = null; assert.deepEqual(canvas.parents, [slider1, slider2]); assert.deepEqual(slider3.children, []); assert.deepEqual(slider3.components, []); try { const slider4 = new EntitySlider( { canvas, images: [{}] } ); } catch (err) { assert.isTrue(err instanceof TypeError); } assert.deepEqual(canvas.parents, [slider1, slider2]); try { const slider5 = new EntitySlider( { name : 'slider5', canvas : image1 } ); } catch (err) { assert.isTrue(err instanceof TypeError); } // test if delete works on an object const slider6 = new EntitySlider( { name : 'slider6', canvas : canvas } ); delete slider6.canvas; // assert.deepEqual(canvas.parents, [slider1, slider2]); console.log('DELETE AND SPLICE DOES NOT WORK'); } ); it( 'Linking system detects future ready state correctly', () => { const R3 = require('../src/r3/'); let touch1 = new ComponentTouch( { name : 'touch1' } ) let canvas = new ComponentCanvas(); assert.isFalse(touch1.ready[0]); touch1.domComponent = canvas; assert.isTrue(touch1.ready[0]); let slider1 = new EntitySlider(); assert.isFalse(slider1.ready[0]); let images = []; slider1.images = images; assert.isFalse(slider1.ready[0]); let image1 = new ComponentImage(); slider1.images = [image1]; assert.isFalse(slider1.ready[0]); slider1.canvas = canvas; assert.isFalse(slider1.ready[0]); slider1.touch = touch1; assert.isTrue(slider1.ready[0]); touch1.domComponent = null; assert.isFalse(touch1.ready[0]); assert.isFalse(slider1.ready[0]); } ); it( 'Tests the Graph building process', () => { const R3 = require('../src/r3/'); let canvas = new ComponentCanvas(); let image1 = new ComponentImage(); let image2 = new ComponentImage(); let image3 = new ComponentImage(); let image4 = new ComponentImage(); let touch = new ComponentTouch( { domComponent : canvas } ); let slider = new EntitySlider( { canvas, images : [image1, image2, image3, image4], } ) slider.touch = touch; assert.isTrue(slider.ready[0]); touch.domComponent = null; assert.isFalse(slider.ready[0]); touch.domComponent = canvas; assert.isTrue(slider.ready[0]); } ); });