package com.tesora.dve.sql.util; /* * #%L * Tesora Inc. * Database Virtualization Engine * %% * Copyright (C) 2011 - 2014 Tesora Inc. * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ import static org.junit.Assert.fail; import org.apache.commons.lang.ObjectUtils; public class ColumnChecker { public ColumnChecker() { } public String asString(Object in) { if (in == null) return "null"; return in.toString(); } public String debugString(Object in) throws Throwable { return asString(in); } protected String equalObjects(Object expected, Object actual) { if (ObjectUtils.equals(expected, actual)) return null; String typeExpected = ""; String typeActual = ""; if (expected.getClass() != actual.getClass()) { typeExpected = " [" + expected.getClass().toString() + "]"; typeActual = " [" + actual.getClass().toString() + "]"; } return "Expected: '" + asString(expected) + "'" + typeExpected + "; Actual: '" + asString(actual) + "'" + typeActual; } public String isEqual(String cntxt, Object expected, Object actual, boolean justCheck) { if (expected == null && actual == null) return null; String diffs = null; if (expected != null && actual != null) diffs = equalObjects(expected, actual); else if (expected != null && actual == null) diffs = "Expected non null actual, but found null"; else diffs = "Expected null actual, but found '" + asString(actual) + "'"; if (diffs == null) return null; String message = cntxt + ": " + diffs; if (!justCheck) fail(message); return message; } }