Browse Source

Start of DPF tests

Signed-off-by: falkTX <falktx@falktx.com>
pull/272/head
falkTX 4 years ago
parent
commit
1f2f2e5c4e
3 changed files with 159 additions and 0 deletions
  1. +80
    -0
      tests/Application.cpp
  2. +73
    -0
      tests/Makefile
  3. +6
    -0
      tests/README.txt

+ 80
- 0
tests/Application.cpp View File

@@ -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;
}

// --------------------------------------------------------------------------------------------------------------------

+ 73
- 0
tests/Makefile View File

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

# ---------------------------------------------------------------------------------------------------------------------

+ 6
- 0
tests/README.txt View File

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

Loading…
Cancel
Save