diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 41f75403..af859179 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -26,3 +26,4 @@ add_subdirectory(blocks) add_subdirectory(scratchconfiguration) add_subdirectory(assets) add_subdirectory(script) +add_subdirectory(extensions) diff --git a/test/extensions/CMakeLists.txt b/test/extensions/CMakeLists.txt new file mode 100644 index 00000000..6b4d320b --- /dev/null +++ b/test/extensions/CMakeLists.txt @@ -0,0 +1,17 @@ +# iextension_test +add_executable( + iextension_test + iextension_test.cpp + testextension.cpp + testextension.h +) + +target_link_libraries( + iextension_test + GTest::gtest_main + GTest::gmock_main + scratchcpp + scratchcpp_mocks +) + +gtest_discover_tests(iextension_test) diff --git a/test/extensions/iextension_test.cpp b/test/extensions/iextension_test.cpp new file mode 100644 index 00000000..663553f4 --- /dev/null +++ b/test/extensions/iextension_test.cpp @@ -0,0 +1,37 @@ +#include + +#include "../common.h" +#include "testextension.h" + +using namespace libscratchcpp; + +class IExtensionTest : public testing::Test +{ + public: + void SetUp() override { m_extension = std::make_unique(); }; + + std::unique_ptr m_extension; + EngineMock m_engine; +}; + +TEST_F(IExtensionTest, Name) +{ + ASSERT_EQ(m_extension->name(), "Test"); +} + +TEST_F(IExtensionTest, Description) +{ + ASSERT_EQ(m_extension->description(), "Test extension"); +} + +TEST_F(IExtensionTest, IncludeByDefault) +{ + ASSERT_FALSE(m_extension->includeByDefault()); +} + +TEST_F(IExtensionTest, RegisterSections) +{ + std::shared_ptr section = nullptr; + EXPECT_CALL(m_engine, registerSection(section)).Times(1); + m_extension->registerSections(&m_engine); +} diff --git a/test/extensions/testextension.cpp b/test/extensions/testextension.cpp new file mode 100644 index 00000000..20e3bb26 --- /dev/null +++ b/test/extensions/testextension.cpp @@ -0,0 +1,25 @@ +#include + +#include "testextension.h" + +using namespace libscratchcpp; + +std::string TestExtension::name() const +{ + return "Test"; +} + +std::string TestExtension::description() const +{ + return "Test extension"; +} + +bool TestExtension::includeByDefault() const +{ + return IExtension::includeByDefault(); +} + +void TestExtension::registerSections(IEngine *engine) +{ + engine->registerSection(nullptr); +} diff --git a/test/extensions/testextension.h b/test/extensions/testextension.h new file mode 100644 index 00000000..7237f9e8 --- /dev/null +++ b/test/extensions/testextension.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +namespace libscratchcpp +{ + +class TestExtension : public IExtension +{ + public: + std::string name() const override; + std::string description() const override; + + bool includeByDefault() const override; + + void registerSections(IEngine *engine) override; +}; + +} // namespace libscratchcpp