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