Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt
package org.litesoft.delayed;

import junit.framework.*;

import org.litesoft.commonfoundation.base.*;
import org.litesoft.core.delayed.*;
import org.litesoft.core.util.*;
import org.litesoft.delayed.nonpublic.*;

public class ThreadBasedDelayedTimedRunnableRunnerTest extends TestCase
{
    public static TestSuite suite()
    {
        return new TestSuite( ThreadBasedDelayedTimedRunnableRunnerTest.class );
    }

    @Override
    protected void setUp()
            throws Exception
    {
        super.setUp();
        mMillisecTimeSource = MillisecTimeSource.INSTANCE;
        mAfter = null;
        mRan = false;
        mError = null;
        mTimer = new ThreadBasedDelayedTimedRunnableRunner();
        mTimer.initialize( new TimedRunnable()
                           {
                               @Override
                               public Again runOnce()
                               {
                                   mAfter = mMillisecTimeSource.now();
                                   mRan = true;
                                   return null;
                               }
                           }, new UnexpectedExceptionHandler()
        {
            @Override
            public void onUnexpectedException( String pFrom, Throwable pException )
            {
                mRan = true;
                mError = pException;
            }
        }
        );
    }

    private MillisecTimeSource mMillisecTimeSource;
    private volatile Long mAfter;
    private volatile boolean mRan;
    private volatile Throwable mError;
    private ThreadBasedDelayedTimedRunnableRunner mTimer;

    public void testTimer()
            throws Exception
    {
        long before = mMillisecTimeSource.now();
        long targetTime = before + 100;
        mTimer.scheduleFor( targetTime );
        // Give it upto a full second to run...
        for ( int i = 0; i < 100; i++ )
        {
            Thread.sleep( 10 );
            if ( mRan )
            {
                break;
            }
        }
        assertTrue( mRan );
        assertTrue( mAfter >= targetTime );
        assertNull( mError );
    }

    public void testCancelTimer()
            throws Exception
    {
        long before = mMillisecTimeSource.now();
        mTimer.scheduleFor( before + 1000 );
        Thread.sleep( 10 );
        mTimer.cancel();
        Thread.sleep( 10 );
        assertFalse( "!Canceled", mTimer.isScheduled() );
        assertFalse( "Timed thread was supposed to be canceled", mRan );
        assertNull( mError );
    }
}

Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/delayed/ThreadBasedDelayedTimedRunnableRunnerTest.java

Diff revisions: vs.
Revision Author Commited Message
942 Diff Diff GeorgeS picture GeorgeS Mon 02 Jun, 2014 23:41:46 +0000

Extracting commonfoundation

858 Diff Diff GeorgeS picture GeorgeS Sun 04 Nov, 2012 18:40:40 +0000
475 Diff Diff GeorgeS picture GeorgeS Sat 03 Sep, 2011 13:54:51 +0000
151 Diff Diff GeorgeS picture GeorgeS Thu 17 Mar, 2011 04:16:22 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

24 Diff Diff GeorgeS picture GeorgeS Wed 24 Feb, 2010 01:51:38 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000