/* * author: Patrick-Christopher Mattulat * e-mail: webmaster@lynarstudios.com */ #include #include #include #include #include #include using ls::atlantis::core::StatusCodes; using ls::atlantis::interfaces::ISdlApi; using ls::atlantis::window::SdlWindowApi; using ls::atlantis::window::test::SdlApiMock; using ls::std::core::IllegalArgumentException; using ::std::make_shared; using ::std::shared_ptr; using ::testing::Return; using ::testing::StrEq; using ::testing::Test; namespace { class SdlWindowApiTest : public Test { public: SdlWindowApiTest() = default; ~SdlWindowApiTest() override = default; shared_ptr sdlApiMock = make_shared(); }; TEST_F(SdlWindowApiTest, constructor_nullPointer) { ASSERT_THROW(SdlWindowApi(nullptr), IllegalArgumentException); } TEST_F(SdlWindowApiTest, init) { int dummyWindowHandle = 0; auto *fakeWindow = static_cast(static_cast(&dummyWindowHandle)); EXPECT_CALL(*sdlApiMock, Init(SDL_INIT_VIDEO)).WillOnce(Return(1)); EXPECT_CALL(*sdlApiMock, CreateWindow(StrEq(""), 0, 0, SDL_WINDOW_FULLSCREEN)).WillOnce(Return(fakeWindow)); EXPECT_CALL(*sdlApiMock, DestroyWindow(fakeWindow)); EXPECT_CALL(*sdlApiMock, Quit()); ASSERT_EQ(StatusCodes::OK, SdlWindowApi(sdlApiMock).init()->getId()); } TEST_F(SdlWindowApiTest, init_failed) { EXPECT_CALL(*sdlApiMock, Init(SDL_INIT_VIDEO)).WillOnce(Return(0)); EXPECT_CALL(*sdlApiMock, Quit()); ASSERT_EQ(StatusCodes::WINDOW_API_LOADING_FAILED, SdlWindowApi(sdlApiMock).init()->getId()); } TEST_F(SdlWindowApiTest, init_windowCreationFailed) { EXPECT_CALL(*sdlApiMock, Init(SDL_INIT_VIDEO)).WillOnce(Return(1)); EXPECT_CALL(*sdlApiMock, CreateWindow(StrEq(""), 0, 0, SDL_WINDOW_FULLSCREEN)).WillOnce(Return(nullptr)); EXPECT_CALL(*sdlApiMock, Quit()); ASSERT_EQ(StatusCodes::WINDOW_CREATION_FAILED, SdlWindowApi(sdlApiMock).init()->getId()); } }