Home | History | Annotate | Download | only in cts
      1 /*
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.database.cts;
     18 
     19 import android.database.DataSetObservable;
     20 import android.database.DataSetObserver;
     21 import android.test.AndroidTestCase;
     22 
     23 public class DataSetObservableTest extends AndroidTestCase {
     24 
     25     public void testNotifyMethods() {
     26         DataSetObservable dataSetObservalbe = new DataSetObservable();
     27         MockDataSetObserver dataSetObserver1 = new MockDataSetObserver();
     28         MockDataSetObserver dataSetObserver2 = new MockDataSetObserver();
     29 
     30         dataSetObservalbe.registerObserver(dataSetObserver1);
     31         dataSetObservalbe.registerObserver(dataSetObserver2);
     32 
     33         assertFalse(dataSetObserver1.hasChanged());
     34         assertFalse(dataSetObserver2.hasChanged());
     35         dataSetObservalbe.notifyChanged();
     36         assertTrue(dataSetObserver1.hasChanged());
     37         assertTrue(dataSetObserver2.hasChanged());
     38 
     39         assertFalse(dataSetObserver1.hasInvalidated());
     40         assertFalse(dataSetObserver2.hasInvalidated());
     41         dataSetObservalbe.notifyInvalidated();
     42         assertTrue(dataSetObserver1.hasInvalidated());
     43         assertTrue(dataSetObserver2.hasInvalidated());
     44 
     45         // After unregistering, all the observers can not be notified.
     46         dataSetObservalbe.unregisterAll();
     47         dataSetObserver1.resetStatus();
     48         dataSetObserver2.resetStatus();
     49 
     50         // notifyChanged is not working on dataSetObserver1 & 2 anymore.
     51         dataSetObservalbe.notifyChanged();
     52         assertFalse(dataSetObserver1.hasChanged());
     53         assertFalse(dataSetObserver2.hasChanged());
     54 
     55         // notifyInvalidated is not working on dataSetObserver1 & 2 anymore.
     56         dataSetObservalbe.notifyInvalidated();
     57         assertFalse(dataSetObserver1.hasInvalidated());
     58         assertFalse(dataSetObserver2.hasInvalidated());
     59     }
     60 
     61     private class MockDataSetObserver extends DataSetObserver {
     62         private boolean mHasChanged = false;
     63         private boolean mHasInvalidated = false;
     64 
     65         @Override
     66         public void onChanged() {
     67             super.onChanged();
     68             mHasChanged = true;
     69         }
     70 
     71         @Override
     72         public void onInvalidated() {
     73             super.onInvalidated();
     74             mHasInvalidated = true;
     75         }
     76 
     77         protected boolean hasChanged() {
     78             return mHasChanged;
     79         }
     80 
     81         protected boolean hasInvalidated() {
     82             return mHasInvalidated;
     83         }
     84 
     85         protected void resetStatus() {
     86             mHasChanged = false;
     87             mHasInvalidated = false;
     88         }
     89     }
     90 }
     91