aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/cgeo/geocaching/utils/MemorySubjectTest.java')
-rw-r--r--tests/src/cgeo/geocaching/utils/MemorySubjectTest.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java b/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java
new file mode 100644
index 0000000..30e4f60
--- /dev/null
+++ b/tests/src/cgeo/geocaching/utils/MemorySubjectTest.java
@@ -0,0 +1,78 @@
+package cgeo.geocaching.utils;
+
+import android.test.AndroidTestCase;
+
+public class MemorySubjectTest extends AndroidTestCase {
+
+ private static class Observer implements IObserver<Integer> {
+ public int times = 0;
+ public Integer value;
+
+ @Override
+ public void update(final Integer data) {
+ value = data;
+ times++;
+ }
+ }
+
+ private Observer observer;
+ private MemorySubject<Integer> memorySubject;
+
+ @Override
+ public void setUp() {
+ observer = new Observer();
+ memorySubject = new MemorySubject<Integer>();
+ }
+
+ public void testInitial() {
+ assertNull(observer.value);
+ assertEquals(0, observer.times);
+ assertNull(memorySubject.getMemory());
+ }
+
+ public void testMemory() {
+ memorySubject.addObserver(observer);
+ memorySubject.notifyObservers(10);
+ assertEquals(Integer.valueOf(10), observer.value);
+ assertEquals(1, observer.times);
+ assertEquals(Integer.valueOf(10), memorySubject.getMemory());
+ memorySubject.notifyObservers(20);
+ assertEquals(Integer.valueOf(20), observer.value);
+ assertEquals(2, observer.times);
+ assertEquals(Integer.valueOf(20), memorySubject.getMemory());
+ }
+
+ public void testAttach() {
+ memorySubject.notifyObservers(10);
+ assertNull(observer.value);
+ assertEquals(0, observer.times);
+ memorySubject.addObserver(observer);
+ assertEquals(Integer.valueOf(10), observer.value);
+ assertEquals(1, observer.times);
+ memorySubject.notifyObservers(20);
+ assertEquals(Integer.valueOf(20), observer.value);
+ assertEquals(2, observer.times);
+ }
+
+ public void testDetach() {
+ memorySubject.addObserver(observer);
+ memorySubject.notifyObservers(10);
+ assertEquals(Integer.valueOf(10), observer.value);
+ assertEquals(1, observer.times);
+ assertEquals(Integer.valueOf(10), memorySubject.getMemory());
+ memorySubject.deleteObserver(observer);
+ memorySubject.notifyObservers(20);
+ assertEquals(Integer.valueOf(10), observer.value);
+ assertEquals(1, observer.times);
+ assertEquals(Integer.valueOf(20), memorySubject.getMemory());
+ }
+
+ public void testMultiple() {
+ final Observer otherObserver = new Observer();
+ memorySubject.addObserver(otherObserver);
+ testDetach();
+ assertEquals(Integer.valueOf(20), otherObserver.value);
+ assertEquals(2, otherObserver.times);
+ }
+
+}