#include "CString1.h"
#include "CString2.h"

static void test1();
static void test2();

int main_exo4()
{
    // test1();
    test2();
    return 0;
}

void test1()
{
    // Surcharges des constructeurs
    CString1 s1("azerty");
    CString1 s2("q");
    CString1 s3;
    CString1 s4(s1);
    cout << "s1 = " << s1 << endl ;
    cout << "s2 = " << s2 << endl ;
    cout << "s3 = " << s3 << endl ;
    cout << "s4 = " << s4 << endl ;
    s3 = s1;
    cout << "s1 = " << s1 << endl ;
    cout << "s3 = " << s3 << endl ;

    // concaténation de s1 et s2
    // s1 et s2 invariantes
    s3 = s1.plus(s2);
    cout << "s1 = " << s1 << endl ;
    cout << "s2 = " << s2 << endl ;
    cout << "s3 = " << s3 << endl ;
    s3 = s1.plus("wertyuiop gfgfdgfgfhfgdsgffdgfsdhfhghghfsdsqdfq gdffsffdsfdsf");
    cout << "s1 = " << s1 << endl ;
    cout << "s3 = " << s3 << endl ;

    // si s1 > s2 au sens lexicographique
    if (s1.plusGrandQue(s2))
        cout << s1 << " > " << s2 << endl;
    else
        cout << s1 << " <= " << s2 << endl;
    // si s1 <= s2 au sens lexicographique
    if (s2.infOuEgale(s3))
        cout << s2 << " <= " << s3 << endl;
    else
        cout << s2 << " > " << s3 << endl;

    // concaténation de s1 et "wertyuiop"
    // s1 et "w" invariantes
    s3 = s1.plus("wertyuiop") ;
    cout << "s1 = " << s1 << endl ;
    cout << "s3 = " << s3 << endl ;
    // si s1 > s2 au sens lexicographique
    if (s1.plusGrandQue(s2) )
        cout << s1 << " > " << s2 << endl;
    else
        cout << s1 << " <= " << s2 << endl;
    // si s1 <= s2 au sens lexicographique
    if (s2.infOuEgale(s3) )
        cout << s2 << " <= " << s3 << endl;
    else
        cout << s2 << " > " << s3 << endl;
}


void test2()
{
    // Surcharges des constructeurs
    CString2 s1("azerty");
    CString2 s2("wertyuiop");
    CString2 s3;
    CString2 s4(s1);
    cout << "s1 = " << s1 << endl ;
    cout << "s2 = " << s2 << endl ;
    cout << "s3 = " << s3 << endl ;
    cout << "s4 = " << s4 << endl ;
    s3 = s1;
    cout << "s1 = " << s1 << endl ;
    cout << "s3 = " << s3 << endl ;

    // concaténation de s1 et s2
    // s1 et s2 invariantes
    s3 = s1 + s2;
    cout << "s1 = " << s1 << endl ;
    cout << "s2 = " << s2 << endl ;
    cout << "s3 = " << s3 << endl ;

    s3 = s1 + "wertyuiopjjjj";
    cout << "s1 = " << s1 << endl ;
    cout << "s3 = " << s3 << endl ;

    // si s1 > s2 au sens lexicographique
    if (s1 > s2)
        cout << s1 << " > " << s2 << endl;
    else
        cout << s1 << " <= " << s2 << endl;
    // si s1 <= s2 au sens lexicographique
    if (s2 <= s4)
        cout << s2 << " <= " << s4 << endl;
    else
        cout << s2 << " > " << s4 << endl;
}
