| @@ -0,0 +1,80 @@ | |||
| /* | |||
| * DISTRHO Plugin Framework (DPF) | |||
| * Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #define DPF_TEST_APPLICATION_CPP | |||
| #include "dgl/src/pugl.cpp" | |||
| #include "dgl/src/Application.cpp" | |||
| #include "dgl/src/ApplicationPrivateData.cpp" | |||
| #include "distrho/extra/Thread.hpp" | |||
| #define DISTRHO_ASSERT_EQUAL(v1, v2, msg) \ | |||
| if (v1 != v2) { d_stderr2("Test condition failed: %s; file:%s line:%i", msg, __FILE__, __LINE__); return 1; } | |||
| START_NAMESPACE_DGL | |||
| // -------------------------------------------------------------------------------------------------------------------- | |||
| class ApplicationQuitter : public Thread | |||
| { | |||
| Application& app; | |||
| public: | |||
| ApplicationQuitter(Application& a) | |||
| : Thread("ApplicationQuitter"), | |||
| app(a) | |||
| { | |||
| startThread(); | |||
| } | |||
| private: | |||
| void run() override | |||
| { | |||
| d_sleep(5); | |||
| app.quit(); | |||
| } | |||
| }; | |||
| // -------------------------------------------------------------------------------------------------------------------- | |||
| END_NAMESPACE_DGL | |||
| int main() | |||
| { | |||
| USE_NAMESPACE_DGL; | |||
| // regular usage | |||
| { | |||
| Application app(true); | |||
| DISTRHO_ASSERT_EQUAL(app.isQuiting(), false, "app MUST NOT be set as quitting during init"); | |||
| app.idle(); | |||
| DISTRHO_ASSERT_EQUAL(app.isQuiting(), false, "app MUST NOT be set as quitting after idle()"); | |||
| app.quit(); | |||
| DISTRHO_ASSERT_EQUAL(app.isQuiting(), true, "app MUST be set as quitting after quit()"); | |||
| } | |||
| // standalone exec, must not block forever due to quit() called from another thread | |||
| { | |||
| Application app(true); | |||
| ApplicationQuitter appQuitter(app); | |||
| app.exec(); | |||
| DISTRHO_ASSERT_EQUAL(appQuitter.isThreadRunning(), false, "app quit triggered because we told it so"); | |||
| } | |||
| return 0; | |||
| } | |||
| // -------------------------------------------------------------------------------------------------------------------- | |||
| @@ -0,0 +1,73 @@ | |||
| #!/usr/bin/make -f | |||
| # Makefile for DGL # | |||
| # ---------------- # | |||
| # Created by falkTX | |||
| # | |||
| # debug mode by default | |||
| DEBUG=true | |||
| include ../Makefile.base.mk | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| BUILD_C_FLAGS += $(DGL_FLAGS) -I.. | |||
| BUILD_CXX_FLAGS += $(DGL_FLAGS) -I.. -I../dgl/src/pugl-upstream/include -DDONT_SET_USING_DGL_NAMESPACE | |||
| LINK_FLAGS += -lpthread | |||
| # TODO fix within pugl | |||
| BUILD_CXX_FLAGS += -Wno-missing-field-initializers -Wno-extra | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| # TODO | |||
| src=Application.cpp | |||
| TESTS = $(src:%.cpp=../build/tests/%) | |||
| OBJS = $(TESTS:%=%.o) | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| ifeq ($(HAVE_CAIRO),true) | |||
| endif | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| endif | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| all: $(TESTS) | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| ../build/tests/%: ../build/tests/%.cpp.o | |||
| @echo "Linking $*" | |||
| $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) -o $@ | |||
| $@ | |||
| valgrind --leak-check=full $@ | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| ../build/tests/%.c.o: %.c | |||
| -@mkdir -p ../build/tests | |||
| @echo "Compiling $<" | |||
| $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ | |||
| ../build/tests/%.cpp.o: %.cpp | |||
| -@mkdir -p ../build/tests | |||
| @echo "Compiling $<" | |||
| $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| clean: | |||
| rm -rf ../build/tests | |||
| debug: | |||
| $(MAKE) DEBUG=true | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| -include $(OBJS:%.o=%.d) | |||
| # --------------------------------------------------------------------------------------------------------------------- | |||
| @@ -0,0 +1,6 @@ | |||
| This directory contains several tests for DPF related things, from graphics to plugin stuff to utilities. | |||
| Each *.cpp file is meant to be its own test. | |||
| In order to test DPF components individually, these tests do not link against DGL directly, | |||
| but will directly import the needed source code. | |||
| All files must be self-contained, in order to prevent surprises in regards global state and initialization stuff. | |||