1- import com.lambda.util.world.FastVector
1+ import com.lambda.util.world.X_BITS
2+ import com.lambda.util.world.Z_BITS
3+ import com.lambda.util.world.addX
4+ import com.lambda.util.world.addY
5+ import com.lambda.util.world.addZ
6+ import com.lambda.util.world.distSq
27import com.lambda.util.world.fastVectorOf
8+ import com.lambda.util.world.offset
9+ import com.lambda.util.world.remainder
10+ import com.lambda.util.world.setX
11+ import com.lambda.util.world.setY
12+ import com.lambda.util.world.setZ
13+ import com.lambda.util.world.toBlockPos
14+ import com.lambda.util.world.toVec3d
315import com.lambda.util.world.x
416import com.lambda.util.world.y
517import com.lambda.util.world.z
18+ import net.minecraft.util.math.Direction
619import kotlin.test.Test
20+ import kotlin.test.assertEquals
21+ import kotlin.test.assertFails
722
823/*
924 * Copyright 2025 Lambda
@@ -25,10 +40,199 @@ import kotlin.test.Test
2540
2641class FastVectorTest {
2742 @Test
28- fun testZero () {
43+ fun `test fast vector with valid coordinates` () {
44+ val x = 123456
45+ val y = 789
46+ val z = - 12345
47+
48+ val fastVec = fastVectorOf(x, y, z)
49+
50+ assertEquals(x, fastVec.x)
51+ assertEquals(y, fastVec.y)
52+ assertEquals(z, fastVec.z)
53+ }
54+
55+ @Test
56+ fun `test fast vector with invalid X coordinate` () {
57+ val x = (1L shl X_BITS - 1 )
58+ val y = 10L
59+ val z = 20L
60+
61+ assertFails { fastVectorOf(x, y, z) }
62+ }
63+
64+ @Test
65+ fun `test fast vector with invalid Z coordinate` () {
66+ val x = 10L
67+ val y = 20L
68+ val z = (1L shl Z_BITS - 1 )
69+
70+ assertFails { fastVectorOf(x, y, z) }
71+ }
72+
73+ @Test
74+ fun `test fast vector with Y overflow` () {
75+ val x = 10L
76+ val y = 2049L
77+ val z = 20L
78+
79+ val fastVec = fastVectorOf(x, y, z)
80+
81+ assertEquals(- 2047 , fastVec.y)
82+ }
83+
84+ @Test
85+ fun `test fast vector with Y underflow` () {
86+ val x = 10L
87+ val y = - 2049L
88+ val z = 20L
89+
90+ val fastVec = fastVectorOf(x, y, z)
91+
92+ assertEquals(2047 , fastVec.y)
93+ }
94+
95+ @Test
96+ fun `test setX correctly sets the X coordinate` () {
97+ var fastVec = fastVectorOf(10 , 20 , 30 )
98+ fastVec = fastVec setX 40
99+
100+ assertEquals(40 , fastVec.x)
101+ }
102+
103+ @Test
104+ fun `test setY correctly sets the Y coordinate` () {
105+ var fastVec = fastVectorOf(10 , 20 , 30 )
106+ fastVec = fastVec setY 50
107+
108+ assertEquals(50 , fastVec.y)
109+ }
110+
111+ @Test
112+ fun `test setZ correctly sets the Z coordinate` () {
113+ var fastVec = fastVectorOf(10 , 20 , 30 )
114+ fastVec = fastVec setZ 60
115+
116+ assertEquals(60 , fastVec.z)
117+ }
118+
119+ @Test
120+ fun `test addX correctly adds to the X coordinate` () {
121+ val fastVec = fastVectorOf(10 , 20 , 30 )
122+ val newVec = fastVec addX 5
123+
124+ assertEquals(15 , newVec.x)
125+ }
126+
127+ @Test
128+ fun `test addY correctly adds to the Y coordinate` () {
129+ val fastVec = fastVectorOf(10 , 20 , 30 )
130+ val newVec = fastVec addY 5
131+
132+ assertEquals(25 , newVec.y)
133+ }
134+
135+ @Test
136+ fun `test addZ correctly adds to the Z coordinate` () {
137+ val fastVec = fastVectorOf(10 , 20 , 30 )
138+ val newVec = fastVec addZ 5
139+
140+ assertEquals(35 , newVec.z)
141+ }
142+
143+ @Test
144+ fun `test plus operation with another FastVector` () {
145+ val vec1 = fastVectorOf(1 , 2 , 3 )
146+ val vec2 = fastVectorOf(4 , 5 , 6 )
147+
148+ val result = vec1 + vec2
149+
150+ assertEquals(5 , result.x)
151+ assertEquals(7 , result.y)
152+ assertEquals(9 , result.z)
153+ }
154+
155+ @Test
156+ fun `test minus operation with another FastVector` () {
157+ val vec1 = fastVectorOf(5 , 6 , 7 )
158+ val vec2 = fastVectorOf(2 , 2 , 2 )
159+
160+ val result = vec1 - vec2
161+
162+ assertEquals(3 , result.x)
163+ assertEquals(4 , result.y)
164+ assertEquals(5 , result.z)
165+ }
166+
167+ @Test
168+ fun `test multiplication by scalar` () {
169+ val vec = fastVectorOf(1 , 2 , 3 )
170+ val result = vec * 2
171+
172+ assertEquals(2 , result.x)
173+ assertEquals(4 , result.y)
174+ assertEquals(6 , result.z)
175+ }
176+
177+ @Test
178+ fun `test division by scalar` () {
179+ val vec = fastVectorOf(10 , 20 , 30 )
180+ val result = vec / 2
181+
182+ assertEquals(5 , result.x)
183+ assertEquals(10 , result.y)
184+ assertEquals(15 , result.z)
185+ }
186+
187+ @Test
188+ fun `test modulo operation with scalar` () {
189+ val vec = fastVectorOf(10 , 20 , 30 )
190+ val result = vec remainder 7
191+
192+ assertEquals(3 , result.x)
193+ assertEquals(6 , result.y)
194+ assertEquals(2 , result.z)
195+ }
196+
197+ @Test
198+ fun `test distSq with another FastVector` () {
199+ val vec1 = fastVectorOf(1 , 2 , 3 )
200+ val vec2 = fastVectorOf(4 , 5 , 6 )
201+
202+ val distSq = vec1 distSq vec2
203+
204+ assertEquals(27.0 , distSq)
205+ }
206+
207+ @Test
208+ fun `test offset with Direction` () {
29209 val vec = fastVectorOf(0 , 0 , 0 )
30- assert (vec.x == 0 )
31- assert (vec.y == 0 )
32- assert (vec.z == 0 )
210+ val direction = Direction .NORTH // offset: (0, 0, -1)
211+
212+ val newVec = vec.offset(direction)
213+
214+ assertEquals(0 , newVec.x)
215+ assertEquals(0 , newVec.y)
216+ assertEquals(- 1 , newVec.z)
217+ }
218+
219+ @Test
220+ fun `test toBlockPos conversion` () {
221+ val vec = fastVectorOf(10 , 20 , 30 )
222+ val blockPos = vec.toBlockPos()
223+
224+ assertEquals(10 , blockPos.x)
225+ assertEquals(20 , blockPos.y)
226+ assertEquals(30 , blockPos.z)
227+ }
228+
229+ @Test
230+ fun `test toVec3d conversion` () {
231+ val vec = fastVectorOf(10 , 20 , 30 )
232+ val vec3d = vec.toVec3d()
233+
234+ assertEquals(10.0 , vec3d.x)
235+ assertEquals(20.0 , vec3d.y)
236+ assertEquals(30.0 , vec3d.z)
33237 }
34- }
238+ }
0 commit comments