package stepdef.helper;
import org.mockito.ArgumentMatcher;
import com.github.shell88.bddvideoannotator.stubjava.StringArray;
import com.github.shell88.bddvideoannotator.stubjava.StringArrayArray;
/**
* Mockito ArgumentMatchers that is used to compare two Datatable-Objects.
* @author Hell
*
*/
//RefEq doesn´t work here, maybe because
//StringArrayArray contains an object by itself
public class IsSameStringArrayArray implements ArgumentMatcher<StringArrayArray> {
private StringArrayArray tableExpected;
public IsSameStringArrayArray(StringArrayArray expected) {
this.tableExpected = expected;
}
@Override
public boolean matches(Object tableActualObj) {
StringArrayArray tableActual = (StringArrayArray) tableActualObj;
if (tableExpected.getItem().size() != tableActual.getItem().size()) {
return false;
}
for (int rowIndex = 0; rowIndex < tableExpected.getItem().size(); rowIndex++) {
StringArray rowExpected = tableExpected.getItem().get(rowIndex);
StringArray rowActual = tableActual.getItem().get(rowIndex);
if (rowExpected.getItem().size() != rowActual.getItem().size()) {
return false;
}
for (int cellIndex = 0; cellIndex < rowExpected.getItem().size(); cellIndex++) {
if (!rowExpected.getItem().get(cellIndex)
.equals(rowActual.getItem().get(cellIndex))) {
return false;
}
}
}
return true;
}
}