package com.redspr.redquerybuilder.core.client.expression;
import org.junit.Ignore;
import org.junit.Test;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.Widget;
import com.redspr.redquerybuilder.core.client.AbstractTest;
import com.redspr.redquerybuilder.core.shared.meta.Cardinality;
import com.redspr.redquerybuilder.core.shared.meta.Column;
import com.redspr.redquerybuilder.core.shared.meta.Editor;
import com.redspr.redquerybuilder.core.shared.meta.Operator;
@Ignore
public abstract class AbstractEditorTest<T> extends AbstractTest {
abstract protected Editor getEditor();
protected Cardinality getCardinality() {
return Cardinality.ONE;
}
abstract protected T getExample1();
protected T getEmptyValue() {
return null;
}
private Column getColumn() {
Column c = new Column();
c.setEditor(getEditor());
return c;
}
private Operator getOperator() {
Operator o = new Operator("TEST");
o.setCardinality(getCardinality());
return o;
}
private Widget asWidget() {
Object key = EditorWidgetFactory.createKey(getColumn(), getOperator());
return EditorWidgetFactory.create(key, null, getColumn());
}
private HasValue<T> asHasValue() {
return (HasValue<T>) asWidget();
}
@Test
public void testNullInEmptyOut() {
HasValue<T> hasValue = asHasValue();
hasValue.setValue(null);
assertEquals(getEmptyValue(), hasValue.getValue());
}
@Test
public void testValueInAndOut() {
HasValue<T> hasValue = asHasValue();
hasValue.setValue(getExample1());
assertEquals(getExample1(), hasValue.getValue());
}
}