Signed-off-by: falkTX <falktx@falktx.com>pull/272/head
@@ -46,10 +46,10 @@ int main() | |||
// constructor gives correct integer values normalized to float (arguments are r, g, b, a; in order) | |||
{ | |||
Color c(51, 102, 153); | |||
DISTRHO_ASSERT_EQUAL(c.red, 0.2f, "red value is 0.2 (integer 51)"); | |||
DISTRHO_ASSERT_EQUAL(c.green, 0.4f, "green value is 0.4 (integer 102)"); | |||
DISTRHO_ASSERT_EQUAL(c.blue, 0.6f, "blue value is 0.6 (integer 153)"); | |||
DISTRHO_ASSERT_EQUAL(c.alpha, 1.0f, "alpha value is 1"); | |||
DISTRHO_ASSERT_SAFE_EQUAL(c.red, 0.2f, "red value is 0.2 (integer 51)"); | |||
DISTRHO_ASSERT_SAFE_EQUAL(c.green, 0.4f, "green value is 0.4 (integer 102)"); | |||
DISTRHO_ASSERT_SAFE_EQUAL(c.blue, 0.6f, "blue value is 0.6 (integer 153)"); | |||
DISTRHO_ASSERT_SAFE_EQUAL(c.alpha, 1.0f, "alpha value is 1"); | |||
Color white(255, 255, 255); | |||
DISTRHO_ASSERT_EQUAL(white.red, 1.0f, "white's red value is 1"); | |||
@@ -177,9 +177,9 @@ int main() | |||
// half point, round to 1 decimal point due to precision loss | |||
Color grey = Color::fromHTML("#7b7b7b"); | |||
DISTRHO_ASSERT_EQUAL(std::round(grey.red*10)/10, 0.5f, "grey's rounded red value is 0.5"); | |||
DISTRHO_ASSERT_EQUAL(std::round(grey.green*10)/10, 0.5f, "grey's rounded green value is 0.5"); | |||
DISTRHO_ASSERT_EQUAL(std::round(grey.blue*10)/10, 0.5f, "grey's rounded blue value is 0.5"); | |||
DISTRHO_ASSERT_SAFE_EQUAL(std::round(grey.red*10)/10, 0.5f, "grey's rounded red value is 0.5"); | |||
DISTRHO_ASSERT_SAFE_EQUAL(std::round(grey.green*10)/10, 0.5f, "grey's rounded green value is 0.5"); | |||
DISTRHO_ASSERT_SAFE_EQUAL(std::round(grey.blue*10)/10, 0.5f, "grey's rounded blue value is 0.5"); | |||
} | |||
// check bounds | |||
@@ -17,40 +17,34 @@ BUILD_CXX_FLAGS += -Wno-extra -Wno-missing-field-initializers | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
TESTS = Application Color Point NanoSubWidgets | |||
MANUAL_TESTS = | |||
UNIT_TESTS = Application Color Point | |||
ifeq ($(HAVE_CAIRO),true) | |||
TESTS += Demo.cairo | |||
WTESTS += Window.cairo | |||
MANUAL_TESTS += Demo.cairo | |||
UNIT_TESTS += Window.cairo | |||
endif | |||
ifeq ($(HAVE_OPENGL),true) | |||
TESTS += Demo.opengl | |||
WTESTS += Window.opengl | |||
MANUAL_TESTS += Demo.opengl | |||
MANUAL_TESTS += NanoSubWidgets | |||
UNIT_TESTS += Window.opengl | |||
endif | |||
ifeq ($(HAVE_STUB),true) | |||
UNIT_TESTS += Window.stub | |||
endif | |||
ifeq ($(HAVE_VULKAN),true) | |||
TESTS += Demo.vulkan | |||
WTESTS = Window.vulkan | |||
UNIT_TESTS += Window.vulkan | |||
endif | |||
TARGETS = $(TESTS:%=../build/tests/%$(APP_EXT)) | |||
TARGETS += $(WTESTS:Window.%=../build/tests/Window.%$(APP_EXT)) | |||
MANUAL_TARGETS = $(MANUAL_TESTS:%=../build/tests/%$(APP_EXT)) | |||
UNIT_TARGET = $(UNIT_TESTS:%=../build/tests/%$(APP_EXT)) | |||
OBJS = $(TESTS:%=../build/tests/%.cpp.o) | |||
OBJS += $(WTESTS:Window.%=../build/tests/Window.cpp.%.o) | |||
ALL_OBJS = $(MANUAL_TESTS:%=../build/tests/%.cpp.o) | |||
ALL_OBJS += $(UNIT_TESTS:%=../build/tests/%.cpp.o) | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
ifeq ($(HAVE_CAIRO),true) | |||
endif | |||
ifeq ($(HAVE_OPENGL),true) | |||
endif | |||
ifeq ($(HAVE_VULKAN),true) | |||
endif | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
all: $(TARGETS) | |||
all: $(MANUAL_TARGETS) $(UNIT_TARGET) | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
@@ -61,8 +55,8 @@ endef | |||
# valgrind --leak-check=full $@ | |||
run: $(TARGETS) | |||
$(foreach TEST,$(TARGETS),$(call RUN_TEST,$(TEST))) | |||
run: $(UNIT_TARGET) | |||
$(foreach TEST,$^,$(call RUN_TEST,$(TEST))) | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
@@ -92,6 +86,11 @@ clean: | |||
@echo "Compiling $< (OpenGL)" | |||
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@ | |||
../build/tests/%.cpp.stub.o: %.cpp | |||
-@mkdir -p ../build/tests | |||
@echo "Compiling $< (Stub)" | |||
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | |||
../build/tests/%.cpp.vulkan.o: %.cpp | |||
-@mkdir -p ../build/tests | |||
@echo "Compiling $< (Vulkan)" | |||
@@ -112,10 +111,17 @@ clean: | |||
@echo "Linking $*" | |||
$(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ | |||
../build/tests/%.stub$(APP_EXT): ../build/tests/%.cpp.stub.o | |||
@echo "Linking $*" | |||
$(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) -o $@ | |||
../build/tests/%.vulkan$(APP_EXT): ../build/tests/%.cpp.vulkan.o | |||
@echo "Linking $*" | |||
$(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(VULKAN_LIBS) -o $@ | |||
# --------------------------------------------------------------------------------------------------------------------- | |||
# linking steps (special, links against DGL static lib) | |||
../build/tests/Demo.cairo$(APP_EXT): ../build/tests/Demo.cpp.cairo.o ../build/libdgl-cairo.a | |||
@echo "Linking Demo (Cairo)" | |||
$(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(CAIRO_LIBS) -o $@ | |||
@@ -1,6 +1,42 @@ | |||
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. | |||
In order to test DPF components individually, some of these tests do not link against DGL but import/include its files. | |||
All test files must be self-contained, in order to prevent surprises in regards global state and initialization stuff. | |||
The following tests are present: | |||
- Application | |||
Verifies that creating an application instance and its event loop is working correctly. | |||
This test should automatically close itself without errors after a few seconds | |||
- Circle | |||
TODO | |||
- Color | |||
Runs a few unit-tests on top of the Color class. Mostly complete but still WIP. | |||
- Demo | |||
A full window with widgets to verify that contents are being drawn correctly, window can be resized and events work. | |||
Can be used in both Cairo and OpenGL modes, the Vulkan variant does not work right now. | |||
- Line | |||
TODO | |||
- NanoSubWidgets | |||
Verifies that NanoVG subwidgets are being drawn properly, and that hide/show calls work as intended. | |||
There should be a grey background with 3 squares on top, one of hiding every half second in a sequence. | |||
- Point | |||
Runs a few unit-tests on top of the Point class. Mostly complete but still WIP. | |||
- Rectangle | |||
TODO | |||
- Triangle | |||
TODO | |||
- Window | |||
Runs a few basic tests with Window showing, hiding and event loop. | |||
Will try to create a window on screen. | |||
Should automatically close after a few seconds. |
@@ -14,10 +14,6 @@ | |||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
*/ | |||
#if !(defined(DGL_CAIRO) || defined(DGL_OPENGL) || defined(DGL_VULKAN)) | |||
# error test setup failed, must be for cairo, opengl or vulkan | |||
#endif | |||
#include "tests.hpp" | |||
#define DPF_TEST_POINT_CPP | |||
@@ -24,6 +24,9 @@ | |||
#define DISTRHO_ASSERT_NOT_EQUAL(v1, v2, msg) \ | |||
if (v1 == v2) { d_stderr2("Test condition failed: %s; file:%s line:%i", msg, __FILE__, __LINE__); return 1; } | |||
#define DISTRHO_ASSERT_SAFE_EQUAL(v1, v2, msg) \ | |||
if (d_isNotEqual(v1, v2)) { d_stderr2("Test condition failed: %s; file:%s line:%i", msg, __FILE__, __LINE__); return 1; } | |||
START_NAMESPACE_DGL | |||
// -------------------------------------------------------------------------------------------------------------------- | |||