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

import jp.co.cybec.cb3.exception.CB3RuntimeException;
import junit.framework.Assert;
import org.junit.Test;

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

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

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

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

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

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

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

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

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

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

}
