/*******************************************************************************
* Copyright (c) 2006-2012
* Software Technology Group, Dresden University of Technology
* DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026
*
* 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:
* Software Technology Group - TU Dresden, Germany;
* DevBoost GmbH - Berlin, Germany
* - initial API and implementation
******************************************************************************/
package org.reuseware.sokan.test.all;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.List;
import org.junit.Test;
import org.reuseware.sokan.IndexRow;
import org.reuseware.sokan.index.emodeler.EModeler;
import org.reuseware.sokan.index.emodeler.EModelerManager;
import org.reuseware.sokan.index.indexer.Indexer;
import org.reuseware.sokan.index.indexer.IndexerConfiguration;
import org.reuseware.sokan.index.util.IndexUtil;
import org.reuseware.sokan.test.index.emodeler.FacetInstEModeler;
import org.reuseware.sokan.test.index.emodeler.FacetOtherEModeler;
import org.reuseware.sokan.test.index.indexer.DependencyIndexer;
import org.reuseware.sokan.test.index.indexer.FacetColorIndexer;
import org.reuseware.sokan.test.index.indexer.FacetSizeIndexer;
import org.reuseware.sokan.test.index.indexer.FacetTypeIndexer;
import org.reuseware.sokan.test.indexer.complex.A10Indexer;
import org.reuseware.sokan.test.indexer.complex.A11Indexer;
import org.reuseware.sokan.test.indexer.complex.A12Indexer;
import org.reuseware.sokan.test.indexer.complex.A13Indexer;
import org.reuseware.sokan.test.indexer.complex.A9Indexer;
import org.reuseware.sokan.test.indexer.complex.B10Indexer;
import org.reuseware.sokan.test.indexer.complex.B11Indexer;
import org.reuseware.sokan.test.indexer.complex.B12Indexer;
import org.reuseware.sokan.test.indexer.complex.B13Indexer;
import org.reuseware.sokan.test.indexer.complex.B9Indexer;
import org.reuseware.sokan.test.indexer.complex.C10Indexer;
import org.reuseware.sokan.test.indexer.complex.C11Indexer;
import org.reuseware.sokan.test.indexer.complex.C12Indexer;
import org.reuseware.sokan.test.indexer.complex.C13Indexer;
import org.reuseware.sokan.test.indexer.complex.C9Indexer;
import org.reuseware.sokan.test.indexer.complex.D10Indexer;
import org.reuseware.sokan.test.indexer.complex.D12Indexer;
import org.reuseware.sokan.test.indexer.complex.D13Indexer;
import org.reuseware.sokan.test.indexer.complex.D9Indexer;
import org.reuseware.sokan.test.indexer.complex.E13Indexer;
import org.reuseware.sokan.test.indexer.complex.F13Indexer;
import org.reuseware.sokan.test.indexer.complex.G13Indexer;
import org.reuseware.sokan.test.indexer.complex.H13Indexer;
import org.reuseware.sokan.test.indexer.complex.I13Indexer;
import org.reuseware.sokan.test.indexer.complex.J13Indexer;
import org.reuseware.sokan.test.indexer.complex.K13Indexer;
import org.reuseware.sokan.test.indexer.list.A3Indexer;
import org.reuseware.sokan.test.indexer.list.A4Indexer;
import org.reuseware.sokan.test.indexer.list.A5Indexer;
import org.reuseware.sokan.test.indexer.list.A6Indexer;
import org.reuseware.sokan.test.indexer.list.A7Indexer;
import org.reuseware.sokan.test.indexer.list.B3Indexer;
import org.reuseware.sokan.test.indexer.list.B4Indexer;
import org.reuseware.sokan.test.indexer.list.B5Indexer;
import org.reuseware.sokan.test.indexer.list.B6Indexer;
import org.reuseware.sokan.test.indexer.list.B7Indexer;
import org.reuseware.sokan.test.indexer.list.C6Indexer;
import org.reuseware.sokan.test.indexer.list.C7Indexer;
import org.reuseware.sokan.test.indexer.loop.CreateIndexLoopIndexer;
import org.reuseware.sokan.test.indexer.tree.A8Indexer;
import org.reuseware.sokan.test.indexer.tree.B8Indexer;
import org.reuseware.sokan.test.indexer.tree.C8Indexer;
import org.reuseware.sokan.test.indexer.trivial.A1Indexer;
import org.reuseware.sokan.test.indexer.trivial.A2Indexer;
import org.reuseware.sokan.test.util.SorterData;
public class PreconditionTestCase {
private static final SorterData sData = SorterData.INSTANCE;
@Test
public void preDependencyManagerTest() {
assertTrue("The DependencyIndexer is not registered!",
indexerIsRegistered(DependencyIndexer.class));
assertFalse("Index was not filled correctly!", indexIsEmpty());
}
@Test
public void preIndexerUtilTest() throws IOException {
assertTrue("The ColorIndexer is not registered!",
indexerIsRegistered(FacetColorIndexer.class));
assertTrue("The LevelIndexer is not registered!",
indexerIsRegistered(FacetSizeIndexer.class));
assertTrue("The NumberTypeIndexer is not registered!",
indexerIsRegistered(FacetTypeIndexer.class));
assertTrue("The FacetInstEModeler is not registered!",
eModelerIsRegistered(FacetInstEModeler.class));
assertTrue("The FacetOtherEModeler is not registered!",
eModelerIsRegistered(FacetOtherEModeler.class));
//ID id = ResourceUtil.idFrom(URI.createFileURI(data.b17.getCanonicalPath()));
//IndexRow row = IndexUtil.INSTANCE.getIndex(id);
}
@Test
public void preIndexerSorterTest() {
assertNotNull(sData.indexerSorterInst);
// trivial dependency indexers
assertTrue("The A1Indexer is not registered!",
indexerIsRegistered(A1Indexer.class));
assertTrue("The A2Indexer is not registered!",
indexerIsRegistered(A2Indexer.class));
// list dependency indexers
assertTrue("The A3Indexer is not registered!",
indexerIsRegistered(A3Indexer.class));
assertTrue("The B3Indexer is not registered!",
indexerIsRegistered(B3Indexer.class));
assertTrue("The A4Indexer is not registered!",
indexerIsRegistered(A4Indexer.class));
assertTrue("The B4Indexer is not registered!",
indexerIsRegistered(B4Indexer.class));
assertTrue("The A5Indexer is not registered!",
indexerIsRegistered(A5Indexer.class));
assertTrue("The B5Indexer is not registered!",
indexerIsRegistered(B5Indexer.class));
assertTrue("The A6Indexer is not registered!",
indexerIsRegistered(A6Indexer.class));
assertTrue("The B6Indexer is not registered!",
indexerIsRegistered(B6Indexer.class));
assertTrue("The C6Indexer is not registered!",
indexerIsRegistered(C6Indexer.class));
assertTrue("The A7Indexer is not registered!",
indexerIsRegistered(A7Indexer.class));
assertTrue("The B7Indexer is not registered!",
indexerIsRegistered(B7Indexer.class));
assertTrue("The C7Indexer is not registered!",
indexerIsRegistered(C7Indexer.class));
// tree dependency indexers
assertTrue("The A8Indexer is not registered!",
indexerIsRegistered(A8Indexer.class));
assertTrue("The B8Indexer is not registered!",
indexerIsRegistered(B8Indexer.class));
assertTrue("The C8Indexer is not registered!",
indexerIsRegistered(C8Indexer.class));
// complex dependency indexers
assertTrue("The A9Indexer is not registered!",
indexerIsRegistered(A9Indexer.class));
assertTrue("The B9Indexer is not registered!",
indexerIsRegistered(B9Indexer.class));
assertTrue("The C9Indexer is not registered!",
indexerIsRegistered(C9Indexer.class));
assertTrue("The D9Indexer is not registered!",
indexerIsRegistered(D9Indexer.class));
assertTrue("The A10Indexer is not registered!",
indexerIsRegistered(A10Indexer.class));
assertTrue("The B10Indexer is not registered!",
indexerIsRegistered(B10Indexer.class));
assertTrue("The C10Indexer is not registered!",
indexerIsRegistered(C10Indexer.class));
assertTrue("The D10Indexer is not registered!",
indexerIsRegistered(D10Indexer.class));
assertTrue("The A11Indexer is not registered!",
indexerIsRegistered(A11Indexer.class));
assertTrue("The B11Indexer is not registered!",
indexerIsRegistered(B11Indexer.class));
assertTrue("The C11Indexer is not registered!",
indexerIsRegistered(C11Indexer.class));
assertTrue("The A12Indexer is not registered!",
indexerIsRegistered(A12Indexer.class));
assertTrue("The B12Indexer is not registered!",
indexerIsRegistered(B12Indexer.class));
assertTrue("The C12Indexer is not registered!",
indexerIsRegistered(C12Indexer.class));
assertTrue("The D12Indexer is not registered!",
indexerIsRegistered(D12Indexer.class));
assertTrue("The E12Indexer is not registered!",
indexerIsRegistered(C12Indexer.class));
assertTrue("The F12Indexer is not registered!",
indexerIsRegistered(D12Indexer.class));
assertTrue("The A13Indexer is not registered!",
indexerIsRegistered(A13Indexer.class));
assertTrue("The B13Indexer is not registered!",
indexerIsRegistered(B13Indexer.class));
assertTrue("The C13Indexer is not registered!",
indexerIsRegistered(C13Indexer.class));
assertTrue("The D13Indexer is not registered!",
indexerIsRegistered(D13Indexer.class));
assertTrue("The E13Indexer is not registered!",
indexerIsRegistered(E13Indexer.class));
assertTrue("The F13Indexer is not registered!",
indexerIsRegistered(F13Indexer.class));
assertTrue("The G13Indexer is not registered!",
indexerIsRegistered(G13Indexer.class));
assertTrue("The H13Indexer is not registered!",
indexerIsRegistered(H13Indexer.class));
assertTrue("The I13Indexer is not registered!",
indexerIsRegistered(I13Indexer.class));
assertTrue("The J13Indexer is not registered!",
indexerIsRegistered(J13Indexer.class));
assertTrue("The K13Indexer is not registered!",
indexerIsRegistered(K13Indexer.class));
}
@Test
public void loopBreakerTest() {
assertTrue("The CreateIndexLoopIndexer is not registered!",
indexerIsRegistered(CreateIndexLoopIndexer.class));
}
private boolean indexIsEmpty() {
List<IndexRow> index = IndexUtil.INSTANCE.getIndex();
boolean empty = index == null || index.size() == 0;
System.out.println("[INFO] index size is: "
+ (empty ? "0" : index.size()));
return empty;
}
private boolean indexerIsRegistered(Class<? extends Indexer> indexerClass) {
for (IndexerConfiguration indexer : IndexUtil.INSTANCE.getIndexerConfigurations()) {
if (indexer.getId().equals(indexerClass.getCanonicalName()))
return true;
}
return false;
}
private boolean eModelerIsRegistered(Class<? extends EModeler> eModelerClass) {
for(EModeler modeler : EModelerManager.getEModelers()) {
if (modeler.getClass().equals(eModelerClass)) {
return true;
}
}
return false;
}
}