static void test_1_02()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log_NOTICE(pantheios::real(+1.1));
    pantheios::log_NOTICE(pantheios::real(-1.1));
    pantheios::log_NOTICE(pantheios::real(+0.0000001));
    pantheios::log_NOTICE(pantheios::real(-0.0000001));


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST(!results.empty());
    XTESTS_TEST(4 == results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("1.1"), results[0].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("-1.1"), results[1].statement);
//    XTESTS_TEST_STRING_EQUAL(PSTR("0.0000001"), results[2].statement);
//    XTESTS_TEST_STRING_EQUAL(PSTR("-0.0000001"), results[3].statement);
}
static void test_1_01()
{
    // 1. Setup

    const PAN_CHAR_T  prefix[]    =   PSTR("process: ");
    PAN_CHAR_T        pid_[21 + STLSOFT_NUM_ELEMENTS(prefix)];
    PAN_CHAR_T const* pid         =   stlsoft::integer_to_string(&pid_[0], STLSOFT_NUM_ELEMENTS(pid_), pan_get_pid_());
    PAN_CHAR_T const* stmt        =   pid - (STLSOFT_NUM_ELEMENTS(prefix) - 1);

#ifdef PANTHEIOS_USE_WIDE_STRINGS
    ::wcsncpy(const_cast<PAN_CHAR_T*>(stmt), prefix, (STLSOFT_NUM_ELEMENTS(prefix) - 1));
#else /* ? PANTHEIOS_USE_WIDE_STRINGS */
    ::strncpy(const_cast<PAN_CHAR_T*>(stmt), prefix, (STLSOFT_NUM_ELEMENTS(prefix) - 1));
#endif /* PANTHEIOS_USE_WIDE_STRINGS */

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log_NOTICE(pantheios::processId);
    pantheios::log_NOTICE(prefix, pantheios::processId);


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST_BOOLEAN_FALSE(results.empty());
    XTESTS_REQUIRE(XTESTS_TEST_INTEGER_EQUAL(2u, results.size()));
    XTESTS_TEST_STRING_EQUAL(pid, results[0].statement);
    XTESTS_TEST_STRING_EQUAL(stmt, results[1].statement);
}
static void test_1_05()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::boolean::set_value_strings(PSTR("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), PSTR("T"));

    pantheios::log_NOTICE(PSTR("{"), pantheios::boolean(false), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::boolean(true), PSTR("}"));

    pantheios::boolean::set_value_strings(NULL, NULL);

    pantheios::log_NOTICE(PSTR("{"), pantheios::boolean(false), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::boolean(true), PSTR("}"));


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST(!results.empty());
    XTESTS_TEST_INTEGER_EQUAL(4u, results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("{ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff}"), results[0].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{T}"), results[1].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{false}"), results[2].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{true}"), results[3].statement);
}
static void test_1_01()
{
    PAN_CHAR_T      hostname[1000];
    const string_t  hid = pan_get_hid_();

    { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(hostname); ++i)
    {
        ::memset(&hostname[0], 0, sizeof(hostname));

        const size_t len = pantheios::getHostName(&hostname[0], i);

        if(len == i)
        {
            // The function did not have enough space to write in, so it
            // will return the length passed to it ...
            XTESTS_TEST_INTEGER_EQUAL(i, len);
            // ... and will not have written anything to the file
            XTESTS_TEST_STRING_EQUAL(PANTHEIOS_LITERAL_STRING(""), hostname);
        }
        else
        {
            // The function had enough space, so it will return the length
            // of the intended hostname ...
            XTESTS_TEST_INTEGER_EQUAL(hid.size(), len);
            // ... and will have written the hostname
            XTESTS_TEST_STRING_EQUAL(hid, hostname);
        }
    }}
}
static void test_plain_characters()
{
    static char const plain_characters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()-_=+[{]}|;:\",<.>/?";

    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    { for(size_t i = 0; STLSOFT_NUM_ELEMENTS(plain_characters) - 1 != i; ++i)
    {
        PAN_CHAR_T const ch = plain_characters[i];

        pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(ch), PSTR("}"));
    }}


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST(!results.empty());
    XTESTS_TEST_INTEGER_EQUAL(STLSOFT_NUM_ELEMENTS(plain_characters) - 1, results.size());

    { for(size_t i = 0; STLSOFT_NUM_ELEMENTS(plain_characters) - 1 != i; ++i)
    {
        PAN_CHAR_T const    ch      =   plain_characters[i];
        PAN_CHAR_T          sz[4]   =   { '{', ch, '}', '\0' };

        XTESTS_TEST_STRING_EQUAL(sz, results[i].statement);
    }}
}
static void test_21()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    string_t msgEl1(256, '~');
    string_t msgEl2(4096, '#');


    pantheios::log(pantheios::informational, msgEl1, msgEl2);



    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST_INTEGER_EQUAL(1u, results.size());
    XTESTS_TEST_STRING_EQUAL(msgEl1 + msgEl2, results[0].statement);
    XTESTS_TEST(pantheios::informational == results[0].severity);
}
static void test_1_01()
{
    { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(s_severities); ++i)
    {
        const int severity = s_severities[i];

        // 1. Setup

        pantheios::be::test::reset();


        // 2. Create test data

        pantheios::pantheios_logprintf(severity, PSTR("abc"));


        // 3. Verification

        pantheios::be::test::Results  results = pantheios::be::test::results();

        if(!results.empty()) // Do test here, so will work with any back-end
        {
            XTESTS_TEST(1 == results.size());
            PANTHEIOS_SEV_LEVELS_EQUAL(severity, results[0].severity);
            XTESTS_TEST_STRING_EQUAL(PSTR("abc"), results[0].statement);
        }
    }}
}
static void test_1_13()
{
    recls_char_t    result[2];
    size_t  cch = Recls_SqueezePath(RECLS_LITERAL("abc/def/ghi"), &result[0], STLSOFT_NUM_ELEMENTS(result) - 1);

    result[cch] = '\0';

    XTESTS_TEST_INTEGER_EQUAL(1u, cch);
    XTESTS_TEST_STRING_EQUAL(RECLS_LITERAL("g"), result);
}
static void test_1_0()
{
    recls_char_t    result[1];
    size_t  cch = Recls_SqueezePath(RECLS_LITERAL(""), NULL, 0);

    result[cch] = '\0';

    XTESTS_TEST_INTEGER_EQUAL(0u, cch);
    XTESTS_TEST_STRING_EQUAL(RECLS_LITERAL(""), result);
}
static void test_1_10()
{
    std::string sink;

    ff::flush(ff::fmt(sink, FF_STR("{0}"), FF_STR("")));

    XTESTS_TEST_INTEGER_EQUAL(0u, sink.size());
    XTESTS_TEST_STRING_EQUAL("", sink.data());

    ff::flush(ff::fmt(sink, FF_STR("{0}"), FF_STR("abc")));

    XTESTS_TEST_INTEGER_EQUAL(3u, sink.size());
    XTESTS_TEST_STRING_EQUAL("abc", sink.data());

    ff::flush(ff::fmt(sink, FF_STR("{0}"), FF_STR("")));

    XTESTS_TEST_INTEGER_EQUAL(3u, sink.size());
    XTESTS_TEST_STRING_EQUAL("abc", sink.data());
}
static void test_1_04()
{
    { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(s_severities); ++i)
    {
        const int severity = s_severities[i];

        // 1. Setup

        pantheios::be::test::reset();


        // 2. Create test data

        pantheios::pantheios_logputs(severity, PSTR("abc"));
        pantheios::pantheios_logputs(severity, PSTR("def"));
        pantheios::pantheios_logputs(severity, PSTR("abcdefghijklmnopqrstuvwxyz"));
        pantheios::pantheios_logputs(severity, PSTR("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"));


        // 3. Verification

        pantheios::be::test::Results  results = pantheios::be::test::results();

        if(!results.empty()) // Do test here, so will work with any back-end
        {
            XTESTS_TEST(4 == results.size());

            PANTHEIOS_SEV_LEVELS_EQUAL(severity, results[0].severity);
            XTESTS_TEST_STRING_EQUAL(PSTR("abc"), results[0].statement);

            PANTHEIOS_SEV_LEVELS_EQUAL(severity, results[1].severity);
            XTESTS_TEST_STRING_EQUAL(PSTR("def"), results[1].statement);

            PANTHEIOS_SEV_LEVELS_EQUAL(severity, results[2].severity);
            XTESTS_TEST_STRING_EQUAL(PSTR("abcdefghijklmnopqrstuvwxyz"), results[2].statement);

            PANTHEIOS_SEV_LEVELS_EQUAL(severity, results[3].severity);
            XTESTS_TEST_STRING_EQUAL(PSTR("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"), results[3].statement);
        }
    }}
}
static void test_11()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data
    const size_t    numEntries  =   1000;

    { for(size_t i = 0; i < numEntries; ++i)
    {
        if(0 == (i % 2))
        {
            pantheios::log(pantheios::informational, PSTR("a"), PSTR("b"), PSTR("c"), PSTR("d"), PSTR("e"), PSTR("f"), PSTR("g"), PSTR("h"), PSTR("i"), PSTR("j"), PSTR("k"), PSTR("l"), PSTR("m"), PSTR("n"), PSTR("o"), PSTR("p"), PSTR("q"), PSTR("r"), PSTR("s"), PSTR("t"), PSTR("u"), PSTR("v"), PSTR("w"), PSTR("x"), PSTR("y"), PSTR("z"));
        }
        else
        {
            pantheios::log(pantheios::informational, PSTR("A"), PSTR("B"), PSTR("C"), PSTR("D"), PSTR("E"), PSTR("F"), PSTR("G"), PSTR("H"), PSTR("I"), PSTR("J"), PSTR("K"), PSTR("L"), PSTR("M"), PSTR("N"), PSTR("O"), PSTR("P"), PSTR("Q"), PSTR("R"), PSTR("S"), PSTR("T"), PSTR("U"), PSTR("V"), PSTR("W"), PSTR("X"), PSTR("Y"), PSTR("Z"));
        }
    }}



    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST_INTEGER_EQUAL(numEntries, results.size());
    { for(size_t i = 0; i < numEntries; ++i)
    {
        if(0 == (i % 2))
        {
            XTESTS_TEST_STRING_EQUAL(PSTR("abcdefghijklmnopqrstuvwxyz"), results[i].statement);
        }
        else
        {
            XTESTS_TEST_STRING_EQUAL(PSTR("ABCDEFGHIJKLMNOPQRSTUVWXYZ"), results[i].statement);
        }
    }}
}
static void test_10()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log(pantheios::informational, PSTR("a"), PSTR("b"), PSTR("c"), PSTR("d"), PSTR("e"), PSTR("f"), PSTR("g"), PSTR("h"), PSTR("i"), PSTR("j"), PSTR("k"), PSTR("l"), PSTR("m"), PSTR("n"), PSTR("o"), PSTR("p"), PSTR("q"), PSTR("r"), PSTR("s"), PSTR("t"), PSTR("u"), PSTR("v"), PSTR("w"), PSTR("x"), PSTR("y"), PSTR("z"));
    pantheios::log(pantheios::informational, PSTR("A"), PSTR("B"), PSTR("C"), PSTR("D"), PSTR("E"), PSTR("F"), PSTR("G"), PSTR("H"), PSTR("I"), PSTR("J"), PSTR("K"), PSTR("L"), PSTR("M"), PSTR("N"), PSTR("O"), PSTR("P"), PSTR("Q"), PSTR("R"), PSTR("S"), PSTR("T"), PSTR("U"), PSTR("V"), PSTR("W"), PSTR("X"), PSTR("Y"), PSTR("Z"));



    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST_INTEGER_EQUAL(2u, results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("abcdefghijklmnopqrstuvwxyz"), results[0].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("ABCDEFGHIJKLMNOPQRSTUVWXYZ"), results[1].statement);
}
static void test_1_01()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log_NOTICE(PSTR("{"), pantheios::boolean(false), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::boolean(true), PSTR("}"));


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST(!results.empty());
    XTESTS_TEST_INTEGER_EQUAL(2u, results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("{false}"), results[0].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{true}"), results[1].statement);
}
static void test_1_01()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log_NOTICE(pantheios::real(static_cast<float>(0)));
    pantheios::log_NOTICE(pantheios::real(static_cast<double>(0)));
    pantheios::log_NOTICE(pantheios::real(static_cast<long double>(0)));


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST(!results.empty());
    XTESTS_TEST(3 == results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("0"), results[0].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("0"), results[1].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("0"), results[2].statement);
}
static void test_1_02()
{
    const string_t hid = pan_get_hid_();

    { for(size_t i = 1; i != 1001; ++i)
    {
        pantheios::util::auto_buffer_selector<PAN_CHAR_T, 256>::type    hostname(i);

        const size_t len = pantheios::getHostName(hostname);

        // The function had enough space, so it will return the length
        // of the intended hostname ...
        XTESTS_TEST_INTEGER_EQUAL(hid.size(), len);
        // ... and will have written the hostname
        XTESTS_TEST_STRING_EQUAL(hid, hostname.data());
    }}
}
static void test_03()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log(pantheios::notice, PSTR("abc"));


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST_BOOLEAN_FALSE(results.empty());
    XTESTS_TEST_INTEGER_EQUAL(1u, results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("abc"), results[0].statement);
    XTESTS_TEST(pantheios::notice == results[0].severity);
}
static void test_1_03()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::pantheios_logprintf(pantheios::error(0x01234567), PSTR("abc"));


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST(!results.empty());
    XTESTS_TEST(1 == results.size());
    PANTHEIOS_SEV_LEVELS_EQUAL(PANTHEIOS_SEV_ERROR | (0x01234567 << 4), results[0].severity);
    XTESTS_TEST_STRING_EQUAL(PSTR("abc"), results[0].statement);
}
static void test_06()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log(pantheios::informational, PSTR("abc"), PSTR("def"), PSTR("ghi"), PSTR("jk"), PSTR("lm"), PSTR("no"), PSTR("pq"), PSTR("rs"), PSTR("tu"), PSTR("vw"), PSTR("xy"), PSTR("z"));



    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST_INTEGER_EQUAL(1u, results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("abcdefghijklmnopqrstuvwxyz"), results[0].statement);
    XTESTS_TEST(pantheios::informational == results[0].severity);
}
static void test_07()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log(pantheios::informational, PSTR("a"), PSTR("b"), PSTR("c"), PSTR("d"), PSTR("e"), PSTR("f"), PSTR("g"), PSTR("h"), PSTR("i"), PSTR("j"), PSTR("k"), PSTR("l"), PSTR("m"), PSTR("n"), PSTR("o"), PSTR("p"), PSTR("q"), PSTR("r"), PSTR("s"), PSTR("t"), PSTR("u"), PSTR("v"), PSTR("w"), PSTR("x"), PSTR("y"), PSTR("z"));



    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST_INTEGER_EQUAL(1u, results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("abcdefghijklmnopqrstuvwxyz"), results[0].statement);
    XTESTS_TEST(pantheios::informational == results[0].severity);
}
static void test_1_02()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log(pantheios::notice(1), PSTR("abc"));


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST(!results.empty());
    XTESTS_TEST(1 == results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("abc"), results[0].statement);
    PANTHEIOS_SEV_LEVELS_EQUAL(PANTHEIOS_SEV_NOTICE | (1 << 4), results[0].severity);
}
static void test_05()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log(pantheios::informational, PSTR("abc"), PSTR("def"), PSTR("ghi"));



    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST_INTEGER_EQUAL(1u, results.size());
    XTESTS_TEST_STRING_EQUAL(PSTR("abcdefghi"), results[0].statement);
    XTESTS_TEST(pantheios::informational == results[0].severity);
}
static void test_special_characters_1()
{
    // 1. Setup

    pantheios::be::test::reset();


    // 2. Create test data

    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(0), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(1), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(2), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(3), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(4), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(5), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(6), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(7), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(8), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(9), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(10), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(11), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(12), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(13), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(14), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(15), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(16), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(17), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(18), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(19), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(20), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(21), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(22), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(23), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(24), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(25), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(26), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(27), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(28), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(29), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(30), PSTR("}"));
    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(31), PSTR("}"));

    pantheios::log_NOTICE(PSTR("{"), pantheios::stream_character(127), PSTR("}"));


    // 3. Verification

    pantheios::be::test::Results  results = pantheios::be::test::results();

    XTESTS_TEST(!results.empty());
    XTESTS_TEST_INTEGER_EQUAL(33u, results.size());

    XTESTS_TEST_STRING_EQUAL(PSTR("{NUL}"), results[0].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{SOH}"), results[1].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{STX}"), results[2].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{ETX}"), results[3].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{EOT}"), results[4].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{ENQ}"), results[5].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{ACK}"), results[6].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{BEL}"), results[7].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{BS}"), results[8].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{HT}"), results[9].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{LF}"), results[10].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{VT}"), results[11].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{FF}"), results[12].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{CR}"), results[13].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{SO}"), results[14].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{SI}"), results[15].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{DLE}"), results[16].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{DC1}"), results[17].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{DC2}"), results[18].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{DC3}"), results[19].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{DC4}"), results[20].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{NAK}"), results[21].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{SYN}"), results[22].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{ETB}"), results[23].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{CAN}"), results[24].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{EM}"), results[25].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{SUB}"), results[26].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{ESC}"), results[27].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{FS}"), results[28].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{GS}"), results[29].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{RS}"), results[30].statement);
    XTESTS_TEST_STRING_EQUAL(PSTR("{US}"), results[31].statement);

    XTESTS_TEST_STRING_EQUAL(PSTR("{DEL}"), results[32].statement);
}
static int main_(int argc, char** argv)
{
    int retCode = EXIT_SUCCESS;
    int verbosity = 2;

    static PAN_CHAR_T const* strings[] =
    {
            PANTHEIOS_LITERAL_STRING("abc")
        ,   PANTHEIOS_LITERAL_STRING("ABC")
        ,   PANTHEIOS_LITERAL_STRING("abcdefghijklmnopqrstuvwxyz")
        ,   PANTHEIOS_LITERAL_STRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
        ,   PANTHEIOS_LITERAL_STRING("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
    };
    static int severities[] =
    {
            PANTHEIOS_SEV_DEBUG
        ,   PANTHEIOS_SEV_INFORMATIONAL
        ,   PANTHEIOS_SEV_NOTICE
        ,   PANTHEIOS_SEV_WARNING
        ,   PANTHEIOS_SEV_ERROR
        ,   PANTHEIOS_SEV_CRITICAL
        ,   PANTHEIOS_SEV_ALERT
        ,   PANTHEIOS_SEV_EMERGENCY
    };

    XTESTS_COMMANDLINE_PARSEVERBOSITY(argc, argv, &verbosity);

    if(XTESTS_START_RUNNER("test.unit.be.COMErrorObject", verbosity))
    {
        /* Case 1 - verifying be.COMErrorObject, with flags 0 */
        if(!XTESTS_CASE_BEGIN("case-1", "verifying be.COMErrorObject, with flags 0"))
        {
            retCode = EXIT_FAILURE;
        }
        else
        {
            pan_be_COMErrorObject_init_t    init;

            init.flags  =   0
//                      |   PANTHEIOS_BE_INIT_F_NO_PROCESS_ID
//                      |   PANTHEIOS_BE_INIT_F_NO_THREAD_ID
                        |   PANTHEIOS_BE_INIT_F_NO_SEVERITY
                        ;

            void*   token;
            int     res = pantheios_be_COMErrorObject_init(PANTHEIOS_FE_PROCESS_IDENTITY, PANTHEIOS_BEID_ALL, &init, NULL, &token);

            if(PANTHEIOS_INIT_RC_SUCCESS != res)
            {
                XTESTS_FAIL_WITH_QUALIFIER("failed to initialise bec.COMErrorObject", pantheios::getInitErrorString(res));
            }
            else
            {
                { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(severities); ++i)
                {
                    { for(size_t j = 0; j != STLSOFT_NUM_ELEMENTS(strings); ++j)
                    {
                        const int severity = severities[i];

                        pantheios_be_COMErrorObject_logEntry(NULL, token, severity, strings[j], stlsoft::c_str_len(strings[j]));

                        if( PANTHEIOS_SEV_DEBUG == severity ||
                            PANTHEIOS_SEV_INFORMATIONAL == severity)
                        {
                            ;   // be.COMErrorObject does not write out debug-level or informational-level messages
                        }
                        else
                        {
                            comstl::errorinfo_desc  ed;

                            XTESTS_TEST_STRING_EQUAL(strings[j], ed);
                        }
                    }}
                }}

                pantheios_be_COMErrorObject_uninit(token);
            }

            XTESTS_CASE_END("");
        }

        /* Case 2 - verifying be.COMErrorObject, with PANTHEIOS_BE_COMERROROBJECT_F_DONT_OVERWRITE_EXISTING flag */
        if(!XTESTS_CASE_BEGIN("case-2", "verifying be.COMErrorObject, with PANTHEIOS_BE_COMERROROBJECT_F_DONT_OVERWRITE_EXISTING flag"))
        {
            retCode = EXIT_FAILURE;
        }
        else
        {
            pan_be_COMErrorObject_init_t    init;

            init.flags  =   0
//                      |   PANTHEIOS_BE_INIT_F_NO_PROCESS_ID
//                      |   PANTHEIOS_BE_INIT_F_NO_THREAD_ID
                        |   PANTHEIOS_BE_INIT_F_NO_SEVERITY
                        |   PANTHEIOS_BE_COMERROROBJECT_F_DONT_OVERWRITE_EXISTING
                        ;

            void*   token;
            int     res = pantheios_be_COMErrorObject_init(PANTHEIOS_FE_PROCESS_IDENTITY, PANTHEIOS_BEID_ALL, &init, NULL, &token);

            if(PANTHEIOS_INIT_RC_SUCCESS != res)
            {
                XTESTS_FAIL_WITH_QUALIFIER("failed to initialise bec.COMErrorObject", pantheios::getInitErrorString(res));
            }
            else
            {
                { for(size_t i = 0; i != STLSOFT_NUM_ELEMENTS(severities); ++i)
                {
                    { for(size_t j = 0; j != STLSOFT_NUM_ELEMENTS(strings); ++j)
                    {
                        const int severity = severities[i];

                        comstl::set_error_info(L"the first string");

                        pantheios_be_COMErrorObject_logEntry(NULL, token, severity, strings[j], stlsoft::c_str_len(strings[j]));

                        if( PANTHEIOS_SEV_DEBUG == severity ||
                            PANTHEIOS_SEV_INFORMATIONAL == severity)
                        {
                            ;   // be.COMErrorObject does not write out debug-level or informational-level messages
                        }
                        else
                        {
                            comstl::errorinfo_desc  ed;

                            XTESTS_TEST_MULTIBYTE_STRING_EQUAL("the first string", ed);
                        }
                    }}
                }}

                pantheios_be_COMErrorObject_uninit(token);
            }

            XTESTS_CASE_END("");
        }

        XTESTS_PRINT_RESULTS();

        XTESTS_END_RUNNER_UPDATE_EXITCODE(&retCode);
    }

    return retCode;
}