summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'test/com/isode/stroke/eventloop/SimpleEventLoopTest.java')
-rw-r--r--test/com/isode/stroke/eventloop/SimpleEventLoopTest.java88
1 files changed, 88 insertions, 0 deletions
diff --git a/test/com/isode/stroke/eventloop/SimpleEventLoopTest.java b/test/com/isode/stroke/eventloop/SimpleEventLoopTest.java
new file mode 100644
index 0000000..497c994
--- /dev/null
+++ b/test/com/isode/stroke/eventloop/SimpleEventLoopTest.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2010 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+/*
+ * Copyright (c) 2015 Tarun Gupta.
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+package com.isode.stroke.eventloop;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+import org.junit.Before;
+import com.isode.stroke.eventloop.SimpleEventLoop;
+
+public class SimpleEventLoopTest {
+
+ private void runIncrementingThread(SimpleEventLoop loop) {
+ for (int i = 0; i < 10; ++i) {
+ try {
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+
+ }
+ loop.postEvent(new Event.Callback() {
+ @Override
+ public void run() {
+ incrementCounter();
+ }
+ });
+ }
+ loop.stop();
+ }
+
+ private void incrementCounter() {
+ counter_++;
+ }
+
+ private void incrementCounterAndStop(SimpleEventLoop loop) {
+ counter_++;
+ loop.stop();
+ }
+
+ private int counter_;
+
+ @Before
+ public void setUp() {
+ counter_ = 0;
+ }
+
+ @Test
+ // FIXME: Temporarily disabling run, because it generates a "vector
+ // iterator not incrementable" on XP
+ public void testRun() {
+ final SimpleEventLoop testling = new SimpleEventLoop();
+ Thread d = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ runIncrementingThread(testling);
+ }
+ });
+ d.start();
+ testling.run();
+
+ assertEquals(10, counter_);
+ }
+
+ @Test
+ public void testPostFromMainThread() {
+ final SimpleEventLoop testling = new SimpleEventLoop();
+ testling.postEvent(new Event.Callback() {
+ @Override
+ public void run() {
+ incrementCounterAndStop(testling);
+ }
+ });
+ testling.run();
+
+ assertEquals(1, counter_);
+ }
+} \ No newline at end of file