From 06b7250d83b3b71b624141392fd1aa3f289cd61f Mon Sep 17 00:00:00 2001 From: Sander Mertens Date: Sat, 12 Sep 2015 03:09:00 -0400 Subject: [PATCH] #341 Add core testcases --- .../lang/test/src/test_StringDeserializer.c | 73 ++++++++++++++++++- packages/corto/lang/test/test.cx | 7 ++ 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/packages/corto/lang/test/src/test_StringDeserializer.c b/packages/corto/lang/test/src/test_StringDeserializer.c index f9d36de4..c9d2f6d3 100644 --- a/packages/corto/lang/test/src/test_StringDeserializer.c +++ b/packages/corto/lang/test/src/test_StringDeserializer.c @@ -205,6 +205,63 @@ cx_void _test_StringDeserializer_tc_deserCompositeMixed(test_StringDeserializer /* $end */ } +/* ::test::StringDeserializer::tc_deserCompositeNested() */ +cx_void _test_StringDeserializer_tc_deserCompositeNested(test_StringDeserializer this) { +/* $begin(::test::StringDeserializer::tc_deserCompositeNested) */ + + cx_object o = NULL; + cx_int16 ret = cx_fromStr(&o, "test::Line{{10, 20}, {30, 40}}"); + test_assert(o != NULL); + test_assert(ret == 0); + test_assert(cx_typeof(o) == (cx_type)test_Line_o); + test_Line *l = o; + test_assert(l->start.x == 10); + test_assert(l->start.y == 20); + test_assert(l->stop.x == 30); + test_assert(l->stop.y == 40); + cx_delete(o); + +/* $end */ +} + +/* ::test::StringDeserializer::tc_deserCompositeNestedMembers() */ +cx_void _test_StringDeserializer_tc_deserCompositeNestedMembers(test_StringDeserializer this) { +/* $begin(::test::StringDeserializer::tc_deserCompositeNestedMembers) */ + + cx_object o = NULL; + cx_int16 ret = cx_fromStr(&o, "test::Line{stop={y=40, x=30}, start={x=10, y=20}}"); + test_assert(o != NULL); + test_assert(ret == 0); + test_assert(cx_typeof(o) == (cx_type)test_Line_o); + test_Line *l = o; + test_assert(l->start.x == 10); + test_assert(l->start.y == 20); + test_assert(l->stop.x == 30); + test_assert(l->stop.y == 40); + cx_delete(o); + +/* $end */ +} + +/* ::test::StringDeserializer::tc_deserCompositeNestedMixed() */ +cx_void _test_StringDeserializer_tc_deserCompositeNestedMixed(test_StringDeserializer this) { +/* $begin(::test::StringDeserializer::tc_deserCompositeNestedMixed) */ + + cx_object o = NULL; + cx_int16 ret = cx_fromStr(&o, "test::Line{start={x=40, 30}, {x=10, 20}}"); + test_assert(o != NULL); + test_assert(ret == 0); + test_assert(cx_typeof(o) == (cx_type)test_Line_o); + test_Line *l = o; + test_assert(l->start.x == 10); + test_assert(l->start.y == 20); + test_assert(l->stop.x == 30); + test_assert(l->stop.y == 40); + cx_delete(o); + +/* $end */ +} + /* ::test::StringDeserializer::tc_deserCompositeNoType() */ cx_void _test_StringDeserializer_tc_deserCompositeNoType(test_StringDeserializer this) { /* $begin(::test::StringDeserializer::tc_deserCompositeNoType) */ @@ -709,7 +766,13 @@ cx_void _test_StringDeserializer_tc_deserUint8Overflow(test_StringDeserializer t cx_void _test_StringDeserializer_tc_errExcessElements(test_StringDeserializer this) { /* $begin(::test::StringDeserializer::tc_errExcessElements) */ - /* << Insert implementation >> */ + cx_string err; + cx_object o = NULL; + cx_int16 ret = cx_fromStr(&o, "test::Point{10, 20, 30}"); + test_assert(o == NULL); + test_assert(ret != 0); + test_assert((err = cx_lasterr()) != NULL); + test_assert(!strcmp(err, "excess elements")); /* $end */ } @@ -764,7 +827,13 @@ cx_void _test_StringDeserializer_tc_errTypeMismatch(test_StringDeserializer this cx_void _test_StringDeserializer_tc_errUnresolvedMember(test_StringDeserializer this) { /* $begin(::test::StringDeserializer::tc_errUnresolvedMember) */ - /* << Insert implementation >> */ + cx_string err; + cx_object o = NULL; + cx_int16 ret = cx_fromStr(&o, "test::Point{a = 10}"); + test_assert(o == NULL); + test_assert(ret != 0); + test_assert((err = cx_lasterr()) != NULL); + test_assert(!strcmp(err, "member 'a' not found")); /* $end */ } diff --git a/packages/corto/lang/test/test.cx b/packages/corto/lang/test/test.cx index a07411c2..29b03b59 100644 --- a/packages/corto/lang/test/test.cx +++ b/packages/corto/lang/test/test.cx @@ -20,6 +20,9 @@ struct Point:: struct Point3D: Point:: z: int32 +struct Line:: + start, stop: Point + // Object management testcases class ObjectMgmt: test::Suite:: prevAttr: lang::attr, local|private @@ -154,3 +157,7 @@ class StringDeserializer: test::Suite:: void tc_deserInheritance() test::Case void tc_deserInheritanceMembers() test::Case void tc_deserInheritanceMixed() test::Case + + void tc_deserCompositeNested() test::Case + void tc_deserCompositeNestedMembers() test::Case + void tc_deserCompositeNestedMixed() test::Case