/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * 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 org.seasar.framework.unit; import java.util.Collection; import java.util.List; import java.util.Map; import org.junit.Assert; import org.seasar.extension.dataset.DataSet; import org.seasar.extension.dataset.DataTable; import org.seasar.extension.unit.S2TestCase; import org.seasar.framework.jpa.unit.EntityReader; import org.seasar.framework.jpa.unit.EntityReaderFactory; /** * テストで使用するアサートメソッドの集合です。 * <p> * static importを宣言して利用してください。 * * <pre> * import org.seasar.framework.unit.S2Assert.*; * ... * assertEquals(...); * </pre> * * </p> * * @author taedium * */ public class S2Assert extends Assert { /** {@link S2TestCase}のアダプタ */ protected static final S2TestCaseAdapter adapter = new S2TestCaseAdapter(); /** * インスタンスを構築します。 * */ protected S2Assert() { } /** * 2つのデータセットが等しいことをアサートします。 * * @param expected * 期待値 * @param actual * 実際値 */ public static void assertEquals(DataSet expected, DataSet actual) { adapter.assertEquals(null, expected, actual); } /** * 2つのデータセットが等しいことをアサートします。もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param message * メッセージ * @param expected * 期待値 * @param actual * 実際値 */ public static void assertEquals(String message, DataSet expected, DataSet actual) { adapter.assertEquals(message, expected, actual); } /** * 2つのデータテーブルが等しいことをアサートします。 * * @param expected * 期待値 * @param actual * 実際値 */ public static void assertEquals(DataTable expected, DataTable actual) { adapter.assertEquals(null, expected, actual); } /** * 2つのデータテーブルが等しいことをアサートします。もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param message * メッセージ * @param expected * 期待値 * @param actual * 実際値 */ public static void assertEquals(String message, DataTable expected, DataTable actual) { adapter.assertEquals(message, expected, actual); } /** * データセットとオブジェクトが等しいことをアサートします。 * * @param expected * 期待値 * @param actual * 実際値 */ public static void assertEquals(DataSet expected, Object actual) { adapter.assertEquals(null, expected, actual); } /** * データセットとオブジェクトが等しいことをアサートします。 もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param message * メッセージ * @param expected * 期待値 * @param actual * 実際値 */ public static void assertEquals(String message, DataSet expected, Object actual) { adapter.assertEquals(message, expected, actual); } /** * データセットとマップが等しいことをアサートします。 * * @param <V> * マップの値の型 * @param expected * 期待値 * @param map * 実際値 */ public static <V> void assertMapEquals(DataSet expected, Map<String, V> map) { adapter.assertMapEquals(null, expected, map); } /** * データセットとマップが等しいことをアサートします。もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param <V> * マップの値の型 * @param message * メッセージ * @param expected * 期待値 * @param map * 実際値 */ public static <V> void assertMapEquals(String message, DataSet expected, Map<String, V> map) { adapter.assertMapEquals(message, expected, map); } /** * データセットとマップのリストが等しいことをアサートします。 * * @param <V> * マップの値の型 * @param expected * 期待値 * @param list * 実際値 */ public static <V> void assertMapEquals(DataSet expected, List<Map<String, V>> list) { adapter.assertMapListEquals(null, expected, list); } /** * データセットとマップのリストが等しいことをアサートします。もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param <V> * マップの値の型 * @param message * メッセージ * @param expected * 期待値 * @param list * 実際値 */ public static <V> void assertMapEquals(String message, DataSet expected, List<Map<String, V>> list) { adapter.assertMapListEquals(message, expected, list); } /** * データセットとビーンが等しいことをアサートします。 * * @param expected * 期待値 * @param bean * 実際値 */ public static void assertBeanEquals(DataSet expected, Object bean) { adapter.assertBeanEquals(null, expected, bean); } /** * データセットとビーンが等しいことをアサートします。もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param message * メッセージ * @param expected * 期待値 * @param bean * 実際値 */ public static void assertBeanEquals(String message, DataSet expected, Object bean) { adapter.assertBeanEquals(message, expected, bean); } /** * データセットとビーンのリストが等しいことをアサートします。 * * @param expected * 期待値 * @param list * 実際値 */ public static void assertBeanEquals(DataSet expected, List<?> list) { adapter.assertBeanListEquals(null, expected, list); } /** * データセットとビーンのリストが等しいことをアサートします。もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param message * メッセージ * @param expected * 期待値 * @param list * 実際値 */ public static void assertBeanEquals(String message, DataSet expected, List<?> list) { adapter.assertBeanListEquals(message, expected, list); } /** * データセットとJava Persistence APIのエンティティが等しいことをアサートします。 * * @param expected * 期待値 * @param entity * 実際値 */ public static void assertEntityEquals(DataSet expected, Object entity) { assertEntityEquals(null, expected, entity); } /** * データセットとJava Persistence * APIのエンティティが等しいことをアサートします。もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param message * メッセージ * @param expected * 期待値 * @param entity * 実際値 */ public static void assertEntityEquals(String message, DataSet expected, Object entity) { EntityReader reader = EntityReaderFactory.getEntityReader(entity); assertEqualsIgnoreTableOrder(message, expected, reader.read()); } /** * データセットとJava Persistence APIのエンティティのコレクションが等しいことをアサートします。 * * @param expected * 期待値 * @param entities * 実際値 */ public static void assertEntityEquals(DataSet expected, Collection<?> entities) { assertEntityEquals(null, expected, entities); } /** * データセットとJava Persistence * APIのエンティティのコレクションが等しいことをアサートします。もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param message * メッセージ * @param expected * 期待値 * @param entities * 実際値 */ public static void assertEntityEquals(String message, DataSet expected, Collection<?> entities) { EntityReader reader = EntityReaderFactory.getEntityReader(entities); assertEqualsIgnoreTableOrder(message, expected, reader.read()); } /** * 2つのデータセットがデータテーブルの順番を無視して等しいことをアサートします。 * * @param expected * 期待値 * @param actual * 実際値 */ public static void assertEqualsIgnoreTableOrder(DataSet expected, DataSet actual) { assertEqualsIgnoreTableOrder(null, expected, actual); } /** * 2つのデータセットがデータテーブルの順番を無視して等しいことをアサートします。もし等しくない場合、エラー情報に指定したメッセージが含まれます。 * * @param message * メッセージ * @param expected * 期待値 * @param actual * 実際値 */ public static void assertEqualsIgnoreTableOrder(String message, DataSet expected, DataSet actual) { message = message == null ? "" : message; for (int i = 0; i < expected.getTableSize(); ++i) { final String tableName = expected.getTable(i).getTableName(); final String notFound = message + ":Table " + tableName + " was not found."; assertTrue(notFound, actual.hasTable(tableName)); assertEquals(message, expected.getTable(i), actual .getTable(tableName)); } } /** * {@link S2TestCase}のアダプタです。 * * @author taedium */ protected static class S2TestCaseAdapter extends S2TestCase { @SuppressWarnings("unchecked") @Override protected void assertMapEquals(String message, DataSet expected, Map map) { super.assertMapEquals(message, expected, map); } @SuppressWarnings("unchecked") @Override protected void assertMapListEquals(String message, DataSet expected, List list) { super.assertMapListEquals(message, expected, list); } @Override protected void assertBeanEquals(String message, DataSet expected, Object bean) { super.assertBeanEquals(message, expected, bean); } @SuppressWarnings("unchecked") @Override protected void assertBeanListEquals(String message, DataSet expected, List list) { super.assertBeanListEquals(message, expected, list); } } }