/* * Copyright (C) 2015 The Android Open Source Project * * 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 android.databinding.testapp; import android.databinding.ListChangeRegistry; import android.databinding.ObservableList; import android.databinding.ObservableList.OnListChangedCallback; import android.databinding.testapp.databinding.BasicBindingBinding; public class ListChangeRegistryTest extends BaseDataBinderTest { private ListChangeRegistry mListChangeRegistry; private int mCallCount; public ListChangeRegistryTest() { super(BasicBindingBinding.class); } @Override protected void setUp() throws Exception { super.setUp(); mListChangeRegistry = new ListChangeRegistry(); mCallCount = 0; } @Override protected void tearDown() throws Exception { super.tearDown(); mListChangeRegistry = null; } public void testNotifyChangedAll() { OnListChangedCallback listChangedCallback = new OnListChangedCallback() { @Override public void onChanged(ObservableList sender) { mCallCount++; } @Override public void onItemRangeChanged(ObservableList sender, int start, int count) { fail("onItemRangeChanged should not be called"); } @Override public void onItemRangeInserted(ObservableList sender, int start, int count) { fail("onItemRangeInserted should not be called"); } @Override public void onItemRangeMoved(ObservableList sender, int from, int to, int count) { fail("onItemRangeMoved should not be called"); } @Override public void onItemRangeRemoved(ObservableList sender, int start, int count) { fail("onItemRangeRemoved should not be called"); } }; mListChangeRegistry.add(listChangedCallback); assertEquals(0, mCallCount); mListChangeRegistry.notifyChanged(null); assertEquals(1, mCallCount); } public void testNotifyChanged() { final int expectedStart = 10; final int expectedCount = 3; OnListChangedCallback listChangedCallback = new OnListChangedCallback() { @Override public void onChanged(ObservableList sender) { fail("onChanged should not be called"); } @Override public void onItemRangeChanged(ObservableList sender, int start, int count) { assertEquals(expectedStart, start); assertEquals(expectedCount, count); mCallCount++; } @Override public void onItemRangeInserted(ObservableList sender, int start, int count) { fail("onItemRangeInserted should not be called"); } @Override public void onItemRangeMoved(ObservableList sender, int from, int to, int count) { fail("onItemRangeMoved should not be called"); } @Override public void onItemRangeRemoved(ObservableList sender, int start, int count) { fail("onItemRangeRemoved should not be called"); } }; mListChangeRegistry.add(listChangedCallback); assertEquals(0, mCallCount); mListChangeRegistry.notifyChanged(null, expectedStart, expectedCount); assertEquals(1, mCallCount); } public void testNotifyInserted() { final int expectedStart = 10; final int expectedCount = 3; OnListChangedCallback listChangedCallback = new OnListChangedCallback() { @Override public void onChanged(ObservableList sender) { fail("onChanged should not be called"); } @Override public void onItemRangeChanged(ObservableList sender, int start, int count) { fail("onItemRangeChanged should not be called"); } @Override public void onItemRangeInserted(ObservableList sender, int start, int count) { assertEquals(expectedStart, start); assertEquals(expectedCount, count); mCallCount++; } @Override public void onItemRangeMoved(ObservableList sender, int from, int to, int count) { fail("onItemRangeMoved should not be called"); } @Override public void onItemRangeRemoved(ObservableList sender, int start, int count) { fail("onItemRangeRemoved should not be called"); } }; mListChangeRegistry.add(listChangedCallback); assertEquals(0, mCallCount); mListChangeRegistry.notifyInserted(null, expectedStart, expectedCount); assertEquals(1, mCallCount); } public void testNotifyMoved() { final int expectedFrom = 10; final int expectedTo = 100; final int expectedCount = 3; OnListChangedCallback listChangedCallback = new OnListChangedCallback() { @Override public void onChanged(ObservableList sender) { fail("onChanged should not be called"); } @Override public void onItemRangeChanged(ObservableList sender, int start, int count) { fail("onItemRangeChanged should not be called"); } @Override public void onItemRangeInserted(ObservableList sender, int start, int count) { fail("onItemRangeInserted should not be called"); } @Override public void onItemRangeMoved(ObservableList sender, int from, int to, int count) { assertEquals(expectedFrom, from); assertEquals(expectedTo, to); assertEquals(expectedCount, count); mCallCount++; } @Override public void onItemRangeRemoved(ObservableList sender, int start, int count) { fail("onItemRangeRemoved should not be called"); } }; mListChangeRegistry.add(listChangedCallback); assertEquals(0, mCallCount); mListChangeRegistry.notifyMoved(null, expectedFrom, expectedTo, expectedCount); assertEquals(1, mCallCount); } public void testNotifyRemoved() { final int expectedStart = 10; final int expectedCount = 3; OnListChangedCallback listChangedCallback = new OnListChangedCallback() { @Override public void onChanged(ObservableList sender) { fail("onChanged should not be called"); } @Override public void onItemRangeChanged(ObservableList sender, int start, int count) { fail("onItemRangeChanged should not be called"); } @Override public void onItemRangeInserted(ObservableList sender, int start, int count) { fail("onItemRangeInserted should not be called"); } @Override public void onItemRangeMoved(ObservableList sender, int from, int to, int count) { fail("onItemRangeMoved should not be called"); } @Override public void onItemRangeRemoved(ObservableList sender, int start, int count) { assertEquals(expectedStart, start); assertEquals(expectedCount, count); mCallCount++; } }; mListChangeRegistry.add(listChangedCallback); assertEquals(0, mCallCount); mListChangeRegistry.notifyRemoved(null, expectedStart, expectedCount); assertEquals(1, mCallCount); } }