/*
* Copyright (c) 2007 NTT DATA Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jp.terasoluna.fw.beans.jxpath;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import java.util.HashMap;
import java.util.Locale;
import org.apache.commons.jxpath.ri.QName;
import org.apache.commons.jxpath.ri.model.NodePointer;
import org.apache.commons.jxpath.ri.model.beans.NullPointer;
import org.junit.Test;
import org.springframework.test.util.ReflectionTestUtils;
/**
* {@link jp.terasoluna.fw.beans.jxpath.DynamicPointerFactoryEx} クラスのブラックボックステスト。
* <p>
* <h4>【クラスの概要】</h4> Map用ポインタファクトリの拡張クラス。<br>
* 前提条件:
* <p>
* @see jp.terasoluna.fw.beans.jxpath.DynamicPointerFactoryEx
*/
public class DynamicPointerFactoryExTest {
/**
* testGetOrder01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値: <br>
* 期待値:(戻り値) -:750<br>
* <br>
* ソート順を取得するメソッド。固定値を返す。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetOrder01() throws Exception {
// 前処理
DynamicPointerFactoryEx factory = new DynamicPointerFactoryEx();
// テスト実施
assertEquals(750, factory.getOrder());
}
/**
* testCreateNodePointerQname01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) name:not null<br>
* (引数) bean:new HashMap() {<br>
* key="value"<br>
* }<br>
* (引数) locale:Locale("ja")<br>
* (状態) bi.isDynamic():true<br>
* <br>
* 期待値:(戻り値) NodePointer:new DynamicPointerEX {<br>
* locale=引数のlocale<br>
* name=引数のname<br>
* bean=引数のbean<br>
* }<br>
* <br>
* Map型のターゲットのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateNodePointerQname01() throws Exception {
// 前処理
DynamicPointerFactoryEx factory = new DynamicPointerFactoryEx();
QName qName = new QName("name");
Object bean = new HashMap<Object, Object>();
Locale locale = new Locale("ja");
// テスト実施
NodePointer result = factory.createNodePointer(qName, bean, locale);
// 判定
assertSame(DynamicPointerEx.class, result.getClass());
assertSame(locale, result.getLocale());
assertSame(qName, result.getName());
assertSame(bean, ReflectionTestUtils.getField(result, "bean"));
}
/**
* testCreateNodePointerQname02() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) name:not null<br>
* (引数) bean:new Object()<br>
* (引数) locale:Locale("ja")<br>
* (状態) bi.isDynamic():false<br>
* <br>
* 期待値:(戻り値) NodePointer:null<br>
* <br>
* Map型ではないターゲットのテスト。Nullを返す。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateNodePointerQname02() throws Exception {
// 前処理
DynamicPointerFactoryEx factory = new DynamicPointerFactoryEx();
QName qName = new QName("name");
Object bean = new Object();
Locale locale = new Locale("ja");
// テスト実施
assertNull(factory.createNodePointer(qName, bean, locale));
}
/**
* testCreateNodePointerNodePointer01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) parent:not null<br>
* (引数) name:not null<br>
* (引数) bean:null<br>
* <br>
* 期待値:(戻り値) NodePointer:new NullPointer {<br>
* parent=引数のparent<br>
* name=引数のname<br>
* }<br>
* <br>
* ターゲットがnullの場合のテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateNodePointerNodePointer01() throws Exception {
// 前処理
DynamicPointerFactoryEx factory = new DynamicPointerFactoryEx();
QName qName = new QName("name");
Locale locale = new Locale("ja");
NodePointer nodePointer = NodePointer.newNodePointer(qName, null,
locale);
// テスト実施
NodePointer result = factory.createNodePointer(nodePointer, qName,
null);
// 判定
assertSame(NullPointer.class, result.getClass());
assertSame(qName, result.getName());
assertSame(nodePointer, result.getParent());
}
/**
* testCreateNodePointerNodePointer02() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) parent:not null<br>
* (引数) name:not null<br>
* (引数) bean:new HashMap() {<br>
* key="value"<br>
* }<br>
* (状態) bi.isDynamic():true<br>
* <br>
* 期待値:(戻り値) NodePointer:new DynamicPointerEX {<br>
* parent=引数のparent<br>
* name=引数のname<br>
* bean=引数のbean<br>
* }<br>
* <br>
* Map型のターゲットのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateNodePointerNodePointer02() throws Exception {
// 前処理
DynamicPointerFactoryEx factory = new DynamicPointerFactoryEx();
QName qName = new QName("name");
Object bean = new HashMap<Object, Object>();
Locale locale = new Locale("ja");
NodePointer nodePointer = NodePointer.newNodePointer(qName, bean,
locale);
// テスト実施
NodePointer result = factory.createNodePointer(nodePointer, qName,
bean);
// 判定
assertSame(DynamicPointerEx.class, result.getClass());
assertSame(nodePointer, result.getParent());
assertSame(qName, result.getName());
assertSame(bean, ReflectionTestUtils.getField(result, "bean"));
}
/**
* testCreateNodePointerNodePointer03() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) parent:not null<br>
* (引数) name:not null<br>
* (引数) bean:new Object()<br>
* (状態) bi.isDynamic():false<br>
* <br>
* 期待値:(戻り値) NodePointer:null<br>
* <br>
* Map型ではないターゲットのテスト。Nullを返す。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateNodePointerNodePointer03() throws Exception {
// 前処理
DynamicPointerFactoryEx factory = new DynamicPointerFactoryEx();
QName qName = new QName("name");
Object bean = new Object();
Locale locale = new Locale("ja");
NodePointer nodePointer = NodePointer.newNodePointer(qName, bean,
locale);
// テスト実施
assertNull(factory.createNodePointer(nodePointer, qName, bean));
}
}