BaseExpression.ceylon

import ceylon.ast.core {
    BaseExpression,
    BaseType,
    LIdentifier,
    MemberNameWithTypeArguments,
    TypeArgument,
    TypeArguments,
    TypeNameWithTypeArguments,
    UIdentifier
}
import ceylon.ast.create {
    createBaseExpression=baseExpression
}
import ceylon.test {
    test,
    assertEquals
}

test
shared void baseExpression() {
    assertEquals {
        actual = createBaseExpression("null");
        expected = BaseExpression(MemberNameWithTypeArguments(LIdentifier("null")));
    };
    assertEquals {
        actual = createBaseExpression("String");
        expected = BaseExpression(TypeNameWithTypeArguments(UIdentifier("String")));
    };
    assertEquals {
        actual = createBaseExpression("emptyOrSingleton", "Integer");
        expected = BaseExpression(MemberNameWithTypeArguments(LIdentifier("emptyOrSingleton"), TypeArguments([TypeArgument(BaseType(TypeNameWithTypeArguments(UIdentifier("Integer"))))])));
        // this is why we need that function
    };
}