/*******************************************************************************
 * Copyright (c) 2009, 2012 E.D.Willink 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:
 *   L.Goubet, E.D.Willink - Initial API and implementation
 *******************************************************************************/

package org.eclipse.ocl.examples.pivot.tests;



/**
 * Tests for OclAny operations.
 */
//@RunWith(value = Parameterized.class)
public class EvaluateOclAnyOperationsTest extends EvaluateOclAnyOperationsTest4
{
//	@Parameters
//	public static Collection<Object[]> data() {
//		Object[][] data = new Object[][]{{false}};
//		return Arrays.asList(data);
//	}

	public EvaluateOclAnyOperationsTest(/*boolean useCodeGen*/) {
		super(false/*useCodeGen*/);
	}
}
