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