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

    TUint i=0;
    for( ; i < 100; i++ ) {
        a.FireIn(300);
        Thread::Sleep(iEnv.Random(30, 10));
        Print(".");
    }
#if 0
    a.Wait();
    TUint count0 = a.Count();

    Thread::Sleep(3000);

    TUint count1 = a.Count();

    TEST(count0 == count1);

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

    a.Wait();

    Thread::Sleep(3000);

    MyTimer b(iEnv);
    
    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 j = 1; j < 21; j++) {
        Print("Wait for 1 second then a further %d millisecond\n", j);
        a.FireIn(1000);
        b.FireIn(1000 + j);
        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(iEnv);
    
    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(iEnv);
    
    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");
    
    // Replaced 'a' with a new timer 'a2', as this code
    // assumes the MyTimer sema count is 0. Not guaranteed though :(
    MyTimer a2(iEnv);
    MyTimer e(iEnv);
    
    a2.FireIn(1000);
    e.FireIn(2000);
    b.FireIn(3000);
    a2.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);
#endif
}
示例#2
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);
}