r3-v2/test/R3.test.js

384 lines
12 KiB
JavaScript

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]);
}
);
});