#include "flist.h"
#include "fstring.h"

int main(int argc, char *args[])
{
    printf("\nVECTOR TEST\n");
    FVector<int> v;
    for(int i=0; i<100; i++) v.Append(50-i);
    try {
        printf("before sort:\n");
        for(int i=0; i<v.Cnt(); i++) printf("%02i ", v[i]);
        v.Sort();
        printf("\nafter sort:\n");
        for(int i=0; i<v.Cnt(); i++) printf("%02i ", v[i]);
        printf("\n");
    }
    catch(std::exception &e) {
        printf("EXCEPTION: %s\n", e.what());
    }

    printf("\nSTRING TEST\n");
    FString s1 = "ahoj";
    FString s2 = "babi";
    FString fs = s1 + " " + s2;
    printf("FString test: '%s'\n", fs.Str());
    fs = FString::printf("%i 0x%x stribrnych strikacek\n", 333, 333);
    printf("FString test: '%s'\n", fs.Str());
    printf("FString test: toInt(123): '%s'\n", FString(123).Str());
    int n = 500;
    fs = FString(n) + " stringu: ";
    for(int i=0; i<n; i++) {
        fs += FString(i) + ", ";
    }
    fs = fs.Slice(0, -2);
    printf("FString test: '%s'\n", fs.Str());

    printf("\nSTRING TEST - concatenation\n");
    fs = "";
    for(int i=0; i<50; i++) {
        fs += FString(i) + ' ';
        printf("%s\n", fs.Str());
    }
    
    printf("------------------------------------------------------------------\n");
    printf("FStringList\n");
    FStringList sl;
    printf("fromString(\"a,b,c,d,e,f\", ',')\n");
    sl.fromString("a,b,c,d,e,f", ',');
    try {
        for(int i=0; i<sl.Cnt(); i++) printf("FString list test: sl[%02i] == '%s'\n", i, sl[i].Str());
        for(int i=0; i<sl.Cnt(); i++) printf("FString list test: sl[-%02i] == '%s'\n", i, sl[-i].Str());
        sl[20];
    }
    catch(std::exception &e) {
        printf("EXCEPTION: %s\n", e.what());
    }
    printf("fromString(\"ahoj, \"quoted\", \t\", ',')\n");
    sl.fromString("ahoj, \"quoted\", \t", ',');
    for(int i=0; i<sl.Cnt(); i++) printf("FString list test: sl[%02i] == '%s'\n", i, sl[i].Str());
    printf("sl.strip('\"')\n");
    sl.strip('"');
    for(int i=0; i<sl.Cnt(); i++) printf("FString list test: sl[%02i] == '%s'\n", i, sl[i].Str());
    
    return 0;
}
