forked from collinalexbell/HackMatrix
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchunk.cpp
69 lines (58 loc) · 1.81 KB
/
chunk.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "fakeit.hpp"
#include "chunk.h"
#include <gtest/gtest.h>
TEST(CHUNK, constructor) {
ASSERT_NO_THROW(Chunk(0, 0, 0));
}
TEST(CHUNK, getPosition) {
auto chunk = Chunk(0,1,2);
auto position = chunk.getPosition();
ASSERT_EQ(position.x, 0);
ASSERT_EQ(position.y, 1);
ASSERT_EQ(position.z, 2);
}
TEST(CHUNK, addCube_getCube) {
auto chunk = Chunk(0,0,0);
auto cube = Cube();
cube.blockType() = 0;
cube.position() = glm::vec3(3,2,1);
cube.selected() = 0;
chunk.addCube(cube, cube.position().x, cube.position().y, cube.position().z);
auto got = chunk.getCube(cube.position().x, cube.position().y,
cube.position().z); ASSERT_EQ(cube.position(), got->position());
ASSERT_EQ(cube.blockType(), got->blockType());
ASSERT_EQ(cube.selected(), got->selected());
}
TEST(CHUNK, mesh) {
auto chunk = Chunk(0, 0, 0);
auto cube = Cube();
cube.blockType() = 0;
cube.position() = glm::vec3(3, 2, 1);
cube.selected() = 0;
chunk.addCube(cube, cube.position().x, cube.position().y, cube.position().z);
auto mesh = chunk.mesh();
ASSERT_EQ(mesh->positions.size(), 36);
ASSERT_EQ(mesh->blockTypes.size(), 36);
ASSERT_EQ(mesh->selects.size(), 36);
cube = Cube();
cube.blockType() = 0;
cube.position() = glm::vec3(1, 2, 3);
cube.selected() = 0;
chunk.addCube(cube, cube.position().x, cube.position().y, cube.position().z);
mesh = chunk.mesh();
ASSERT_EQ(mesh->positions.size(), 36 * 2);
ASSERT_EQ(mesh->blockTypes.size(), 36 * 2);
ASSERT_EQ(mesh->selects.size(), 36 * 2);
}
TEST(CHUNK, meshEmptyChunk)
{
auto chunk = Chunk(0, 0, 0);
auto cube = Cube();
cube.blockType() = 0;
cube.position() = glm::vec3(3, 2, 1);
cube.selected() = 0;
auto mesh = chunk.mesh();
ASSERT_EQ(mesh->positions.size(), 0);
ASSERT_EQ(mesh->blockTypes.size(), 0);
ASSERT_EQ(mesh->selects.size(), 0);
}