001 package fr.isae.observer;
002
003 import org.junit.*;
004 import static org.junit.Assert.*;
005
006 /**
007 * Unit Test for class Observable.
008 *
009 *
010 * Created: Tue Oct 20 13:39:51 2014
011 *
012 * @author <a href="mailto:garion@isae.fr">Christophe Garion</a>
013 * @version 1.0
014 */
015 public class ObservableTest {
016
017 private static class DummyObservable extends Observable {
018
019 }
020
021 private static class DummyObserver extends Observateur {
022
023 private boolean flag;
024
025 DummyObserver() {
026 this.flag = false;
027 }
028
029 public void miseAJour() {
030 this.flag = true;
031 }
032
033 boolean isFlagSet() {
034 return this.flag;
035 }
036 }
037
038 private DummyObservable observable1;
039 private DummyObservable observable2;
040 private DummyObserver observer1;
041 private DummyObserver observer2;
042 private DummyObserver observer3;
043 private DummyObserver observer4;
044 private DummyObserver observer5;
045
046 /**
047 * Setup for the tests. There are 2 observable (observable1 and
048 * observable2) and 5 observer (observer1 to observer5). observer1 to
049 * observer3 observe observable1 and observer3 to observer5 observe
050 * observable2.
051 */
052 @Before public void setUp() {
053 this.observable1 = new DummyObservable();
054 this.observable2 = new DummyObservable();
055
056 this.observer1 = new DummyObserver();
057 this.observer2 = new DummyObserver();
058 this.observer3 = new DummyObserver();
059 this.observer4 = new DummyObserver();
060 this.observer5 = new DummyObserver();
061
062 this.observable1.inscrire(this.observer1);
063 this.observable1.inscrire(this.observer2);
064 this.observable1.inscrire(this.observer3);
065
066 this.observable2.inscrire(this.observer3);
067 this.observable2.inscrire(this.observer4);
068 this.observable2.inscrire(this.observer5);
069 }
070
071 /**
072 * Test method for avertir for observable1.
073 */
074 @Test public void testAvertirObservable1() {
075 this.initialCheck();
076
077 this.observable1.avertir();
078
079 DummyObserver mustBeTrue[] = { this.observer1,
080 this.observer2,
081 this.observer3 };
082
083 DummyObserver mustBeFalse[] = { this.observer4,
084 this.observer5 };
085
086 checkFlags(mustBeTrue, mustBeFalse);
087 }
088
089 /**
090 * Test method for avertir for observable2.
091 */
092 @Test public void testAvertirObservable2() {
093 this.initialCheck();
094
095 this.observable2.avertir();
096
097 DummyObserver mustBeTrue[] = { this.observer3,
098 this.observer4,
099 this.observer5 };
100
101 DummyObserver mustBeFalse[] = { this.observer1,
102 this.observer2 };
103
104 checkFlags(mustBeTrue, mustBeFalse);
105 }
106
107 /**
108 * Test method for observable1 when removing observer2
109 * as observer.
110 */
111 @Test public void testAnnulerObservable1() {
112 this.initialCheck();
113
114 this.observable1.annuler(this.observer2);
115 this.observable1.avertir();
116
117 DummyObserver mustBeTrue[] = { this.observer1,
118 this.observer3 };
119
120 DummyObserver mustBeFalse[] = { this.observer2,
121 this.observer4,
122 this.observer5 };
123
124 checkFlags(mustBeTrue, mustBeFalse);
125 }
126
127 private void initialCheck() {
128 assertFalse(this.observer1.isFlagSet());
129 assertFalse(this.observer2.isFlagSet());
130 assertFalse(this.observer3.isFlagSet());
131 assertFalse(this.observer4.isFlagSet());
132 assertFalse(this.observer5.isFlagSet());
133 }
134
135 private void checkFlags(DummyObserver mustBeTrue[],
136 DummyObserver mustBeFalse[]) {
137 for (DummyObserver obs : mustBeTrue) {
138 assertTrue(obs.isFlagSet());
139 }
140
141 for (DummyObserver obs : mustBeFalse) {
142 assertFalse(obs.isFlagSet());
143 }
144 }
145 }
|