// ========================================================= //
//                                                           //
//   File      : tiny.cxx                                    //
//   Purpose   : misc tiny unittests                         //
//                                                           //
//   Coded by Ralf Westram (coder@reallysoft.de) in Jan 22   //
//   http://www.arb-home.de/                                 //
//                                                           //
// ========================================================= //

// --------------------------------------------------------------------------------

#ifdef UNIT_TESTS
#ifndef TEST_UNIT_H
#include <test_unit.h>
#endif

#include <stringize.h>

#undef  UNDEFINED
#define DEFINED value

void TEST_stringize() {
    // for undefined ids, stringize and stringize_pscan produce the same text:
    TEST_EXPECT_EQUAL(stringize      (UNDEFINED), "UNDEFINED");
    TEST_EXPECT_EQUAL(stringize_pscan(UNDEFINED), "UNDEFINED");

    // for defined ids, stringize_pscan inserts the defined value:
    TEST_EXPECT_EQUAL(stringize      (DEFINED),   "DEFINED");
    TEST_EXPECT_EQUAL(stringize_pscan(DEFINED),   "value");

    const char *value = "variable content";

    TEST_EXPECT_EQUAL(                concatenate(DE, FINED),  "variable content");
    TEST_EXPECT_EQUAL(stringize      (concatenate(DE, FINED)), "concatenate(DE, FINED)");
    TEST_EXPECT_EQUAL(stringize_pscan(concatenate(DE, FINED)), "value");

    // TEST_EXPECT_EQUAL(concatenate(UNDE, FINED), "variable content"); // error: 'UNDEFINED' was not declared in this scope
    TEST_EXPECT_EQUAL(stringize      (concatenate(UNDE, FINED)), "concatenate(UNDE, FINED)");
    TEST_EXPECT_EQUAL(stringize_pscan(concatenate(UNDE, FINED)), "UNDEFINED");

    const char *UNDEFINEDvalue = "value of UNDEFINEDvalue";
    TEST_EXPECT_EQUAL(stringize_pscan   (concatenate(UNDEFINED,        DEFINED)), "UNDEFINEDDEFINED");
    TEST_EXPECT_EQUAL(stringize_pscan   (concatenate_pscans(UNDEFINED, DEFINED)), "UNDEFINEDvalue");
    TEST_EXPECT_EQUAL(                   concatenate_pscans(UNDEFINED, DEFINED),  "value of UNDEFINEDvalue");
}

#endif // UNIT_TESTS

// --------------------------------------------------------------------------------
