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


import java.util.ArrayList;
import java.util.HashMap;

import jp.co.cybec.cb3.session.ServiceParameters;
import junit.framework.Assert;

import org.junit.Test;

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

	/**
	 * {@link jp.co.cybec.cb3.session.ServiceParameters} のためのテスト・メソッド。
	 * パラメータの設定と取得が正常に行えることを確認する。
	 */
	@Test
	public void testPutAndGet() {

		// ServiceParametersを生成。
		ServiceParameters serviceParameters = new ServiceParameters();

		// パラメータに保存するデータを生成。
		ArrayList<String> dataList = new ArrayList<String>();
		dataList.add("data1-1");
		dataList.add("data1-2");

		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put("1", 100);
		dataMap.put("2", 200);

		// パラメータを設定する。
		serviceParameters.put("key1", dataList);
		serviceParameters.put("key2", dataMap);
		serviceParameters.put("key3", "data3");

		// パラメータを取得し、結果が正しいことを確認する。
		Assert.assertSame(dataList, serviceParameters.get("key1"));
		Assert.assertSame(dataMap, serviceParameters.get("key2"));
		Assert.assertSame("data3", serviceParameters.get("key3"));
		Assert.assertNull(serviceParameters.get("key4"));
	}

	/**
	 * {@link jp.co.cybec.cb3.session.ServiceParameters#toString()} のためのテスト・メソッド。
	 * toString()でパラメータの中身が表示されることを確認する。
	 */
	@Test
	public void testToString() {
		// ServiceParametersを生成。
		ServiceParameters serviceParameters = new ServiceParameters();

		// パラメータを生成。
		serviceParameters.put("key1", "data1");
		serviceParameters.put("key2", "data2");

		// toString()の結果を確認。
		String expected1 = "ServiceParameters{key1=data1, key2=data2}";
		String expected2 = "ServiceParameters{key2=data2, key1=data1}";
		String result = serviceParameters.toString();
		Assert.assertTrue(result.equals(expected1) || result.equals(expected2));
	}
}
