/*
 * AccessorRuntimeExceptionTest.java
 * Copyright (C) 2008 Cyber Beans Corporation. All rights reserved.
 */
package jp.co.cybec.cb3.exception;

import junit.framework.Assert;
import org.junit.Test;

/**
 * AccessorRuntimeExceptionのテストケース。
 * @author Naoko Sugimoto
 */
public class AccessorRuntimeExceptionTest {

	/**
	 * {@link jp.co.cybec.cb3.exception.AccessorRuntimeException#AccessorRuntimeException(java.lang.Exception)} のためのテスト・メソッド。
	 */
	@Test
	public void testConstructorWithException() {
		// 元になる例外を生成。
		String causeMessage = "XXXXに失敗しました。";
		Exception causeException = new Exception(causeMessage);

		// AccessorRuntimeExceptionを生成。
		AccessorRuntimeException newException = new AccessorRuntimeException(causeException);

		// 元になった例外を保持していることを確認。
		Assert.assertSame(causeException, newException.getCause());
		// メッセージ内容を確認。
		Assert.assertEquals(0, newException.getMessage().indexOf(causeMessage));
	}

	/**
	 * {@link jp.co.cybec.cb3.exception.AccessorRuntimeException#AccessorRuntimeException(java.lang.String)} のためのテスト・メソッド。
	 */
	@Test
	public void testConstructorWithString() {
		String message = "XXXXに失敗しました。";

		// AccessorRuntimeExceptionを生成。
		AccessorRuntimeException newException = new AccessorRuntimeException(message);

		// メッセージ内容を確認。
		Assert.assertEquals(message, newException.getMessage());
	}

	/**
	 * {@link jp.co.cybec.cb3.exception.AccessorRuntimeException#AccessorRuntimeException(java.lang.String, java.lang.Exception)} のためのテスト・メソッド。
	 */
	@Test
	public void testConstructorWithStringAndException() {
		// 元になる例外を生成。
		String causeMessage = "XXXXに失敗しました。";
		Exception causeException = new Exception(causeMessage);
		// 新しく追加するメッセージ。
		String newMessage = "YYYYの処理中に例外が発生しました。";

		// AccessorRuntimeExceptionを生成。
		AccessorRuntimeException newException = new AccessorRuntimeException(newMessage, causeException);

		// 元になった例外を保持していることを確認。
		Assert.assertSame(causeException, newException.getCause());
		// メッセージ内容を確認。
		Assert.assertEquals(0, newException.getMessage().indexOf(newMessage));
	}

}
