}
/* put it all together (inc. the ending LF) */
-if (asprintf(&logline,"%s%s%s\n",common,user,var) == -1) NOMEM
+if (trio_asprintf(&logline,"%s%s%s\n",common,user,var) == -1) NOMEM
clean:
if (date) free(date);
return ret;
}
+/**
+ * edg_wll_CompareEvents - compare two event structures
+ * Calls:
+ * Algorithm:
+ */
+edg_wll_ErrorCode edg_wll_CompareEvents(
+ edg_wll_Context context, /* context IN */
+ const edg_wll_Event *e1, /* event 1 IN */
+ const edg_wll_Event *e2 /* event 2 IN */
+)
+{
+ if (e1->any.type != e2->any.type) return edg_wll_SetError(context,EDG_WLL_ERROR_COMPARE_EVENTS,"Different event types");
+@@@{
+ selectType $event '_common_';
+ for ($event->getFieldsOrdered) {
+ my $f = selectField $event $_;
+ my $fn = getName $f;
+ my $ft = $f->{type};
+
+ my $a = "e1->any.$fn";
+ my $b = "e2->any.$fn";
+
+ gen "\tif (!(".eval($main::compare{C}->{$ft}).")) return edg_wll_SetError(context,EDG_WLL_ERROR_COMPARE_EVENTS,\"Different $fn\");\n";
+ }
+
+ gen "\tswitch(e1->any.type) {\n";
+ for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} }
+ $event->getTypes)
+ {
+ my $tu = uc $t;
+ my $tl = lcfirst $t;
+
+ selectType $event $t;
+ gen "\t\tcase EDG_WLL_EVENT\_$tu :\n";
+ for ($event->getFieldsOrdered) {
+ my $f = selectField $event $_;
+ my $fn = $f->{name};
+ my $ft = $f->{type};
+
+ my $a = "e1->$tl.$fn";
+ my $b = "e2->$tl.$fn";
+
+ gen "\t\t\tif (!(".eval($main::compare{C}->{$ft}).")) return edg_wll_SetError(context,EDG_WLL_ERROR_COMPARE_EVENTS,\"Different $fn\");\n";
+ }
+ gen "\t\tbreak;\n";
+ }
+@@@}
+ default: return edg_wll_SetError(context,EDG_WLL_ERROR_COMPARE_EVENTS,"Unknown difference");
+ } /* switch */
+ return edg_wll_ResetError(context);
+}
+
/**
* my_edg_wll_ULMGetValueAt - get value at index, but also
@@@}
/* put it all together (inc. the ending LF) */
-if (asprintf(&logline,"%s%s\n",common,var) == -1) NOMEM
+if (trio_asprintf(&logline,"%s%s\n",common,var) == -1) NOMEM
clean:
if (date) free(date);
{
CPPUNIT_TEST_SUITE(EventParseTest);
CPPUNIT_TEST(regJob);
+/*
+@@@{
+ for my $e ($event->getTypesOrdered) {
+ my $u = lcfirst $e;
+ my $c = getTypeComment $event $e;
+ gen "\tCPPUNIT_TEST($u);\n";
+ }
+@@@}
+*/
CPPUNIT_TEST_SUITE_END();
public:
void regJob();
-
-
-};
-
-static char * compare_events(const edg_wll_Event *e1, const edg_wll_Event *e2)
-{
- if (e1->any.type != e2->any.type) return "type";
+/*
@@@{
- selectType $event '_common_';
- for ($event->getFieldsOrdered) {
- my $f = selectField $event $_;
- my $fn = getName $f;
- my $ft = $f->{type};
-
- my $a = "e1->any.$fn";
- my $b = "e2->any.$fn";
-
- gen "\tif (!(".eval($main::compare{C}->{$ft}).")) return \"$fn\";\n";
- }
-
- gen "\tswitch(e1->any.type) {\n";
- for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} }
- $event->getTypes)
- {
- my $tu = uc $t;
- my $tl = lcfirst $t;
-
- selectType $event $t;
- gen "\t\tcase EDG_WLL_EVENT\_$tu :\n";
- for ($event->getFieldsOrdered) {
- my $f = selectField $event $_;
- my $fn = $f->{name};
- my $ft = $f->{type};
-
- my $a = "e1->$tl.$fn";
- my $b = "e2->$tl.$fn";
-
- gen "\t\t\tif (!(".eval($main::compare{C}->{$ft}).")) return \"$fn\";\n";
- }
- gen "\t\tbreak;\n";
- }
+ for my $e ($event->getTypesOrdered) {
+ my $u = lcfirst $e;
+ my $c = getTypeComment $event $e;
+ gen "\tvoid $u();\n";
+ }
@@@}
- default: return "default";
- } /* switch */
- return NULL;
-}
+*/
+
+};
void EventParseTest::regJob()
{
if (!line) {
edg_wll_Error(ctx,&et,&ed);
- CPPUNIT_ASSERT_MESSAGE(std::string("UnparseEvent():") + et + " " + ed, line);
+ CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_UnparseEvent():") + et + " " + ed, line);
}
if (edg_wll_ParseEvent(ctx,line,&e2)) {
edg_wll_Error(ctx,&et,&ed);
- CPPUNIT_ASSERT_MESSAGE(std::string("ParseEvent():") + et + " " + ed, 0);
+ CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_ParseEvent():") + et + " " + ed, 0);
}
- if ((et = compare_events(e1,e2))) {
- CPPUNIT_ASSERT_MESSAGE(std::string("compare_events():") + et, 0);
+ if ((edg_wll_CompareEvents(ctx,e1,e2))) {
+ edg_wll_Error(ctx,&et,&ed);
+ CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_CompareEvents():") + et + " " + ed, 0);
}
}
+/*
+@@@{
+ for my $e ($event->getTypesOrdered) {
+ my $l = lcfirst $e;
+ my $u = uc $e;
+ my $c = getTypeComment $event $e;
+ gen "
+void EventParseTest::$l(){
+ edg_wll_Context ctx;
+ edg_wll_Event *e1,*e2;
+ char *line,*et,*ed;
+
+ edg_wll_InitContext(&ctx);
+ e1 = edg_wll_InitEvent(EDG_WLL_EVENT_$u);
+ e1->any.type = EDG_WLL_EVENT_$u;
+";
+
+ selectType $event '_common_';
+ for ($event->getFieldsOrdered) {
+ my $f = selectField $event $_;
+ my $fn = getName $f;
+ my $value = getDefaultTestValue $f;
+ if (!$f->{codes}) {
+ if (!$f->hasAlias('ULM')) {
+ my $fu = uc $fn;
+ gen "\te1->any.$fn = $value;\n";
+# gen "\tif (". $f->isNULL("e1->any.$fn") .") MISSING(EDG_WLL\_COMMON\_$fu)\n";
+ } else {
+ my $fa = $f->getName('ULM');
+ my $fu = uc $fa;
+# gen "\tif (". $f->isNULL("e1->any.$fn") .") MISSING(ULM\_$fu)\n";
+ }
+ }
+ }
+ gen '
+ if (!line) {
+ edg_wll_Error(ctx,&et,&ed);
+ CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_UnparseEvent():") + et + " " + ed, line);
+ }
+
+ if (edg_wll_ParseEvent(ctx,line,&e2)) {
+ edg_wll_Error(ctx,&et,&ed);
+ CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_ParseEvent():") + et + " " + ed, 0);
+ }
+
+ if ((edg_wll_CompareEvents(ctx,e1,e2))) {
+ edg_wll_Error(ctx,&et,&ed);
+ CPPUNIT_ASSERT_MESSAGE(std::string("edg_wll_CompareEvents():") + et + " " + ed, 0);
+ }
+}
+
+';
+
+ }
+@@@}
+*/
+
CPPUNIT_TEST_SUITE_REGISTRATION( EventParseTest );
int main (int ac,const char *av[])