376 lines
11 KiB
JavaScript
376 lines
11 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 ComponentDOM = require('../src/r3/r3-component/./r3-component-d-o-m.js');
|
|
const ComponentCanvas = require('../src/r3/r3-component/./r3-component-canvas.js');
|
|
const ComponentGeometry = require('../src/r3/r3-component/./r3-component-geometry.js');
|
|
const ComponentBufferGeometry = require('../src/r3/r3-component/./r3-component-buffer-geometry.js');
|
|
const ComponentPlaneGeometry = require('../src/r3/r3-component/./r3-component-plane-geometry.js');
|
|
const ComponentGraphics = require('../src/r3/r3-component/./r3-component-graphics.js');
|
|
const ComponentImage = require('../src/r3/r3-component/./r3-component-image.js');
|
|
const ComponentInput = require('../src/r3/r3-component/./r3-component-input.js');
|
|
const ComponentTouch = require('../src/r3/r3-component/./r3-component-touch.js');
|
|
const ComponentMaterial = require('../src/r3/r3-component/./r3-component-material.js');
|
|
const ComponentMesh = require('../src/r3/r3-component/./r3-component-mesh.js');
|
|
const ComponentTexture = require('../src/r3/r3-component/./r3-component-texture.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 RuntimeCoder = require('../src/r3/r3-runtime/./r3-runtime-coder.js');
|
|
const RuntimeCodeMirror = require('../src/r3/r3-runtime/./r3-runtime-code-mirror.js');
|
|
const RuntimeDOM = require('../src/r3/r3-runtime/./r3-runtime-d-o-m.js');
|
|
const RuntimeDocument = require('../src/r3/r3-runtime/./r3-runtime-document.js');
|
|
const RuntimeJsDOM = require('../src/r3/r3-runtime/./r3-runtime-js-d-o-m.js');
|
|
const RuntimeGUI = require('../src/r3/r3-runtime/./r3-runtime-g-u-i.js');
|
|
const RuntimeControlKit = require('../src/r3/r3-runtime/./r3-runtime-control-kit.js');
|
|
const RuntimeGraphics = require('../src/r3/r3-runtime/./r3-runtime-graphics.js');
|
|
const RuntimeThree = require('../src/r3/r3-runtime/./r3-runtime-three.js');
|
|
const RuntimeImage = require('../src/r3/r3-runtime/./r3-runtime-image.js');
|
|
const RuntimeNodeJSImage = require('../src/r3/r3-runtime/./r3-runtime-node-j-s-image.js');
|
|
const RuntimeWebImage = require('../src/r3/r3-runtime/./r3-runtime-web-image.js');
|
|
const RuntimePhysics = require('../src/r3/r3-runtime/./r3-runtime-physics.js');
|
|
const RuntimeBullet = require('../src/r3/r3-runtime/./r3-runtime-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 RuntimeStats = require('../src/r3/r3-runtime/./r3-runtime-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 componentDOM = new ComponentDOM();
|
|
assert.isTrue(componentDOM.initialized);
|
|
const componentCanvas = new ComponentCanvas();
|
|
assert.isTrue(componentCanvas.initialized);
|
|
const componentGeometry = new ComponentGeometry();
|
|
assert.isTrue(componentGeometry.initialized);
|
|
const componentBufferGeometry = new ComponentBufferGeometry();
|
|
assert.isTrue(componentBufferGeometry.initialized);
|
|
const componentPlaneGeometry = new ComponentPlaneGeometry();
|
|
assert.isTrue(componentPlaneGeometry.initialized);
|
|
const componentGraphics = new ComponentGraphics();
|
|
assert.isTrue(componentGraphics.initialized);
|
|
const componentImage = new ComponentImage();
|
|
assert.isTrue(componentImage.initialized);
|
|
const componentInput = new ComponentInput();
|
|
assert.isTrue(componentInput.initialized);
|
|
const componentTouch = new ComponentTouch();
|
|
assert.isTrue(componentTouch.initialized);
|
|
const componentMaterial = new ComponentMaterial();
|
|
assert.isTrue(componentMaterial.initialized);
|
|
const componentMesh = new ComponentMesh();
|
|
assert.isTrue(componentMesh.initialized);
|
|
const componentTexture = new ComponentTexture();
|
|
assert.isTrue(componentTexture.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 runtimeCoder = new RuntimeCoder();
|
|
const runtimeCodeMirror = new RuntimeCodeMirror();
|
|
const runtimeDOM = new RuntimeDOM();
|
|
const runtimeDocument = new RuntimeDocument();
|
|
const runtimeJsDOM = new RuntimeJsDOM();
|
|
const runtimeGUI = new RuntimeGUI();
|
|
const runtimeControlKit = new RuntimeControlKit();
|
|
const runtimeGraphics = new RuntimeGraphics();
|
|
const runtimeThree = new RuntimeThree();
|
|
const runtimeImage = new RuntimeImage();
|
|
const runtimeNodeJSImage = new RuntimeNodeJSImage();
|
|
const runtimeWebImage = new RuntimeWebImage();
|
|
const runtimePhysics = new RuntimePhysics();
|
|
const runtimeBullet = new RuntimeBullet();
|
|
const runtimeSocket = new RuntimeSocket();
|
|
const runtimeStatistics = new RuntimeStatistics();
|
|
const runtimeStats = new RuntimeStats();
|
|
//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]);
|
|
|
|
}
|
|
);
|
|
|
|
});
|
|
|