UNPKG

4.52 kBJavaScriptView Raw
1describe('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 var f = false
56 var t = true
57
58 var Byte = Scalar(booleanField, 8)
59 var byte1 = new Byte([t, f, f, f, f, f, f, f])
60 }*/)
61 })
62
63 describe('Cyclic', () => {
64 it('works'/*, () => {
65 var Cyclic = algebra.Cyclic
66
67 var elements = ' abcdefghijklmnopqrstuvwyxz0123456789'
68
69 var Alphanum = Cyclic(elements)
70
71 var a = new Alphanum('a')
72 a.data.should.eql('a')
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})