1
+ import { Vector3DSchema } from "@mat3ra/esse/dist/js/types" ;
1
2
import { expect } from "chai" ;
2
3
3
- import { RoundedVector3D , Vector3D } from "../../src/js/vector " ;
4
+ import { RoundedVector3D , Vector3D } from "../../src/js" ;
4
5
5
- const VECTOR_FLOAT : [ number , number , number ] = [ 1.23456789 , 2.345678901 , 3.456789012 ] ;
6
+ const VECTOR_FLOAT : Vector3DSchema = [ 1.23456789 , 2.345678901 , 3.456789012 ] ;
6
7
const VECTOR_FLOAT_NORM = 4.3561172682906 ;
7
8
const FLOAT_PRECISION = 1e-8 ;
8
9
9
- const VECTOR_FLOAT_DIFFERENT_WITHIN_TOL : [ number , number , number ] = [
10
- 1.23456789999 , 2.345678901 , 3.456789012 ,
11
- ] ;
12
- const VECTOR_FLOAT_DIFFERENT_OUTSIDE_TOL : [ number , number , number ] = [
13
- 1.2345699999 , 2.345678901 , 3.456789012 ,
14
- ] ;
10
+ const VECTOR_FLOAT_DIFFERENT_WITHIN_TOL : Vector3DSchema = [ 1.23456789999 , 2.345678901 , 3.456789012 ] ;
11
+ const VECTOR_FLOAT_DIFFERENT_OUTSIDE_TOL : Vector3DSchema = [ 1.2345699999 , 2.345678901 , 3.456789012 ] ;
15
12
16
- const VECTOR_FLOAT_ROUNDED_4 : [ number , number , number ] = [ 1.2346 , 2.3457 , 3.4568 ] ;
17
- const VECTOR_FLOAT_ROUNDED_3 : [ number , number , number ] = [ 1.235 , 2.346 , 3.457 ] ;
13
+ const VECTOR_FLOAT_ROUNDED_4 : Vector3DSchema = [ 1.2346 , 2.3457 , 3.4568 ] ;
14
+ const VECTOR_FLOAT_ROUNDED_3 : Vector3DSchema = [ 1.235 , 2.346 , 3.457 ] ;
18
15
19
16
describe ( "Vector3D" , ( ) => {
20
17
it ( "should do init and value access" , ( ) => {
@@ -44,6 +41,14 @@ describe("Vector3D", () => {
44
41
const vector = new Vector3D ( VECTOR_FLOAT ) ;
45
42
expect ( Math . abs ( vector . norm - VECTOR_FLOAT_NORM ) ) . to . be . lessThan ( FLOAT_PRECISION ) ;
46
43
} ) ;
44
+
45
+ it ( "should translate vector" , ( ) => {
46
+ const vector = new Vector3D ( VECTOR_FLOAT ) ;
47
+ const translationVector3D = new Vector3D ( [ 1 , 1 , 1 ] ) ;
48
+ const expectedTranslation = [ 2.23456789 , 3.345678901 , 4.456789012 ] ;
49
+ vector . translateByVector ( translationVector3D ) ;
50
+ expect ( vector . value ) . to . deep . equal ( expectedTranslation ) ;
51
+ } ) ;
47
52
} ) ;
48
53
49
54
describe ( "RoundedVector3D" , ( ) => {
@@ -57,18 +62,18 @@ describe("RoundedVector3D", () => {
57
62
const vector = new RoundedVector3D ( VECTOR_FLOAT ) ;
58
63
59
64
expect ( vector . toJSON ( ) ) . to . deep . equal ( VECTOR_FLOAT_ROUNDED_4 ) ;
60
- expect ( vector . value_rounded ) . to . deep . equal ( VECTOR_FLOAT_ROUNDED_4 ) ;
61
- expect ( vector . x_rounded ) . to . be . deep . equal ( VECTOR_FLOAT_ROUNDED_4 [ 0 ] ) ;
62
- expect ( vector . y_rounded ) . to . be . deep . equal ( VECTOR_FLOAT_ROUNDED_4 [ 1 ] ) ;
63
- expect ( vector . z_rounded ) . to . be . deep . equal ( VECTOR_FLOAT_ROUNDED_4 [ 2 ] ) ;
65
+ expect ( vector . valueRounded ) . to . deep . equal ( VECTOR_FLOAT_ROUNDED_4 ) ;
66
+ expect ( vector . xRounded ) . to . be . deep . equal ( VECTOR_FLOAT_ROUNDED_4 [ 0 ] ) ;
67
+ expect ( vector . yRounded ) . to . be . deep . equal ( VECTOR_FLOAT_ROUNDED_4 [ 1 ] ) ;
68
+ expect ( vector . zRounded ) . to . be . deep . equal ( VECTOR_FLOAT_ROUNDED_4 [ 2 ] ) ;
64
69
} ) ;
65
70
66
71
it ( "should do serialization with precision 3" , ( ) => {
67
72
RoundedVector3D . roundPrecision = 3 ;
68
73
const vector = new RoundedVector3D ( VECTOR_FLOAT ) ;
69
74
70
75
expect ( vector . toJSON ( ) ) . to . deep . equal ( VECTOR_FLOAT_ROUNDED_3 ) ;
71
- expect ( vector . value_rounded ) . to . deep . equal ( VECTOR_FLOAT_ROUNDED_3 ) ;
76
+ expect ( vector . valueRounded ) . to . deep . equal ( VECTOR_FLOAT_ROUNDED_3 ) ;
72
77
} ) ;
73
78
74
79
it ( "should do equality changes with precision" , ( ) => {
@@ -83,4 +88,12 @@ describe("RoundedVector3D", () => {
83
88
expect ( vector . equals ( VECTOR_FLOAT_ROUNDED_4 ) ) . to . equal ( true ) ;
84
89
expect ( vector . equals ( VECTOR_FLOAT_ROUNDED_3 ) ) . to . equal ( true ) ;
85
90
} ) ;
91
+ it ( "should extract rounded norm" , ( ) => {
92
+ RoundedVector3D . roundPrecision = 4 ;
93
+ const vector = new RoundedVector3D ( VECTOR_FLOAT ) ;
94
+ expect ( vector . normRounded ) . to . be . deep . equal ( 4.3561 ) ;
95
+
96
+ RoundedVector3D . roundPrecision = 3 ;
97
+ expect ( vector . normRounded ) . to . be . deep . equal ( 4.356 ) ;
98
+ } ) ;
86
99
} ) ;
0 commit comments