SdlWindowApiTest.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * author: Patrick-Christopher Mattulat
  3. * e-mail: webmaster@lynarstudios.com
  4. */
  5. #include <gmock/gmock.h>
  6. #include <gtest/gtest.h>
  7. #include <test/window/mock/SdlApiMock.hpp>
  8. #include <window/SdlWindowApi.hpp>
  9. #include <core/StatusCodes.hpp>
  10. #include <ls-std/core/exception/IllegalArgumentException.hpp>
  11. using ls::atlantis::core::StatusCodes;
  12. using ls::atlantis::interfaces::ISdlApi;
  13. using ls::atlantis::window::SdlWindowApi;
  14. using ls::atlantis::window::test::SdlApiMock;
  15. using ls::std::core::IllegalArgumentException;
  16. using ::std::make_shared;
  17. using ::std::shared_ptr;
  18. using ::testing::Return;
  19. using ::testing::StrEq;
  20. using ::testing::Test;
  21. namespace
  22. {
  23. class SdlWindowApiTest : public Test
  24. {
  25. public:
  26. SdlWindowApiTest() = default;
  27. ~SdlWindowApiTest() override = default;
  28. shared_ptr<SdlApiMock> sdlApiMock = make_shared<SdlApiMock>();
  29. };
  30. TEST_F(SdlWindowApiTest, constructor_nullPointer)
  31. {
  32. ASSERT_THROW(SdlWindowApi(nullptr), IllegalArgumentException);
  33. }
  34. TEST_F(SdlWindowApiTest, init)
  35. {
  36. int dummyWindowHandle = 0;
  37. auto *fakeWindow = static_cast<SDL_Window *>(static_cast<void *>(&dummyWindowHandle));
  38. EXPECT_CALL(*sdlApiMock, Init(SDL_INIT_VIDEO)).WillOnce(Return(1));
  39. EXPECT_CALL(*sdlApiMock, CreateWindow(StrEq(""), 0, 0, SDL_WINDOW_FULLSCREEN)).WillOnce(Return(fakeWindow));
  40. EXPECT_CALL(*sdlApiMock, DestroyWindow(fakeWindow));
  41. EXPECT_CALL(*sdlApiMock, Quit());
  42. ASSERT_EQ(StatusCodes::OK, SdlWindowApi(sdlApiMock).init()->getId());
  43. }
  44. TEST_F(SdlWindowApiTest, init_failed)
  45. {
  46. EXPECT_CALL(*sdlApiMock, Init(SDL_INIT_VIDEO)).WillOnce(Return(0));
  47. EXPECT_CALL(*sdlApiMock, Quit());
  48. ASSERT_EQ(StatusCodes::WINDOW_API_LOADING_FAILED, SdlWindowApi(sdlApiMock).init()->getId());
  49. }
  50. TEST_F(SdlWindowApiTest, init_windowCreationFailed)
  51. {
  52. EXPECT_CALL(*sdlApiMock, Init(SDL_INIT_VIDEO)).WillOnce(Return(1));
  53. EXPECT_CALL(*sdlApiMock, CreateWindow(StrEq(""), 0, 0, SDL_WINDOW_FULLSCREEN)).WillOnce(Return(nullptr));
  54. EXPECT_CALL(*sdlApiMock, Quit());
  55. ASSERT_EQ(StatusCodes::WINDOW_CREATION_FAILED, SdlWindowApi(sdlApiMock).init()->getId());
  56. }
  57. }