import { assert, expect } from 'chai'; import Intersection from '../src/05/intersection'; import Ray from '../src/05/ray'; import Vector from "../src/05/vector"; import Matrix from '../src/07/matrix'; import { GroupNode, SphereNode } from '../src/08/nodes'; import { Translation, Rotation, Scaling, MatrixTransformation, Transformation } from "../src/08/transformation"; describe('GroupNode', () => { it('can be correctly initialized with a Transformation', () => { let t: Transformation = new MatrixTransformation(Matrix.identity(), Matrix.identity()); let g: GroupNode = new GroupNode(t); expect(g).to.be.an('object'); }); it('can have children', () => { let t: Transformation = new MatrixTransformation(Matrix.identity(), Matrix.identity()); let g: GroupNode = new GroupNode(t); let c: GroupNode = new GroupNode(t); expect(g).to.be.an('object'); expect(c).to.be.an('object'); g.add(c); expect(g.children).to.be.an('Array'); expect(g.children.length).to.equal(1); }); }); describe('SphereNode', () => { it('can be intersected in Origin', () => { let t: Transformation = new MatrixTransformation(Matrix.identity(), Matrix.identity()); let s: SphereNode = new SphereNode(t, new Vector(0.0, 0.0, 0.0, 1.0)); expect(s).to.be.an('object'); let r: Ray = new Ray(new Vector(0.0, 0.0, 10, 1.0), new Vector(0.0, 0.0, -1.0, 0.0)); let i: Intersection = s.intersect(r); assert.deepEqual(i.point.data, [ 0, 0, 1, 1, ]); }); });