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