From 16e9630b79f0a7a90c6cedb6781175bb8b337dc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 29 Apr 2017 12:11:08 +0200 Subject: New upstream version 4.3.0 --- app/bin/unittest/CMakeLists.txt | 12 ++++ app/bin/unittest/dxfformattest.c | 144 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 app/bin/unittest/CMakeLists.txt create mode 100644 app/bin/unittest/dxfformattest.c (limited to 'app/bin/unittest') diff --git a/app/bin/unittest/CMakeLists.txt b/app/bin/unittest/CMakeLists.txt new file mode 100644 index 0000000..b6d2bc5 --- /dev/null +++ b/app/bin/unittest/CMakeLists.txt @@ -0,0 +1,12 @@ +# build unit tests for the xtrkcad library + +add_executable(dxfformattest + dxfformattest.c + ../dxfformat.c + ) + +target_link_libraries(dxfformattest + dynstring + ${LIBS}) + +add_test(DXFOutputTest dxfformattest) \ No newline at end of file diff --git a/app/bin/unittest/dxfformattest.c b/app/bin/unittest/dxfformattest.c new file mode 100644 index 0000000..b797ad9 --- /dev/null +++ b/app/bin/unittest/dxfformattest.c @@ -0,0 +1,144 @@ +/** \file DynStringTest.c +* Unit tests for the dxfformat module +*/ + +#include +#include +#include +#include +#include +#include + +#include +#include + +char *sProdNameUpper = "XTRKCAD"; +long units; + +static void BasicFormatting(void **state) +{ + DynString string; + (void)state; + + DynStringMalloc(&string, 0); + + DxfLayerName(&string, sProdNameUpper, 0); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "8\nXTRKCAD0\n"); + + DxfLayerName(&string, sProdNameUpper, 99); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "8\nXTRKCAD99\n"); + + DxfFormatPosition(&string, 20, 1); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "20\n1.000000\n"); + + DxfFormatPosition(&string, 20, 1.23456789); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "20\n1.234568\n"); + + DxfFormatPosition(&string, 20, 1.23456712); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "20\n1.234567\n"); +} + +static void LineCommand(void **state) +{ + DynString string; + (void)state; + + DynStringMalloc(&string, 0); + + DxfLineCommand( &string, 0, 1.0, 2.0, 1.1, 2.2, 1); + assert_string_equal(DynStringToCStr(&string), + DXF_INDENT "0\nLINE\n 8\nXTRKCAD0\n 10\n1.000000\n 20\n2.000000\n 11\n1.100000\n 21\n2.200000\n 6\nDASHED\n"); + + DynStringFree(&string); +} + + +static void CircleCommand(void **state) +{ + DynString string; + (void)state; + + DynStringMalloc(&string, 0); + + DxfCircleCommand(&string, 0, 1.0, 2.0, 1.1, 1); + assert_string_equal(DynStringToCStr(&string), + DXF_INDENT "0\nCIRCLE\n 10\n1.000000\n 20\n2.000000\n 40\n1.100000\n 8\nXTRKCAD0\n 6\nDASHED\n"); + + DynStringFree(&string); +} + + +static void ArcCommand(void **state) +{ + DynString string; + (void)state; + + DynStringMalloc(&string, 0); + + DxfArcCommand(&string, 0, 1.0, 2.0, 1.1, 10.0, 180.0, 1); + assert_string_equal(DynStringToCStr(&string), + DXF_INDENT "0\nARC\n 10\n1.000000\n 20\n2.000000\n 40\n1.100000\n 50\n10.000000\n 51\n190.000000\n 8\nXTRKCAD0\n 6\nDASHED\n"); + + DynStringFree(&string); +} + +#define TESTSTRING "This is a dxf test string" + +static void TextCommand(void **state) +{ + DynString string; + (void)state; + + DynStringMalloc(&string, 0); + + DxfTextCommand(&string, 0, 10.0, 12.0, 144.0, TESTSTRING); + + assert_string_equal(DynStringToCStr(&string), + DXF_INDENT "0\nTEXT\n 1\n" TESTSTRING "\n 10\n10.000000\n 20\n12.000000\n 40\n2.000000\n 8\nXTRKCAD0\n"); + + DynStringFree(&string); +} + +static void Units(void **state) +{ + DynString string; + (void)state; + + DynStringMalloc(&string, 0); + + /* test English units */ + units = 0; + DxfUnits(&string); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "9\n$MEASUREMENT\n 70\n0\n" DXF_INDENT "9\n$INSUNITS\n 70\n1\n"); + DxfFormatPosition(&string, 20, 1.23456789); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "20\n1.234568\n"); + + DynStringClear(&string); + DxfDimensionSize(&string, DXF_DIMTEXTSIZE); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "9\n$DIMTXT\n 40\n1.0\n"); + + /* test metric units */ + units = 1; + DynStringClear(&string); + DxfUnits(&string); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "9\n$MEASUREMENT\n 70\n1\n" DXF_INDENT "9\n$INSUNITS\n 70\n4\n"); + DxfFormatPosition(&string, 20, 1.23456789); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "20\n31.358024\n"); + + DynStringClear(&string); + DxfDimensionSize(&string, DXF_DIMTEXTSIZE); + assert_string_equal(DynStringToCStr(&string), DXF_INDENT "9\n$DIMTXT\n 40\n25.0\n"); + +} +int main(void) +{ + const struct CMUnitTest tests[] = { + cmocka_unit_test(BasicFormatting), + cmocka_unit_test(LineCommand), + cmocka_unit_test(CircleCommand), + cmocka_unit_test(ArcCommand), + cmocka_unit_test(TextCommand), + cmocka_unit_test(Units) + }; + return cmocka_run_group_tests(tests, NULL, NULL); +} \ No newline at end of file -- cgit v1.2.3