1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/*
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  this work for additional information regarding copyright ownership.
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  the License.  You may obtain a copy of the License at
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  See the License for the specific language governing permissions and
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  limitations under the License.
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.api.java.util;
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew;
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets;
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel;
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass;
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Observable;
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Observer;
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Vector;
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Observable.class)
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class ObservableTest extends junit.framework.TestCase {
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static class TestObserver implements Observer {
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public Vector objv = new Vector();
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int updateCount = 0;
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public void update(Observable observed, Object arg) {
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            ++updateCount;
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            objv.add(arg);
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public int updateCount() {
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return updateCount;
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static class DeleteTestObserver implements Observer {
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        int updateCount = 0;
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        boolean deleteAll = false;
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public DeleteTestObserver(boolean all) {
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            deleteAll = all;
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public void update(Observable observed, Object arg) {
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            ++updateCount;
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (deleteAll)
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                observed.deleteObservers();
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            else
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                observed.deleteObserver(this);
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public int updateCount() {
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return updateCount;
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    static class TestObservable extends Observable {
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public void doChange() {
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            setChanged();
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public void clearChange() {
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            clearChanged();
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    Observer observer;
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    TestObservable observable;
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Observable#Observable()
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Observable",
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_Constructor() {
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method java.util.Observable()
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            Observable ov = new Observable();
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertTrue("Wrong initial values.", !ov.hasChanged());
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            assertEquals("Wrong initial values.", 0, ov.countObservers());
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Exception e) {
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Exception during test : " + e.getMessage());
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Observable#addObserver(java.util.Observer)
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "addObserver",
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.Observer.class}
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_addObserverLjava_util_Observer() {
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.util.Observable.addObserver(java.util.Observer)
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        TestObserver test = new TestObserver();
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(test);
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Failed to add observer", 1, observable.countObservers());
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(test);
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Duplicate observer", 1, observable.countObservers());
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Observable o = new Observable();
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            o.addObserver(null);
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Expected adding a null observer to throw a NPE.");
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ex) {
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected;
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (Throwable ex) {
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Did not expect adding a new observer to throw a "
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    + ex.getClass().getName());
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Observable#countObservers()
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "countObservers",
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_countObservers() {
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method int java.util.Observable.countObservers()
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("New observable had > 0 observers", 0, observable
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .countObservers());
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(new TestObserver());
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Observable with observer returned other than 1", 1, observable
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .countObservers());
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Observable#deleteObserver(java.util.Observer)
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "deleteObserver",
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.Observer.class}
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_deleteObserverLjava_util_Observer() {
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.util.Observable.deleteObserver(java.util.Observer)
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(observer = new TestObserver());
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.deleteObserver(observer);
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Failed to delete observer",
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                0, observable.countObservers());
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.deleteObserver(observer);
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.deleteObserver(null);
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Observable#deleteObservers()
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "deleteObservers",
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_deleteObservers() {
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void java.util.Observable.deleteObservers()
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(new TestObserver());
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(new TestObserver());
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(new TestObserver());
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(new TestObserver());
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(new TestObserver());
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(new TestObserver());
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(new TestObserver());
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(new TestObserver());
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.deleteObservers();
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Failed to delete observers",
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                0, observable.countObservers());
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Observable#hasChanged()
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargets({
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.COMPLETE,
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "",
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "hasChanged",
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {}
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.COMPLETE,
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "",
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setChanged",
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {}
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        )
213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    })
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hasChanged() {
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(observable.hasChanged());
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(observer = new TestObserver());
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.doChange();
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(observable.hasChanged());
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargets({
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.COMPLETE,
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "",
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "setChanged",
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {}
227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ),
228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @TestTargetNew(
229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            level = TestLevel.COMPLETE,
230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            notes = "",
231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            method = "clearChanged",
232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            args = {}
233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        )
234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    })
235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_clearChanged() {
236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(observable.hasChanged());
237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(observer = new TestObserver());
238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.doChange();
239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(observable.hasChanged());
240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.clearChange();
241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(observable.hasChanged());
242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Observable#notifyObservers()
246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "notifyObservers",
251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_notifyObservers() {
254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void java.util.Observable.notifyObservers()
255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(observer = new TestObserver());
256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.notifyObservers();
257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Notified when unchnaged", 0, ((TestObserver) observer)
258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .updateCount());
259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ((TestObservable) observable).doChange();
260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.notifyObservers();
261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Failed to notify",
262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                1, ((TestObserver) observer).updateCount());
263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        DeleteTestObserver observer1, observer2;
265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.deleteObservers();
266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(observer1 = new DeleteTestObserver(false));
267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(observer2 = new DeleteTestObserver(false));
268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.doChange();
269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.notifyObservers();
270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Failed to notify all", observer1.updateCount() == 1
271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                && observer2.updateCount() == 1);
272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Failed to delete all", 0, observable.countObservers());
273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(observer1 = new DeleteTestObserver(false));
275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(observer2 = new DeleteTestObserver(false));
276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.doChange();
277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.notifyObservers();
278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Failed to notify all 2", observer1.updateCount() == 1
279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                && observer2.updateCount() == 1);
280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Failed to delete all 2", 0, observable.countObservers());
281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.Observable#notifyObservers(java.lang.Object)
285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "notifyObservers",
290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_notifyObserversLjava_lang_Object() {
293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Test for method void
294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // java.util.Observable.notifyObservers(java.lang.Object)
295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Object obj;
296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.addObserver(observer = new TestObserver());
297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.notifyObservers();
298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Notified when unchanged", 0, ((TestObserver) observer)
299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .updateCount());
300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ((TestObservable) observable).doChange();
301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable.notifyObservers(obj = new Object());
302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Failed to notify",
303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                1, ((TestObserver) observer).updateCount());
304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Failed to pass Object arg", ((TestObserver) observer).objv
305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .elementAt(0).equals(obj));
306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Sets up the fixture, for example, open a network connection. This method
310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * is called before a test is executed.
311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void setUp() {
313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        observable = new TestObservable();
314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Tears down the fixture, for example, close a network connection. This
318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * method is called after a test is executed.
319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void tearDown() {
321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
323