1 | describe('API', () => {
|
2 | var algebra = require('algebra')
|
3 |
|
4 | var C = algebra.C
|
5 | var Complex = algebra.Complex
|
6 | var H = algebra.H
|
7 | var Quaternion = algebra.Quaternion
|
8 | var R = algebra.R
|
9 | var R2 = algebra.R2
|
10 | var R3 = algebra.R3
|
11 | var R2x2 = algebra.R2x2
|
12 | var Real = algebra.Real
|
13 | var Scalar = algebra.Scalar
|
14 | var MatrixSpace = algebra.MatrixSpace
|
15 | var TensorSpace = algebra.TensorSpace
|
16 | var VectorSpace = algebra.VectorSpace
|
17 |
|
18 | var booleanField = require('../src/booleanField')
|
19 |
|
20 | describe('About operators', () => {
|
21 | it('works', () => {
|
22 | var vector1 = new R2([1, 2])
|
23 | var vector2 = new R2([3, 4])
|
24 |
|
25 | R2.addition(vector1, [3, 4]).should.deepEqual([4, 6])
|
26 | R2.addition([1, 2], vector2).should.deepEqual([4, 6])
|
27 | R2.addition(vector1, vector2).should.deepEqual([4, 6])
|
28 |
|
29 | var vector3 = vector1.addition([3, 4])
|
30 | var vector4 = vector1.addition(vector2)
|
31 | R2.equality(vector3, vector4).should.be.ok
|
32 |
|
33 | vector1.addition(vector1, vector1).equality([4, 6]).should.be.ok
|
34 |
|
35 | vector1.data.should.deepEqual([1, 2])
|
36 | })
|
37 | })
|
38 |
|
39 | describe('Bool', () => {
|
40 | var Bool = Scalar(booleanField)
|
41 |
|
42 | it('works', () => {
|
43 | Bool.contains(true).should.be.ok
|
44 | Bool.contains(1).should.be.ko
|
45 |
|
46 | Bool.addition(true, false).should.eql(true)
|
47 |
|
48 | var t = new Bool(true)
|
49 | t.negation().data.should.eql(false)
|
50 | })
|
51 | })
|
52 |
|
53 | describe('Byte', () => {
|
54 | it('is an octionion of booleans' |
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 | )
|
61 | })
|
62 |
|
63 | describe('Cyclic', () => {
|
64 | it('works' |
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
73 | )
|
74 | })
|
75 |
|
76 | describe('Real', () => {
|
77 | it('works', () => {
|
78 | var Real = algebra.Real
|
79 |
|
80 | Real.addition(1, 2).should.eql(3)
|
81 |
|
82 | var pi = new Real(Math.PI)
|
83 | var twoPi = pi.mul(2)
|
84 |
|
85 | Real.subtraction(twoPi, 2 * Math.PI).should.eql(0)
|
86 | })
|
87 | })
|
88 |
|
89 | describe('Complex', () => {
|
90 | it('works', () => {
|
91 | var Complex = algebra.Complex
|
92 | var complex1 = new Complex([1, 2])
|
93 |
|
94 | complex1.conjugation().data.should.deepEqual([1, -2])
|
95 | })
|
96 | })
|
97 |
|
98 | describe('Common spaces', () => {
|
99 | describe('R', () => {
|
100 | it('is an alias of Real', () => {
|
101 | R.should.be.eql(Real)
|
102 | })
|
103 | })
|
104 |
|
105 | describe('R2', () => {
|
106 | it('is an alias of VectorSpace(Real)(2)', () => {
|
107 | R2.should.be.eql(VectorSpace(Real)(2))
|
108 | })
|
109 | })
|
110 |
|
111 | describe('R3', () => {
|
112 | it('is an alias of VectorSpace(Real)(3)', () => {
|
113 | R3.should.be.eql(VectorSpace(Real)(3))
|
114 | })
|
115 | })
|
116 |
|
117 | describe('R2x2', () => {
|
118 | it('is an alias of MatrixSpace(Real)(2)', () => {
|
119 | R2x2.should.be.eql(MatrixSpace(Real)(2))
|
120 | })
|
121 | })
|
122 |
|
123 | describe('C', () => {
|
124 | it('is an alias of Complex', () => {
|
125 | C.should.be.eql(Complex)
|
126 | })
|
127 | })
|
128 |
|
129 | describe('H', () => {
|
130 | it('is an alias of Quaternion', () => {
|
131 | H.should.be.eql(Quaternion)
|
132 | })
|
133 | })
|
134 | })
|
135 |
|
136 | describe('Vector', () => {
|
137 | describe('vector.dimension', () => {
|
138 | it('is an attribute', () => {
|
139 | var vector = new R2([1, 1])
|
140 |
|
141 | vector.dimension.should.eql(2)
|
142 | })
|
143 | })
|
144 |
|
145 | describe('addition', () => {
|
146 | it('works', () => {
|
147 | R2.addition([2, 1], [1, 2]).should.deepEqual([3, 3])
|
148 |
|
149 | var vector1 = new R2([2, 1])
|
150 | var vector2 = new R2([2, 2])
|
151 |
|
152 | var vector3 = vector1.addition(vector2)
|
153 |
|
154 | vector3.data.should.deepEqual([4, 3])
|
155 | })
|
156 | })
|
157 |
|
158 | describe('Cross product', () => {
|
159 | it('works', () => {
|
160 | R3.crossProduct([3, -3, 1], [4, 9, 2]).should.deepEqual([-15, -2, 39])
|
161 |
|
162 | var vector1 = new R3([3, -3, 1])
|
163 | var vector2 = new R3([4, 9, 2])
|
164 |
|
165 | var vector3 = vector1.crossProduct(vector2)
|
166 |
|
167 | vector3.data.should.deepEqual([-15, -2, 39])
|
168 | })
|
169 | })
|
170 | })
|
171 |
|
172 | describe('Tensor', () => {
|
173 | describe('equality', () => {
|
174 | it('works', () => {
|
175 | var T2x2x2 = TensorSpace(Real)([2, 2, 2])
|
176 |
|
177 | var tensor1 = new T2x2x2([1, 2, 3, 4, 5, 6, 7, 8])
|
178 | var tensor2 = new T2x2x2([2, 3, 4, 5, 6, 7, 8, 9])
|
179 |
|
180 | T2x2x2.equality(tensor1, tensor1).should.be.ok
|
181 | T2x2x2.equality(tensor1, tensor2).should.be.ko
|
182 |
|
183 | tensor1.equality(tensor1).should.be.ok
|
184 | tensor2.equality(tensor2).should.be.ko
|
185 | })
|
186 | })
|
187 | })
|
188 | })
|