示例#1
0
void SuiteTimerBasic::Test()
{
    MyTimer a;

    TUint i=0;
    for( ; i < 1000; i++ ) {
        a.FireIn(300);
        Thread::Current()->Sleep(Random(30, 10));
        Print(".");
    }

    a.Wait();
    TUint count0 = a.Count();

    Thread::Current()->Sleep(3000);

    TUint count1 = a.Count();

    TEST(count0 == count1);

    for( i=0; i < 100; i++ ) {
        a.FireIn(300);
        TUint j = Random(3500, 2500);
        TUint k=0;
        for( ; k < j; k++) {
            Print(".");
        }
    }

    a.Wait();

    Thread::Current()->Sleep(3000);

    MyTimer b;

    Print("\nWait for 5 seconds\n");
    a.FireIn(5000);
    a.Wait();
    Print("Wait finished\n");

    Print("Wait for 3 seconds then a further 2 seconds\n");
    a.FireIn(5000);
    b.FireIn(3000);
    b.Wait();
    Print("Wait finished 1\n");
    a.Wait();
    Print("Wait finished 2\n");

    for (TUint i = 1; i < 21; i++) {
        Print("Wait for 1 second then a further %d millisecond\n", i);
        a.FireIn(1000);
        b.FireIn(1000 + i);
        a.Wait();
        Print("Wait finished 1\n");
        b.Wait();
        Print("Wait finished 2\n");
    }

    Print("Wait for 0 seconds\n");
    a.FireIn(0);
    a.Wait();
    Print("Wait finished\n");

    Print("Cancel a timer\n");

    MyTimer c;

    a.FireIn(1000);
    c.FireIn(2000);
    b.FireIn(3000);
    a.Wait();
    Print("Wait finished 1\n");
    TEST(c.Count() == 0);
    c.Cancel();
    b.Wait();
    Print("Wait finished 2\n");
    TEST(c.Count() == 0);

    Print("Delete a timer\n");

    MyTimer* d = new MyTimer();

    a.FireIn(1000);
    d->FireIn(2000);
    b.FireIn(3000);
    a.Wait();
    Print("Wait finished 1\n");
    TEST(d->Count() == 0);
    delete d;
    b.Wait();
    Print("Wait finished 2\n");

    Print("Change a timer\n");

    MyTimer e;

    a.FireIn(1000);
    e.FireIn(2000);
    b.FireIn(3000);
    a.Wait();
    Print("Wait finished 1\n");
    TEST(e.Count() == 0);
    e.FireIn(3000);
    b.Wait();
    Print("Wait finished 2\n");
    TEST(e.Count() == 0);
    e.Wait();
    Print("Wait finished 3\n");
    TEST(e.Count() == 1);
}