@@ -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. |