|
|
@@ -104,6 +104,37 @@ TEST_F(ManagerTest, DoesNotGreedilyCompile) {
|
|
|
EXPECT_CALL(mock, compile_program(_, _)).Times(0);
|
|
|
}
|
|
|
|
|
|
+using TextureTest = ManagerTest;
|
|
|
+
|
|
|
+TEST_F(TextureTest, ThrowsOnNonExistantFile) {
|
|
|
+ EXPECT_THROW(mock.get("resources/missing.png"), std::runtime_error);
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(TextureTest, NoExceptIfFileExists) {
|
|
|
+ EXPECT_CALL(mock, compile(_, make_vector(1, 1), _)).Times(1);
|
|
|
+ EXPECT_NO_THROW(mock.get("resources/black.bmp"));
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(TextureTest, CreatedTextureCanBeRefetched) {
|
|
|
+ EXPECT_CALL(mock, compile(_, make_vector(1, 1), _)).Times(1);
|
|
|
+ auto id_1 = mock.get("resources/black.bmp");
|
|
|
+ auto id_2 = mock.get("resources/black.bmp");
|
|
|
+ EXPECT_THAT(id_1, Eq(id_2));
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(TextureTest, CanGetTextureFromId) {
|
|
|
+ EXPECT_CALL(mock, compile(_, make_vector(1, 1), _)).Times(1);
|
|
|
+ auto texture_id = mock.get("resources/black.bmp");
|
|
|
+ auto texture = mock.get(texture_id);
|
|
|
+ EXPECT_THAT(texture, Eq(texture_id));
|
|
|
+}
|
|
|
+
|
|
|
+TEST_F(TextureTest, SizeOfTexturePassedIntoCompile) {
|
|
|
+ EXPECT_CALL(mock, compile(_, make_vector(1, 1), _)).Times(0);
|
|
|
+ EXPECT_CALL(mock, compile(_, make_vector(2, 2), _)).Times(1);
|
|
|
+ mock.get("resources/black2.bmp");
|
|
|
+}
|
|
|
+
|
|
|
using MaterialTest = ManagerTest;
|
|
|
|
|
|
// TEST_F(MaterialTest, ThrowsExceptionIfNoTexOrUniform) {
|
|
|
@@ -135,12 +166,17 @@ TEST_F(MaterialTest, CanGetMaterialFromId) {
|
|
|
}
|
|
|
|
|
|
TEST_F(MaterialTest, UniformMaterialIsOneByOne) {
|
|
|
- using graphics::materials::uniform;
|
|
|
auto material = mock.get(mock.get(cast_p(1), "", "u_normalMap"));
|
|
|
// Uniforms are always sized 1x1
|
|
|
EXPECT_THAT(material.size, Eq(make_vector(1, 1)));
|
|
|
}
|
|
|
|
|
|
+TEST_F(MaterialTest, SizeCapturesTextureSize) {
|
|
|
+ auto material =
|
|
|
+ mock.get(mock.get(cast_p(1), "resources/black2.bmp", "u_normalMap"));
|
|
|
+ EXPECT_THAT(material.size, Eq(make_vector(2, 2)));
|
|
|
+}
|
|
|
+
|
|
|
TEST_F(MaterialTest, UniformMaterialHasDataBindingToNormalTex) {
|
|
|
using graphics::materials::uniform;
|
|
|
auto material = mock.get(mock.get(cast_p(1), "", "u_normalMap"));
|
|
|
@@ -153,7 +189,6 @@ TEST_F(MaterialTest, UniformMaterialHasDataBindingToNormalTex) {
|
|
|
}
|
|
|
|
|
|
TEST_F(MaterialTest, DifferentProgramMakesDifferentMaterial) {
|
|
|
- using graphics::materials::uniform;
|
|
|
EXPECT_CALL(mock, compile(_, make_vector(1, 1), _)).Times(3);
|
|
|
auto id_1 = mock.get(cast_p(1), "", "u_normalMap");
|
|
|
auto id_2 = mock.get(cast_p(2), "", "u_normalMap");
|
|
|
@@ -161,7 +196,6 @@ TEST_F(MaterialTest, DifferentProgramMakesDifferentMaterial) {
|
|
|
}
|
|
|
|
|
|
TEST_F(MaterialTest, DifferentProgramDoesntChangeUniformId) {
|
|
|
- using graphics::materials::uniform;
|
|
|
EXPECT_CALL(mock, compile(_, make_vector(1, 1), _)).Times(3);
|
|
|
auto mat_1 = mock.get(mock.get(cast_p(1), "", "u_normalMap"));
|
|
|
auto mat_2 = mock.get(mock.get(cast_p(2), "", "u_normalMap"));
|