blob: c3dfeedd927ae0efc02c1f1b99fa2b31de9705d2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 NumberFour AG
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* NumberFour AG - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.javascript.core.tests.typeinfo;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.dltk.javascript.core.Types;
import org.eclipse.dltk.javascript.typeinfo.ITypeNames;
import org.eclipse.dltk.javascript.typeinfo.TypeQuery;
import org.eclipse.dltk.javascript.typeinfo.model.Type;
import org.eclipse.dltk.javascript.typeinfo.model.TypeInfoModelFactory;
public class TypeQueryTests extends TestCase implements ITypeNames {
private List<Type> toList(final Iterable<Type> iterable) {
final List<Type> types = new ArrayList<Type>();
for (Type type : iterable) {
types.add(type);
}
return types;
}
public void testHierarchy() {
final Type type = TypeInfoModelFactory.eINSTANCE.createType();
type.getTraits().add(Types.STRING);
type.getTraits().add(Types.NUMBER);
final TypeQuery query = new TypeQuery(type);
final List<Type> all = query.getHierarchy();
assertEquals(4, all.size());
assertSame(type, all.get(0));
assertSame(Types.STRING, all.get(1));
assertSame(Types.NUMBER, all.get(2));
assertSame(Types.OBJECT, all.get(3));
}
public void testTraits() {
final Type base = TypeInfoModelFactory.eINSTANCE.createType();
base.getTraits().add(Types.STRING);
base.getTraits().add(Types.NUMBER);
final Type type = TypeInfoModelFactory.eINSTANCE.createType();
type.setSuperType(base);
type.getTraits().add(Types.NUMBER);
final List<Type> traits = toList(new TypeQuery(type).getAllTraits());
assertEquals(2, traits.size());
assertSame(Types.NUMBER, traits.get(0));
assertSame(Types.STRING, traits.get(1));
}
public void testTraits2() {
final Type base = TypeInfoModelFactory.eINSTANCE.createType();
base.getTraits().add(Types.STRING);
base.getTraits().add(Types.NUMBER);
final Type type = TypeInfoModelFactory.eINSTANCE.createType();
type.setSuperType(base);
final List<Type> traits = toList(new TypeQuery(type).getAllTraits());
assertEquals(2, traits.size());
assertSame(Types.STRING, traits.get(0));
assertSame(Types.NUMBER, traits.get(1));
}
}