aboutsummaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/libdejagnu/unit-ccxxmix.cxx78
-rw-r--r--testsuite/libdejagnu/unit.exp6
2 files changed, 84 insertions, 0 deletions
diff --git a/testsuite/libdejagnu/unit-ccxxmix.cxx b/testsuite/libdejagnu/unit-ccxxmix.cxx
new file mode 100644
index 0000000..a57b073
--- /dev/null
+++ b/testsuite/libdejagnu/unit-ccxxmix.cxx
@@ -0,0 +1,78 @@
+// Exerciser for Dejagnu C/C++ unit test support library mixed usage
+//
+// Copyright (C) 2022 Free Software Foundation, Inc.
+//
+// This file is part of DejaGnu.
+//
+// DejaGnu is free software; you can redistribute it and/or modify it
+// under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// DejaGnu is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with DejaGnu; if not, write to the Free Software Foundation,
+// Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+//
+// This file was written by Jacob Bachmeyer.
+
+// This version of the program allows verifying that the shared counters
+// between the C API and the C++ API really are shared as documented.
+
+#include <stdio.h>
+#include <string.h>
+
+#include <cstring>
+#include <iostream>
+
+#include "dejagnu.h"
+
+TestState DGT;
+
+int
+main(int argc, char ** argv)
+{
+ if (argc < 2) {
+ std::cerr <<"usage: " <<argv[0] <<" <test name>..."<<std::endl
+ <<"see source for details" <<std::endl;
+ return 2;
+ }
+
+ for (int i = 1; i < argc; i++ ) {
+ if (i & 1) { // alternate with each test on the command line
+ if (!std::strcmp("pass", argv[i])) DGT.pass("test");
+ else if (!std::strcmp("xpass", argv[i])) DGT.xpass("test");
+ else if (!std::strcmp("fail", argv[i])) DGT.fail("test");
+ else if (!std::strcmp("xfail", argv[i])) DGT.xfail("test");
+ else if (!std::strcmp("untested", argv[i])) DGT.untested("test");
+ else if (!std::strcmp("unresolved", argv[i])) DGT.unresolved("test");
+ else if (!std::strcmp("unsupported", argv[i])) DGT.unsupported("test");
+ else if (!std::strcmp("note", argv[i])) DGT.note("test");
+ else {
+ std::cerr <<argv[0] <<": unknown test `" <<argv[i] <<"'" <<std::endl;
+ return 2;
+ }
+ } else { // use C API for every other test
+ if (!strcmp("pass", argv[i])) pass("test");
+ else if (!strcmp("xpass", argv[i])) xpass("test");
+ else if (!strcmp("fail", argv[i])) fail("test");
+ else if (!strcmp("xfail", argv[i])) xfail("test");
+ else if (!strcmp("untested", argv[i])) untested("test");
+ else if (!strcmp("unresolved", argv[i])) unresolved("test");
+ else if (!strcmp("unsupported", argv[i])) unsupported("test");
+ else if (!strcmp("note", argv[i])) note("test");
+ else {
+ fprintf(stderr, "%s: unknown test `%s'\n", argv[0], argv[i]);
+ return 2;
+ }
+ }
+ }
+
+ return 0;
+}
+
+// EOF
diff --git a/testsuite/libdejagnu/unit.exp b/testsuite/libdejagnu/unit.exp
index abbcf8a..34da7b4 100644
--- a/testsuite/libdejagnu/unit.exp
+++ b/testsuite/libdejagnu/unit.exp
@@ -136,3 +136,9 @@ foreach language {c cxx} {
note pass fail xpass xfail untested unresolved unsupported
}
}
+
+test_libdejagnu_unit ccxxmix {
+ {pass pass xpass xfail xfail xpass}
+ {fail fail xfail xpass xpass xfail}
+ {untested unresolved unsupported untested unresolved unsupported}
+}