utest: + tag/xtag + basename tests

This commit is contained in:
Roland Conybeare 2023-09-22 12:16:41 -04:00
commit ca64cdd911
3 changed files with 112 additions and 1 deletions

View file

@ -1,7 +1,10 @@
# indentlog unit test
set(SELF_EXECUTABLE_NAME utest.indentlog)
set(SELF_SOURCE_FILES fixed.test.cpp quoted.test.cpp vector.test.cpp array.test.cpp timeutil.test.cpp indentlog_utest_main.cpp)
set(SELF_SOURCE_FILES
fixed.test.cpp quoted.test.cpp vector.test.cpp array.test.cpp timeutil.test.cpp tag.test.cpp
filename.test.cpp
indentlog_utest_main.cpp)
add_executable(${SELF_EXECUTABLE_NAME} ${SELF_SOURCE_FILES})
xo_include_options(${SELF_EXECUTABLE_NAME})

41
utest/filename.test.cpp Normal file
View file

@ -0,0 +1,41 @@
/* @file filename.test.cpp */
#include "indentlog/print/filename.hpp"
#include "indentlog/print/tag.hpp"
#include <vector>
#include <catch2/catch.hpp>
using namespace xo;
namespace ut {
struct filename_tcase {
filename_tcase() = default;
filename_tcase(std::string_view path, std::string_view basename)
: path_{path}, basename_{basename} {}
/* target time value to test */
std::string_view path_;
std::string_view basename_;
}; /*filename_tcase*/
std::vector<filename_tcase> s_filename_tcase_v(
{
filename_tcase("foo", "foo"),
});
TEST_CASE("filename", "[filename]") {
for (std::uint32_t i_tc = 0, z_tc = s_filename_tcase_v.size(); i_tc < z_tc; ++i_tc) {
filename_tcase const & tc = s_filename_tcase_v[i_tc];
INFO(tostr(xtag("i_tc", i_tc), xtag("path", tc.path_)));
INFO(xtag("tc.basename", tc.basename_));
std::stringstream ss;
ss << basename(tc.path_);
REQUIRE(ss.str() == tc.basename_);
}
} /*TEST_CASE(filename)*/
} /*namespace ut*/
/* end filename.test.cpp */

67
utest/tag.test.cpp Normal file
View file

@ -0,0 +1,67 @@
/* @file tag.test.cpp */
#include "indentlog/print/tag.hpp"
#include "indentlog/print/vector.hpp"
#include "indentlog/print/concat.hpp"
#include <catch2/catch.hpp>
#include <sstream>
using namespace xo;
namespace ut {
TEST_CASE("tag", "[tag]") {
tag_config::tag_color = color_spec_type::none();
{
std::stringstream ss;
ss << tag("foo", "hello,world!");
REQUIRE(ss.str() == ":foo hello,world!");
}
{
std::stringstream ss;
ss << tag("foo", "hello, world!");
REQUIRE(ss.str() == ":foo \"hello, world!\"");
}
{
std::stringstream ss;
std::vector<int> v = {1, 2, 3};
ss << tag("foo", v);
REQUIRE(ss.str() == ":foo \"[1 2 3]\"");
}
{
std::stringstream ss;
ss << tag("foo", concat("farenheit", 451));
REQUIRE(ss.str() == ":foo farenheit451");
}
{
std::stringstream ss;
ss << tag("foo", "hello") << xtag("bar", "there");
REQUIRE(ss.str() == ":foo hello :bar there");
}
tag_config::tag_color = color_spec_type::blue();
{
std::stringstream ss;
ss << tag("foo", "hello,world!");
/* color on color off
* <---------> <----->
*
* see [indentlog/print/color.hpp] for escape sequences
*/
REQUIRE(ss.str() == "\033[31;34m:foo\033[0m hello,world!");
}
} /*TEST_CASE(tag)*/
} /*namespace ut*/
/* end tag.test.cpp */