summaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile87
-rw-r--r--tests/test-base64.cpp23
-rw-r--r--tests/test-file.cpp56
-rw-r--r--tests/test-mime.cpp23
-rw-r--r--tests/test-os.cpp22
-rw-r--r--tests/test-stringhelper.cpp23
-rw-r--r--tests/test-tempfile.cpp23
-rw-r--r--tests/test-url.cpp22
8 files changed, 277 insertions, 2 deletions
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 0000000..44f50dc
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,87 @@
+CXXFLAGS=-g -O0
+
+include ../common.mk
+
+ifeq ($(CXXTYPE),clang++)
+CXXFLAGS+=-fprofile-instr-generate -fcoverage-mapping
+LDFLAGS+=-fprofile-instr-generate -fcoverage-mapping
+else
+# GCC
+CXXFLAGS+=--coverage
+LDFLAGS+=--coverage
+endif
+
+UNITS=\
+ base64.cpp \
+ file.cpp \
+ mime.cpp \
+ os.cpp \
+ stringhelper.cpp \
+ tempfile.cpp \
+ url.cpp
+
+UNITTESTS=\
+ test-base64.cpp \
+ test-file.cpp \
+ test-mime.cpp \
+ test-os.cpp \
+ test-stringhelper.cpp \
+ test-tempfile.cpp \
+ test-url.cpp
+
+CXXFLAGS+=\
+ -I/usr/src/googletest/googletest/include \
+ -I/usr/src/googletest/googlemock/include \
+ -I/usr/src/googletest/googletest \
+ -I/usr/src/googletest/googlemock \
+ -I..
+
+test: unittests
+ # https://clang.llvm.org/docs/SourceBasedCodeCoverage.html
+ifeq ($(CXXTYPE),clang++)
+ LLVM_PROFILE_FILE="unittests.profraw" ./unittests
+ $(LLVMPROFDATA) merge -sparse unittests.profraw -o unittests.profdata
+ $(LLVMCOV) report --ignore-filename-regex='google' --ignore-filename-regex='test-' --ignore-filename-regex='Magick' --show-region-summary=0 -instr-profile unittests.profdata unittests
+else
+ ./unittests
+ gcovr -r ..
+endif
+
+coverage:
+ $(LLVMCOV) show -instr-profile unittests.profdata $(UNITS:.cpp=.o)
+
+unittests: libgmock.a $(UNITTESTS:.cpp=.o) $(UNITS:.cpp=.o)
+ $(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LIBS) -o $@
+
+%.o: %.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+base64.o: ../base64.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+file.o: ../file.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+mime.o: ../mime.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+os.o: ../os.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+stringhelper.o: ../stringhelper.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+tempfile.o: ../tempfile.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+url.o: ../url.cpp
+ $(CXX) $(CXXFLAGS) -o $@ -c $<
+
+libgmock.a:
+ $(CXX) $(CXXFLAGS) -c /usr/src/googletest/googletest/src/gtest-all.cc
+ $(CXX) $(CXXFLAGS) -c /usr/src/googletest/googlemock/src/gmock-all.cc
+ $(CXX) $(CXXFLAGS) -c /usr/src/googletest/googlemock/src/gmock_main.cc
+ ar -rv libgmock.a gmock-all.o gtest-all.o gmock_main.o
+
+clean:
+ -rm -f *.o *.a unittests *.gcda *.gcno *.profraw *.profdata *.gcov
diff --git a/tests/test-base64.cpp b/tests/test-base64.cpp
new file mode 100644
index 0000000..03648d4
--- /dev/null
+++ b/tests/test-base64.cpp
@@ -0,0 +1,23 @@
+#include <gtest/gtest.h>
+
+#include "file.h"
+
+class Base64Test: public ::testing::Test
+{
+protected:
+ Base64Test(){
+ }
+
+ ~Base64Test() override{
+ }
+
+ void SetUp() override
+ {
+ }
+
+ void TearDown() override
+ {
+ }
+
+};
+
diff --git a/tests/test-file.cpp b/tests/test-file.cpp
index 13d0ded..7c3b752 100644
--- a/tests/test-file.cpp
+++ b/tests/test-file.cpp
@@ -1,3 +1,55 @@
-getFile
+#include <gtest/gtest.h>
-getFile /proc
+#include "file.h"
+
+#include <filesystem>
+#include <fstream>
+#include <iostream>
+
+namespace fs = std::filesystem;
+
+namespace {
+ const fs::path testFilename{"testfile.txt"};
+} // namespace
+
+class FileTest: public ::testing::Test
+{
+protected:
+ FileTest(){
+ }
+
+ ~FileTest() override{
+ }
+
+ void SetUp() override
+ {
+ std::error_code ec;
+ fs::remove(testFilename, ec);
+ }
+
+ void TearDown() override
+ {
+ std::error_code ec;
+ fs::remove(testFilename, ec);
+ }
+
+};
+
+TEST_F(FileTest, getFile)
+{
+ {
+ std::ofstream of(testFilename, std::ios::binary);
+ of << "abc";
+ }
+
+ std::string s{Reichwein::File::getFile(testFilename)};
+
+ EXPECT_EQ(s, "abc");
+}
+
+TEST_F(FileTest, getFile_proc)
+{
+ std::string s{Reichwein::File::getFile("/proc/cmdline")};
+
+ EXPECT_GT(s.size(), 0);
+}
diff --git a/tests/test-mime.cpp b/tests/test-mime.cpp
new file mode 100644
index 0000000..2d28a36
--- /dev/null
+++ b/tests/test-mime.cpp
@@ -0,0 +1,23 @@
+#include <gtest/gtest.h>
+
+#include "file.h"
+
+class MimeTest: public ::testing::Test
+{
+protected:
+ MimeTest(){
+ }
+
+ ~MimeTest() override{
+ }
+
+ void SetUp() override
+ {
+ }
+
+ void TearDown() override
+ {
+ }
+
+};
+
diff --git a/tests/test-os.cpp b/tests/test-os.cpp
new file mode 100644
index 0000000..6177bfa
--- /dev/null
+++ b/tests/test-os.cpp
@@ -0,0 +1,22 @@
+#include <gtest/gtest.h>
+
+#include "file.h"
+
+class OsTest: public ::testing::Test
+{
+protected:
+ OsTest(){
+ }
+
+ ~OsTest() override{
+ }
+
+ void SetUp() override
+ {
+ }
+
+ void TearDown() override
+ {
+ }
+
+};
diff --git a/tests/test-stringhelper.cpp b/tests/test-stringhelper.cpp
new file mode 100644
index 0000000..3ece784
--- /dev/null
+++ b/tests/test-stringhelper.cpp
@@ -0,0 +1,23 @@
+#include <gtest/gtest.h>
+
+#include "file.h"
+
+class StringhelperTest: public ::testing::Test
+{
+protected:
+ StringhelperTest(){
+ }
+
+ ~StringhelperTest() override{
+ }
+
+ void SetUp() override
+ {
+ }
+
+ void TearDown() override
+ {
+ }
+
+};
+
diff --git a/tests/test-tempfile.cpp b/tests/test-tempfile.cpp
new file mode 100644
index 0000000..b9bef05
--- /dev/null
+++ b/tests/test-tempfile.cpp
@@ -0,0 +1,23 @@
+#include <gtest/gtest.h>
+
+#include "file.h"
+
+class TempfileTest: public ::testing::Test
+{
+protected:
+ TempfileTest(){
+ }
+
+ ~TempfileTest() override{
+ }
+
+ void SetUp() override
+ {
+ }
+
+ void TearDown() override
+ {
+ }
+
+};
+
diff --git a/tests/test-url.cpp b/tests/test-url.cpp
new file mode 100644
index 0000000..2f5075a
--- /dev/null
+++ b/tests/test-url.cpp
@@ -0,0 +1,22 @@
+#include <gtest/gtest.h>
+
+#include "file.h"
+
+class URLTest: public ::testing::Test
+{
+protected:
+ URLTest(){
+ }
+
+ ~URLTest() override{
+ }
+
+ void SetUp() override
+ {
+ }
+
+ void TearDown() override
+ {
+ }
+
+};