12c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount/* 22c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * Copyright (C) 2015 The Android Open Source Project 32c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * 42c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * Licensed under the Apache License, Version 2.0 (the "License"); 52c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * you may not use this file except in compliance with the License. 62c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * You may obtain a copy of the License at 72c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * 82c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * http://www.apache.org/licenses/LICENSE-2.0 92c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * 102c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * Unless required by applicable law or agreed to in writing, software 112c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * distributed under the License is distributed on an "AS IS" BASIS, 122c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * See the License for the specific language governing permissions and 142c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount * limitations under the License. 152c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount */ 16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.testapp; 172c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 18fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.PropertyChangeRegistry; 192e2043d30f95585de2069e1cbb23e022ab0e71c4George Mountimport android.databinding.testapp.databinding.BasicBindingBinding; 202c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 21fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.Observable; 22722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mountimport android.databinding.Observable.OnPropertyChangedCallback; 232c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 244c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mountpublic class PropertyChangeRegistryTest extends BaseDataBinderTest<BasicBindingBinding> { 252c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 262c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount private int notificationCount = 0; 272c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 282c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount public PropertyChangeRegistryTest() { 294c5cc009bcbcfb19e33fb19db5ec80f83f7b3326George Mount super(BasicBindingBinding.class); 302c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount } 312c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 322c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount public void testNotifyChanged() { 332c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount PropertyChangeRegistry propertyChangeRegistry = new PropertyChangeRegistry(); 342c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 352c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount final Observable observableObj = new Observable() { 362c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount @Override 37722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mount public void addOnPropertyChangedCallback( 38722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mount OnPropertyChangedCallback OnPropertyChangedCallback) { 392c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount } 402c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 412c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount @Override 42722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mount public void removeOnPropertyChangedCallback( 43722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mount OnPropertyChangedCallback OnPropertyChangedCallback) { 442c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount } 452c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount }; 462c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 472c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount final int expectedId = 100; 48722fe711207a37783dfa7142284b0ebe5bd503fbGeorge Mount OnPropertyChangedCallback listener = new OnPropertyChangedCallback() { 492c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount @Override 502c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount public void onPropertyChanged(Observable observable, int id) { 512c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount notificationCount++; 522c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount assertEquals(expectedId, id); 532c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount assertEquals(observableObj, observable); 542c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount } 552c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount }; 562c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount propertyChangeRegistry.add(listener); 572c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount 582c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount assertEquals(0, notificationCount); 592c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount propertyChangeRegistry.notifyChange(observableObj, expectedId); 602c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount assertEquals(1, notificationCount); 612c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount } 622c86cdbaf189e2b1774af7f64a2974de9321673fGeorge Mount} 63