xo-alloc/utest/tag.test.cpp

69 lines
1.7 KiB
C++

/* @file tag.test.cpp */
#include "xo/indentlog/print/tag.hpp"
#include "xo/indentlog/print/vector.hpp"
#include "xo/indentlog/print/concat.hpp"
#include <catch2/catch.hpp>
#include <sstream>
using namespace xo;
namespace ut {
using xo::print::ccs;
TEST_CASE("tag", "[tag]") {
tag_config::tag_color = color_spec_type::none();
{
std::stringstream ss;
ss << tag("foo", ccs("hello,world!"));
REQUIRE(ss.str() == ":foo hello,world!");
}
{
std::stringstream ss;
ss << tag("foo", ccs("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", ccs("hello")) << xtag("bar", ccs("there"));
REQUIRE(ss.str() == ":foo hello :bar there");
}
tag_config::tag_color = color_spec_type::blue();
{
std::stringstream ss;
ss << tag("foo", ccs("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 */