aboutsummaryrefslogtreecommitdiffstats
path: root/tests/libfoo
diff options
context:
space:
mode:
Diffstat (limited to 'tests/libfoo')
-rw-r--r--tests/libfoo/Makefile15
-rw-r--r--tests/libfoo/bar.cpp15
-rw-r--r--tests/libfoo/bar.h15
-rw-r--r--tests/libfoo/foo.cpp17
-rw-r--r--tests/libfoo/foo.h14
-rw-r--r--tests/libfoo/main.cpp15
6 files changed, 91 insertions, 0 deletions
diff --git a/tests/libfoo/Makefile b/tests/libfoo/Makefile
new file mode 100644
index 000000000..eaf8f62f4
--- /dev/null
+++ b/tests/libfoo/Makefile
@@ -0,0 +1,15 @@
+all: foo.o bar.o
+ g++ -fPIC -shared foo.o bar.o -o libfoo.so
+
+foo.o: foo.h foo.cpp
+ g++ -fPIC foo.cpp -c
+
+bar.o: bar.h bar.cpp
+ g++ -fPIC bar.cpp -c
+
+test: main.cpp
+ g++ main.cpp -L. -lfoo -I. -o footest
+
+clean:
+ rm *.o *.so footest -rf
+
diff --git a/tests/libfoo/bar.cpp b/tests/libfoo/bar.cpp
new file mode 100644
index 000000000..a8f9712a4
--- /dev/null
+++ b/tests/libfoo/bar.cpp
@@ -0,0 +1,15 @@
+#include <iostream>
+#include "bar.h"
+
+using namespace std;
+
+void Bar::pureVirtual()
+{
+ cout << "Bar::pureVirtual()" << endl;
+}
+
+void Bar::unpureVirtual()
+{
+ cout << "Bar::unpureVirtual()" << endl;
+}
+
diff --git a/tests/libfoo/bar.h b/tests/libfoo/bar.h
new file mode 100644
index 000000000..4a73c2deb
--- /dev/null
+++ b/tests/libfoo/bar.h
@@ -0,0 +1,15 @@
+#ifndef BAR_H
+#define BAR_H
+
+#include "foo.h"
+
+class Bar : public Foo
+{
+public:
+ Bar() {}
+ virtual ~Bar() {}
+ virtual void pureVirtual();
+ virtual void unpureVirtual();
+};
+#endif // BAR_H
+
diff --git a/tests/libfoo/foo.cpp b/tests/libfoo/foo.cpp
new file mode 100644
index 000000000..22be35018
--- /dev/null
+++ b/tests/libfoo/foo.cpp
@@ -0,0 +1,17 @@
+#include <iostream>
+#include "foo.h"
+
+using namespace std;
+
+void Foo::unpureVirtual()
+{
+ cout << "Foo::unpureVirtual()" << endl;
+}
+
+void Foo::callPureVirtual()
+{
+ cout << "Foo::callPureVirtual() -- calling pureVirtual..." << endl;
+ this->pureVirtual();
+ cout << " -- pureVirtual called." << endl;
+}
+
diff --git a/tests/libfoo/foo.h b/tests/libfoo/foo.h
new file mode 100644
index 000000000..585b844f7
--- /dev/null
+++ b/tests/libfoo/foo.h
@@ -0,0 +1,14 @@
+#ifndef FOO_H
+#define FOO_H
+
+class Foo
+{
+public:
+ Foo() {}
+ virtual ~Foo() {}
+ virtual void pureVirtual() = 0;
+ virtual void unpureVirtual();
+ virtual void callPureVirtual();
+};
+#endif // FOO_H
+
diff --git a/tests/libfoo/main.cpp b/tests/libfoo/main.cpp
new file mode 100644
index 000000000..6f410addb
--- /dev/null
+++ b/tests/libfoo/main.cpp
@@ -0,0 +1,15 @@
+#include "foo.h"
+#include "bar.h"
+
+int
+main(int argv, char **argc)
+{
+ Bar bar;
+
+ bar.unpureVirtual();
+ bar.pureVirtual();
+ bar.callPureVirtual();
+
+ return 0;
+}
+