package jp.mixi.compatibility.widget;
import android.content.Context;
import android.os.Build;
import android.test.AndroidTestCase;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import jp.mixi.compatibility.android.widget.ArrayAdapterCompat;
/**
* Created by Hideyuki.Kikuma on 2014/10/08.
*/
public class ArrayAdapterCompatTest extends AndroidTestCase {
public void testAddAllCollection() {
List<String> list = new ArrayList<String>();
list.add("foo");
list.add("bar");
DummyArrayAdapter<String> adapter = new DummyArrayAdapter<String>(getContext(), 0);
assertFalse(adapter.calledAdd);
assertFalse(adapter.calledAddAll);
ArrayAdapterCompat.addAll(adapter, list);
assertTrue(adapter.mCollection.containsAll(list));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
assertTrue(adapter.calledAddAll);
assertFalse(adapter.calledAdd);
} else {
assertTrue(adapter.calledAdd);
assertFalse(adapter.calledAddAll);
}
}
public void testAddAllArray() {
String[] list = new String[]{"foo", "bar"};
DummyArrayAdapter<String> adapter = new DummyArrayAdapter<String>(getContext(), 0);
assertFalse(adapter.calledAdd);
assertFalse(adapter.calledAddAll);
ArrayAdapterCompat.addAll(adapter, list);
assertTrue(adapter.mCollection.containsAll(Arrays.asList(list)));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
assertTrue(adapter.calledAddAll);
assertFalse(adapter.calledAdd);
} else {
assertTrue(adapter.calledAdd);
assertFalse(adapter.calledAddAll);
}
}
private class DummyArrayAdapter<T> extends ArrayAdapter<T> {
private Collection<T> mCollection;
private boolean calledAddAll = false;
private boolean calledAdd = false;
public DummyArrayAdapter(Context context, int resource) {
super(context, resource);
}
@Override
public void addAll(Collection<? extends T> collection) {
calledAddAll = true;
if (mCollection == null) {
mCollection = new ArrayList<T>();
}
mCollection.addAll(collection);
}
@Override
public void addAll(T... items) {
calledAddAll = true;
if (mCollection == null) {
mCollection = new ArrayList<T>();
}
Collections.addAll(mCollection, items);
}
@Override
public void add(T object) {
calledAdd = true;
if (mCollection == null) {
mCollection = new ArrayList<T>();
}
mCollection.add(object);
}
}
}