Skip to content

Commit f0ad176

Browse files
committed
Update FastVectorTest.kt
1 parent e08759a commit f0ad176

File tree

1 file changed

+210
-6
lines changed

1 file changed

+210
-6
lines changed

common/src/test/kotlin/FastVectorTest.kt

Lines changed: 210 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,24 @@
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
27
import 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
315
import com.lambda.util.world.x
416
import com.lambda.util.world.y
517
import com.lambda.util.world.z
18+
import net.minecraft.util.math.Direction
619
import 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

2641
class 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

Comments
 (0)