source code formatting.
[utils] / support / general / src / test / java / org / wamblee / observer / ObservableTest.java
index e26571a40d57708975e963b2640fed05373abfd3..5a9d2ecb76f4b8b29591aedbdc4da5f97aa376ec 100644 (file)
 /*
  * Copyright 2005 the original author or authors.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.wamblee.observer;
 
-import static org.mockito.Mockito.*; 
+import junit.framework.TestCase;
+
+import org.mockito.InOrder;
+import static org.mockito.Mockito.*;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import org.mockito.InOrder;
-
-import junit.framework.TestCase;
 
 /**
  * Test of the observer pattern implementation.
- * 
+ *
  * @author Erik Brakkee
  */
 public class ObservableTest extends TestCase {
+    private static final int SUBSCRIBER_COUNT = 100;
+    private static final String UPDATE = "send";
+    private Integer observed;
+    private Observable<Integer, String> observable;
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see junit.framework.TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        observed = new Integer(1);
+        observable = new Observable<Integer, String>(observed,
+                new DefaultObserverNotifier());
+    }
+
+    /**
+     * Tests subscription and notification of one subscriber.
+     */
+    public void testOneObserver() {
+        final Observer mockObserver = mock(Observer.class);
+        InOrder order = inOrder(mockObserver);
+
+        long subscription = observable.subscribe(mockObserver);
+
+        assertEquals(1, observable.getObserverCount());
+
+        final String message = "hallo";
+        observable.send(message);
+
+        order.verify(mockObserver).send(observed, message);
+        verifyNoMoreInteractions(mockObserver);
+
+        observable.unsubscribe(subscription);
+        assertEquals(0, observable.getObserverCount());
+
+        observable.send(message);
+        verifyNoMoreInteractions(mockObserver);
+    }
+
+    /**
+     * Subscribes many susbcribers and sends notifications to subscribers.
+     * Verifies that unique subscription number are returned. Also verifies that
+     * the correct subscribers are notfied.
+     */
+    public void testManySubscribers() {
+        final int nsubscribers = SUBSCRIBER_COUNT;
+        final Observer[] mocks = new Observer[nsubscribers];
+        final InOrder[] order = new InOrder[nsubscribers];
+
+        List<Long> subscriptions = new ArrayList<Long>();
+
+        for (int i = 0; i < nsubscribers; i++) {
+            mocks[i] = mock(Observer.class);
+            order[i] = inOrder(mocks[i]);
+
+            long subscription = observable.subscribe(mocks[i]);
+            assertTrue(subscriptions.add(subscription));
+        }
+
+        assertEquals(nsubscribers, observable.getObserverCount());
+
+        final String message = "hallo";
+
+        observable.send(message);
+
+        for (int i = 0; i < nsubscribers; i++) {
+            order[i].verify(mocks[i]).send(observed, message);
+        }
+
+        for (int i = nsubscribers / 2; i < nsubscribers; i++) {
+            observable.unsubscribe(subscriptions.get(i));
+        }
+
+        assertEquals(nsubscribers - (nsubscribers - (nsubscribers / 2)),
+            observable.getObserverCount());
+
+        final String message2 = "blabla";
+
+        observable.send(message2);
+
+        for (int i = 0; i < (nsubscribers / 2); i++) {
+            order[i].verify(mocks[i]).send(observed, message2);
+        }
+
+        for (int i = nsubscribers / 2; i < nsubscribers; i++) {
+            verifyNoMoreInteractions(mocks[i]);
+        }
+    }
+
+    /**
+     * Subscribes and then unsubscribes with a wrong id. Verifies that
+     * IllegalArgumentException is thrown.
+     *
+     */
+    public void testUnsubscribeWithWrongSubscription() {
+        Observer<Integer, String> observer = mock(Observer.class);
+
+        long subscription = observable.subscribe(observer);
+
+        assertEquals(1, observable.getObserverCount());
+
+        try {
+            observable.unsubscribe(subscription + 1);
+        } catch (IllegalArgumentException e) {
+            return; // ok
+        }
 
-       private static final int SUBSCRIBER_COUNT = 100;
-
-       private static final String UPDATE = "send";
-
-       private Integer observed;
-       private Observable<Integer, String> observable;
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see junit.framework.TestCase#setUp()
-        */
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-               observed = new Integer(1);
-               observable = new Observable<Integer, String>(observed,
-                               new DefaultObserverNotifier());
-       }
-
-       /**
-        * Tests subscription and notification of one subscriber.
-        */
-       public void testOneObserver() {
-               final Observer mockObserver = mock(Observer.class);
-               InOrder order = inOrder(mockObserver);
-               
-               long subscription = observable.subscribe(mockObserver);
-
-               assertEquals(1, observable.getObserverCount());
-
-               final String message = "hallo";
-               observable.send(message);
-               
-               order.verify(mockObserver).send(observed, message);
-               verifyNoMoreInteractions(mockObserver);
-               
-               observable.unsubscribe(subscription);
-               assertEquals(0, observable.getObserverCount());
-
-               observable.send(message);
-               verifyNoMoreInteractions(mockObserver);
-       }
-
-       /**
-        * Subscribes many susbcribers and sends notifications to subscribers.
-        * Verifies that unique subscription number are returned. Also verifies that
-        * the correct subscribers are notfied.
-        */
-       public void testManySubscribers() {
-               final int nsubscribers = SUBSCRIBER_COUNT;
-               final Observer[] mocks = new Observer[nsubscribers];
-               final InOrder[] order = new InOrder[nsubscribers];
-
-               List<Long> subscriptions = new ArrayList<Long>();
-               for (int i = 0; i < nsubscribers; i++) {
-                       mocks[i] = mock(Observer.class);
-                       order[i] = inOrder(mocks[i]);
-                       long subscription = observable.subscribe(mocks[i]);
-                       assertTrue(subscriptions.add(subscription));
-               }
-
-               assertEquals(nsubscribers, observable.getObserverCount());
-
-               final String message = "hallo";
-
-               observable.send(message);
-               for (int i = 0; i < nsubscribers; i++) {
-                       order[i].verify(mocks[i]).send(observed, message);
-               }
-
-               for (int i = nsubscribers / 2; i < nsubscribers; i++) {
-                       observable.unsubscribe(subscriptions.get(i));
-               }
-               assertEquals(nsubscribers - (nsubscribers - nsubscribers / 2),
-                               observable.getObserverCount());
-
-               final String message2 = "blabla";
-
-               observable.send(message2);
-               for (int i = 0; i < nsubscribers / 2; i++) {
-                       order[i].verify(mocks[i]).send(observed, message2);
-               }               
-               for (int i = nsubscribers/2; i < nsubscribers; i++) {
-                       verifyNoMoreInteractions(mocks[i]);
-               }               
-               
-       }
-
-       /**
-        * Subscribes and then unsubscribes with a wrong id. Verifies that
-        * IllegalArgumentException is thrown.
-        * 
-        */
-       public void testUnsubscribeWithWrongSubscription() {
-               Observer<Integer, String> observer = mock(Observer.class);
-       
-               long subscription = observable.subscribe(observer);
-
-               assertEquals(1, observable.getObserverCount());
-
-               try {
-                       observable.unsubscribe(subscription + 1);
-               } catch (IllegalArgumentException e) {
-                       return; // ok
-               }
-               fail();
-       }
+        fail();
+    }
 }