فهرست منبع

Add various tests about textures (TextureTest.*) and texture sizes (MaterialTest.SizeCapturesTextureSize)

Sam Jaffe 6 سال پیش
والد
کامیت
34d4c7813b
2فایلهای تغییر یافته به همراه37 افزوده شده و 3 حذف شده
  1. 37 3
      graphics/test/manager_test.cxx
  2. BIN
      graphics/test/resources/black2.bmp

+ 37 - 3
graphics/test/manager_test.cxx

@@ -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"));

BIN
graphics/test/resources/black2.bmp