diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index be4f1793..aba5a9f1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,6 +14,10 @@ if(OS_DARWIN) set(test_srcs ${test_srcs} test-darwin.cc) endif() +set(test_srcs ${test_srcs} test-core.cc) +set(test_srcs ${test_srcs} test-diskio.cc) +set(test_srcs ${test_srcs} test-fs.cc) + add_executable(test-conky test-common.cc ${test_srcs}) target_link_libraries(test-conky conky_core) catch_discover_tests(test-conky) diff --git a/tests/test-core.cc b/tests/test-core.cc new file mode 100644 index 00000000..ff628172 --- /dev/null +++ b/tests/test-core.cc @@ -0,0 +1,68 @@ +/* + * + * Conky, a system monitor, based on torsmo + * + * Any original torsmo code is licensed under the BSD license + * + * All code written since the fork of torsmo is licensed under the GPL + * + * Please see COPYING for details + * + * Copyright (c) 2005-2019 Brenden Matthews, Philip Kovacs, et. al. + * (see AUTHORS) + * All rights reserved. + * + * This program 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. + * + * This program 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 this program. If not, see . + * + */ + +#include "catch2/catch.hpp" + +#include + +TEST_CASE("remove_comments returns correct value") { + SECTION("for no comments") { + char text[] = "test text\n"; + + size_t removed_chars = remove_comments(text); + + REQUIRE(removed_chars == 0); + } + + SECTION("for no comments but with backslashes") { + char text[] = "te\\st t\\ext\n"; + + size_t removed_chars = remove_comments(text); + + REQUIRE(removed_chars == 0); + } + + SECTION("for single line of comment") { + char text_with_newline[] = "#test text\n"; + char text_no_newline[] = "#test text"; + + size_t removed_chars_with_newline = remove_comments(text_with_newline); + size_t removed_chars_no_newline = remove_comments(text_no_newline); + + REQUIRE(removed_chars_with_newline == 11); + REQUIRE(removed_chars_no_newline == 10); + } + + SECTION("for comment starting in middle of line") { + char text[] = "test #text\n"; + + size_t removed_chars = remove_comments(text); + + REQUIRE(removed_chars == 6); + } +} diff --git a/tests/test-diskio.cc b/tests/test-diskio.cc new file mode 100644 index 00000000..d0c24eae --- /dev/null +++ b/tests/test-diskio.cc @@ -0,0 +1,50 @@ +/* + * + * Conky, a system monitor, based on torsmo + * + * Any original torsmo code is licensed under the BSD license + * + * All code written since the fork of torsmo is licensed under the GPL + * + * Please see COPYING for details + * + * Copyright (c) 2005-2019 Brenden Matthews, Philip Kovacs, et. al. + * (see AUTHORS) + * All rights reserved. + * + * This program 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. + * + * This program 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 this program. If not, see . + * + */ + +#include "catch2/catch.hpp" + +#include +#include +#include + +#if BUILD_X11 +TEST_CASE("diskiographval returns correct value") { + struct text_object obj; + + SECTION("for valid data") { + diskio_stat *diskio = new diskio_stat; + diskio->current = 2.5; + + obj.data.opaque = diskio; + + REQUIRE(diskiographval(&obj) == Approx(2.5)); + + delete diskio; + } +} +#endif diff --git a/tests/test-fs.cc b/tests/test-fs.cc new file mode 100644 index 00000000..b66594f1 --- /dev/null +++ b/tests/test-fs.cc @@ -0,0 +1,61 @@ +/* + * + * Conky, a system monitor, based on torsmo + * + * Any original torsmo code is licensed under the BSD license + * + * All code written since the fork of torsmo is licensed under the GPL + * + * Please see COPYING for details + * + * Copyright (c) 2005-2019 Brenden Matthews, Philip Kovacs, et. al. + * (see AUTHORS) + * All rights reserved. + * + * This program 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. + * + * This program 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 this program. If not, see . + * + */ + +#include "catch2/catch.hpp" + +#include + +TEST_CASE("fs_free_percentage returns correct value") { + struct text_object obj; + + SECTION("for fs size == 0") { + fs_stat *fs = new fs_stat; + fs->size = 0; + fs->avail = 17; + fs->free = 97; + + obj.data.opaque = fs; + + REQUIRE(fs_free_percentage(&obj) == 0); + + delete fs; + } + + SECTION("for valid data") { + fs_stat *fs = new fs_stat; + fs->size = 68; + fs->avail = 17; + fs->free = 97; + + obj.data.opaque = fs; + + REQUIRE(fs_free_percentage(&obj) == 25); + + delete fs; + } +}