[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 メーリングリストの案内