package org.robobinding.property;
import static org.junit.Assert.assertSame;
import org.junit.Test;
import org.robobinding.itempresentationmodel.DataSetChangeListener;
/**
*
* @since 1.0
* @version $Revision: 1.0 $
* @author Cheng Wei
*/
public class AbstractDataSetTest {
@Test
public void givenGetDataSet_whenGetDataSetAgain_thenReturnSameInstance() {
GetSet getSet = new GetSet(new Object());
DataSet dataSetProperty = new DataSet(getSet);
Object dataSetFirstTime = dataSetProperty.getDataSet();
Object dataSetSecondTime = dataSetProperty.getDataSet();
assertSame(dataSetSecondTime, dataSetFirstTime);
}
@Test
public void whenUpdateDataSet_thenDataSetPropertyReflectsChanges() {
GetSet getSet = new GetSet(new Object());
DataSet dataSetProperty = new DataSet(getSet);
Object newValue = new Object();
getSet.value = newValue;
dataSetProperty.propertyChanged();
assertSame(newValue, dataSetProperty.getDataSet());
}
static class DataSet extends AbstractDataSet {
public DataSet(AbstractGetSet<?> getSet) {
super(null, getSet);
}
@Override
public int size() {
return 0;
}
@Override
public Object get(int position) {
return null;
}
@Override
public void addListener(DataSetChangeListener listener) {
}
@Override
public void removeListener(DataSetChangeListener listener) {
}
}
static class GetSet extends AbstractGetSet<Object> {
public Object value;
public GetSet(Object value) {
super(null);
this.value = value;
}
@Override
public Object getValue() {
return value;
}
}
}