/******************************************************************************* * Copyright (c) 2007-2008 Borland Software Corporation and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Borland Software Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.m2m.internal.tests.qvt.oml.ui.completion; import java.util.LinkedHashSet; import java.util.Set; import junit.framework.TestCase; /** * @author vrepeshko */ public abstract class AbstractCompletionTest extends TestCase { protected AbstractCompletionTest(final String name) { super(name); } @Override protected void runTest() throws Throwable { testCompletion(); } public void testCompletion() throws Exception { Set<String> actualProposals = getActualProposalStrings(); Set<String> actualProposalsTemp = new LinkedHashSet<String>(actualProposals); Set<String> expectedProposals = getExpectedProposalStrings(); Set<String> expectedProposalsTemp = new LinkedHashSet<String>(expectedProposals); if (isStrict()) { actualProposalsTemp.removeAll(expectedProposals); } else { actualProposalsTemp.clear(); } expectedProposalsTemp.removeAll(actualProposals); if (!actualProposalsTemp.isEmpty() || !expectedProposalsTemp.isEmpty()) { // We shouldn't be here StringBuilder errors = new StringBuilder(); for (String proposal : expectedProposalsTemp) { errors.append("Expected proposal not found: " + proposal + "\n"); //$NON-NLS-1$//$NON-NLS-2$ } if (isStrict()) { for (String proposal : actualProposalsTemp) { errors.append("Unexpected proposal found: " + proposal + "\n"); //$NON-NLS-1$//$NON-NLS-2$ } } assertTrue(errors.toString(), false); } } protected abstract Set<String> getActualProposalStrings(); protected abstract Set<String> getExpectedProposalStrings(); protected abstract boolean isStrict(); }