TypeParameters.ceylon

import ceylon.ast.core {
    OutModifier,
    TypeParameter,
    TypeParameters,
    UIdentifier
}
import ceylon.ast.create {
    createBaseType=baseType,
    createTypeParameters=typeParameters
}
import ceylon.test {
    test,
    assertEquals
}

test
shared void typeParameters() {
    assertEquals {
        actual = createTypeParameters("Other");
        expected = TypeParameters([TypeParameter(UIdentifier("Other"))]);
        message = "Self type parameters";
    };
    assertEquals {
        actual = createTypeParameters(
            TypeParameter(UIdentifier("Element"), OutModifier()),
            TypeParameter(UIdentifier("Absent"), OutModifier(), createBaseType("Null"))
        );
        expected = TypeParameters([
                TypeParameter(UIdentifier("Element"), OutModifier()),
                TypeParameter(UIdentifier("Absent"), OutModifier(), createBaseType("Null"))
            ]);
        message = "Iterable type parameters";
    };
}