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 | |||
| // -------------------------------------------------------------------------------------------------------------------- | |||