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("thread: ");
    PAN_CHAR_T        tid_[21 + STLSOFT_NUM_ELEMENTS(prefix)];
    PAN_CHAR_T const*   tid         =   stlsoft::integer_to_string(&tid_[0], STLSOFT_NUM_ELEMENTS(tid_), pan_get_tid_());
    PAN_CHAR_T const* stmt        =   tid - (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::threadId);
    pantheios::log_NOTICE(prefix, pantheios::threadId);


    // 3. Verification

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

    XTESTS_TEST(!results.empty());
    XTESTS_TEST(2 == results.size());
    XTESTS_TEST_STRING_EQUAL(tid, results[0].statement);
    XTESTS_TEST_STRING_EQUAL(stmt, results[1].statement);
}
static void test_1_18()
{
    // 1. Setup

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


    // 2. Create test data

    char const* argv[] =
    {
            "abc"
        ,   "def ghi"
        ,   "jkl"
    };

    pantheios::log_NOTICE(pantheios::args(STLSOFT_NUM_ELEMENTS(argv), argv, pantheios::args::alwaysQuoteArgs, "|"));


    // 3. Verification

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

    XTESTS_TEST(!results.empty());
    XTESTS_TEST(1 == results.size());
    XTESTS_TEST_MULTIBYTE_STRING_EQUAL("\"abc\"|\"def ghi\"|\"jkl\"", results[0].statement);
}
static void test_1_04()
{
    // 1. Setup

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


    // 2. Create test data

    char const* argv[] =
    {
            "abc"
        ,   "def"
        ,   "ghi"
        ,   "jkl"
    };

    pantheios::log_NOTICE(pantheios::args(STLSOFT_NUM_ELEMENTS(argv), argv));


    // 3. Verification

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

    XTESTS_TEST(!results.empty());
    XTESTS_TEST(1 == results.size());
    XTESTS_TEST_MULTIBYTE_STRING_EQUAL("abc, def, ghi, jkl", results[0].statement);
}
static void test_21()
{
    // 1. Setup

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


    // 2. Create test data

    std::string msgEl1(256, '~');
    std::string msgEl2(4096, '#');


    PANTHEIOS_TRACE_INFORMATIONAL(msgEl1, msgEl2); int LINE = __LINE__;



    // 3. Verification

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

    XTESTS_TEST(1 == results.size());
    XTESTS_TEST(pantheios::informational == results[0].severity);
    PANTHEIOS_TEST_STRING_OBJECTS_EQUAL(fileline_stmt_((msgEl1 + msgEl2).c_str(), LINE), results[0].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_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_2()
{
    std::string sink;

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

    XTESTS_TEST("abc" == sink);
}
static void test_01()
{
    // 1. Setup

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


    // 2. Create test data


    // 3. Verification

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

    XTESTS_TEST(results.empty());
    XTESTS_TEST(0 == results.size());
}
static void test_1_7()
{
    std::string sink;

    ff::fmt(sink, "{0} {1} {2} {3} {0} {4}", "the", "cat", "sat", "on", "mat");

    XTESTS_TEST("the cat sat on the mat" == sink);
}
static void test_1_5()
{
    std::string sink;

    ff::fmt(sink, "{2}{1}{0}", "c", "b", "a");

    XTESTS_TEST("abc" == sink);
}
static void test_1_8()
{
    std::string sink;

    ff::fmt(sink, "{0}{0}{0}{0}{0}{0}{0}{0}{0}{0} {1}{1}{1}{1}{1}{1}{1}{1}{1}{1}", "a", "b", "c");

    XTESTS_TEST("aaaaaaaaaa bbbbbbbbbb" == sink);
}
static void test_1_6()
{
    std::string sink;

    ff::fmt(sink, "{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}{16}{17}{18}{19}{20}{21}{22}{23}{24}{25}{26}{27}{28}{29}{30}{31}", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5");

    XTESTS_TEST("abcdefghijklmnopqrstuvwxyz012345" == sink);
}
static void test_11()
{
    // 1. Setup

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


    // 2. Create test data
    const size_t    numEntries  =   1000;
    int             LINE1       =   -1;
    int             LINE2       =   -1;

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



    // 3. Verification

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

    XTESTS_TEST(numEntries == results.size());
    { for(size_t i = 0; i < numEntries; ++i)
    {
        XTESTS_TEST(pantheios::informational == results[i].severity);
        if(0 == (i % 2))
        {
            PANTHEIOS_TEST_STRING_OBJECTS_EQUAL(fileline_stmt_("abcdefghijklmnopqrstuvwxyz", LINE1), results[i].statement);
        }
        else
        {
            PANTHEIOS_TEST_STRING_OBJECTS_EQUAL(fileline_stmt_("ABCDEFGHIJKLMNOPQRSTUVWXYZ", LINE2), results[i].statement);
        }
    }}
}
static void test_1_11()
{
    // 1. Setup

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


    // 2. Create test data

    pantheios::log_NOTICE(pantheios::args(0, static_cast<char**>(NULL), pantheios::args::quoteArgsWithSpaces, "|"));


    // 3. Verification

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

    XTESTS_TEST(!results.empty());
    XTESTS_TEST(1 == results.size());
    XTESTS_TEST_MULTIBYTE_STRING_EQUAL("", results[0].statement);
}
static void test_03()
{
    // 1. Setup

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


    // 2. Create test data

    PANTHEIOS_TRACE_NOTICE("abc");  int LINE = __LINE__;


    // 3. Verification

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

    XTESTS_TEST(!results.empty());
    XTESTS_TEST(1 == results.size());
    XTESTS_TEST(pantheios::notice == results[0].severity);
    PANTHEIOS_TEST_STRING_OBJECTS_EQUAL(fileline_stmt_("abc", LINE), results[0].statement);
}
static void test_04()
{
    // 1. Setup

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


    // 2. Create test data

    PANTHEIOS_TRACE_INFORMATIONAL("abc", "def"); int LINE = __LINE__;



    // 3. Verification

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

    XTESTS_TEST(1 == results.size());
    XTESTS_TEST(pantheios::informational == results[0].severity);
    PANTHEIOS_TEST_STRING_OBJECTS_EQUAL(fileline_stmt_("abcdef", LINE), results[0].statement);
}
static void test_06()
{
    // 1. Setup

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


    // 2. Create test data

    PANTHEIOS_TRACE_INFORMATIONAL("abc", "def", "ghi", "jk", "lm", "no", "pq", "rs", "tu", "vw", "xy", "z"); int LINE = __LINE__;



    // 3. Verification

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

    XTESTS_TEST(1 == results.size());
    XTESTS_TEST(pantheios::informational == results[0].severity);
    PANTHEIOS_TEST_STRING_OBJECTS_EQUAL(fileline_stmt_("abcdefghijklmnopqrstuvwxyz", LINE), results[0].statement);
}
static void test_07()
{
    // 1. Setup

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


    // 2. Create test data

    PANTHEIOS_TRACE_INFORMATIONAL("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"); int LINE = __LINE__;



    // 3. Verification

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

    XTESTS_TEST(1 == results.size());
    XTESTS_TEST(pantheios::informational == results[0].severity);
    PANTHEIOS_TEST_STRING_OBJECTS_EQUAL(fileline_stmt_("abcdefghijklmnopqrstuvwxyz", LINE), results[0].statement);
}
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_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_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_2_03()
{
    // 1. Setup

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


    // 2. Create test data

    pantheios::log_NOTICE("[", pantheios::w2m(std::wstring(L"abc")), "]");


    // 3. Verification

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

    XTESTS_TEST(!results.empty());
    XTESTS_TEST_INTEGER_EQUAL(1u, results.size());
    XTESTS_TEST_MULTIBYTE_STRING_EQUAL("[abc]", results[0].statement);
}
static void test_3_09()
{
    // 1. Setup

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


    // 2. Create test data

    pantheios::log_NOTICE(pantheios::w2m(stlsoft::simple_wstring(L"")));


    // 3. Verification

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

    XTESTS_TEST(!results.empty());
    XTESTS_TEST_INTEGER_EQUAL(1u, results.size());
    XTESTS_TEST_MULTIBYTE_STRING_EQUAL("", results[0].statement);
}
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_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_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_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);
}