IsActualContainingExpectedStringValueComparer.java
- package org.dbunit.assertion.comparer.value;
- import org.dbunit.DatabaseUnitException;
- import org.dbunit.dataset.ITable;
- import org.dbunit.dataset.datatype.DataType;
- import org.dbunit.dataset.datatype.TypeCastException;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- /**
- * {@link ValueComparer} implementation that verifies actual value contains
- * expected value by converting to {@link String}s and using
- * {@link String#contains(CharSequence)}. Special case: if both are null, they
- * match.
- *
- * @author Jeff Jensen
- * @since 2.7.0
- */
- public class IsActualContainingExpectedStringValueComparer
- extends ValueComparerTemplateBase
- {
- private final Logger log = LoggerFactory.getLogger(getClass());
- @Override
- protected boolean isExpected(final ITable expectedTable,
- final ITable actualTable, final int rowNum, final String columnName,
- final DataType dataType, final Object expectedValue,
- final Object actualValue) throws DatabaseUnitException
- {
- final boolean isExpected;
- // handle nulls: prevent NPE and isExpected=true when both null
- if (expectedValue == null && actualValue == null)
- {
- // both are null, so match
- isExpected = true;
- } else if (expectedValue == null || actualValue == null)
- {
- // both aren't null, one is null, so no match
- isExpected = false;
- } else
- {
- // neither are null, so compare
- isExpected = isContaining(expectedValue, actualValue);
- }
- return isExpected;
- }
- protected boolean isContaining(final Object expectedValue,
- final Object actualValue) throws TypeCastException
- {
- final String expectedValueString = DataType.asString(expectedValue);
- final String actualValueString = DataType.asString(actualValue);
- log.debug("isContaining: expectedValueString={}, actualValueString={}",
- expectedValueString, actualValueString);
- return actualValueString.contains(expectedValueString);
- }
- @Override
- protected String getFailPhrase()
- {
- return "not containing";
- }
- }