From: Michal Sojka Date: Mon, 21 Jun 2010 16:45:04 +0000 (+0200) Subject: Add sequence tests X-Git-Url: https://rtime.felk.cvut.cz/gitweb/frescor/forb.git/commitdiff_plain/bb52cede91d54a94a26802342888cf2b5818a448?ds=sidebyside Add sequence tests --- diff --git a/src/tests/Makefile.omk b/src/tests/Makefile.omk index e079c14..a81f884 100644 --- a/src/tests/Makefile.omk +++ b/src/tests/Makefile.omk @@ -6,7 +6,13 @@ ifeq ($(CONFIG_FORB_PROTO_UNIX),y) test_PROGRAMS += test_proto_unix endif -CFLAGS += -DTEST +wvtest_PROGRAMS += sequence +sequence_SOURCES = sequence.c +sequence_CLIENT_IDL = sequence.idl +sequence_LIBS = wvtest + +CFLAGS += -DTEST -DWVTEST_CONFIGURED +INCLUDES += -I. lib_LOADLIBES = forb ulut fosa rt diff --git a/src/tests/sequence.c b/src/tests/sequence.c new file mode 100644 index 0000000..5bf48a3 --- /dev/null +++ b/src/tests/sequence.c @@ -0,0 +1,50 @@ +#include +#include +#include "sequence.h" + +int destructor_called; +int sum_of_destructed; + +void destructor(int *elem) +{ + destructor_called++; + sum_of_destructed += *elem; +} + +WVTEST_MAIN("sequence manipulation") +{ + CORBA_sequence_long *s; + int i, *e, foreach_retuned_sum = 0; + forb_sequence_alloc(s, 10); + WVPASS(s); + CORBA_sequence_set_release(s, 1); + WVPASS(forb_sequence_length(*s) == 0); + forb_sequence_free(s, destructor); + WVPASS(destructor_called == 0); + + forb_sequence_alloc(s, 10); + WVPASS(s); + for (i=0; i<10; i++) + forb_sequence_elem(*s, i) = i; + forb_sequence_length(*s) = 10; + WVPASS(forb_sequence_length(*s) == 10); + forb_sequence_free(s, destructor); + WVPASS(destructor_called == 0); + + forb_sequence_alloc(s, 10); + WVPASS(s); + CORBA_sequence_set_release(s, 1); + for (i=0; i<10; i++) + forb_sequence_elem(*s, i) = i; + forb_sequence_length(*s) = 10; + WVPASS(forb_sequence_length(*s) == 10); + + forb_sequence_foreach(*s, e) { + foreach_retuned_sum += *e; + } + WVPASS(foreach_retuned_sum == 45); + + forb_sequence_free(s, destructor); + WVPASS(destructor_called == 10); + WVPASS(sum_of_destructed == 45); +} diff --git a/src/tests/sequence.idl b/src/tests/sequence.idl new file mode 100644 index 0000000..8ab9d63 --- /dev/null +++ b/src/tests/sequence.idl @@ -0,0 +1,12 @@ +interface MyIface { + void MyOp(); +}; + +struct SeqStruct { + sequence MyLongs; + sequence MyOctets; +// sequence Interfaces; FIXME: This is bugy: sequence-common.c:124: undefined reference to `CORBA_sequence_Object_deserialize + sequence > SeqSeq; +}; + +typedef sequence MyStrings;