[Seasar-user:15150] Re: 【S2Unit】assertEqualsでのBoolean値の検証
IZUNO Tadashi
[E-MAIL ADDRESS DELETED]
2008年 7月 25日 (金) 10:29:28 JST
小林さん
いづのです。
> テストクラスで
>
> protected void setUp() throws Exception {
> super.setUp();
> ColumnTypes.registerColumnType(Boolean.class, new BooleanType() {
> public Object convert(Object value, String formatPattern) {
> return ((Boolean) value).booleanValue() ? "1" : "0";
> }
> });
> }
>
> protected void tearDown() throws Exception {
> ColumnTypes.registerColumnType(Boolean.class, ColumnTypes.BOOLEAN);
> super.tearDown();
> }
>
> のようにしてください.
BooleanTypeのコンストラクタがprotectedだったので別でBooleanTypeを以下のように作成し、convertもちょっと変更することで実現できました。ありがとうございました。
package com.example;
import org.seasar.extension.dataset.ColumnType;
public class BooleanType implements ColumnType {
BooleanType() {
}
public Object convert(Object value, String formatPattern) {
if (value instanceof String) {
return value;
} else {
return ((Boolean) value).booleanValue() ? "1" : "0";
}
}
@SuppressWarnings("unchecked")
public Class getType() {
return Boolean.class;
}
@Override
public boolean equals(Object arg1, Object arg2) {
if (arg1 == null) {
return arg2 == null;
}
return doEquals(arg1, arg2);
}
/*
* ObjectType#doEquals()
*/
protected boolean doEquals(Object arg1, Object arg2) {
try {
arg1 = convert(arg1, null);
} catch (Throwable t) {
return false;
}
try {
arg2 = convert(arg2, null);
} catch (Throwable t) {
return false;
}
if ((arg1 instanceof Comparable) && (arg2 instanceof Comparable)) {
return ((Comparable) arg1).compareTo(arg2) == 0;
}
return arg1.equals(arg2);
}
}
Seasar-user メーリングリストの案内