QualifiedExpression.ceylon

import ceylon.ast.core {
    BaseExpression,
    LIdentifier,
    MemberNameWithTypeArguments,
    QualifiedExpression,
    TypeNameWithTypeArguments,
    UIdentifier
}
import ceylon.ast.create {
    createBaseExpression=baseExpression,
    createQualifiedExpression=qualifiedExpression
}
import ceylon.test {
    test,
    assertEquals
}

test
shared void qualifiedExpression() {
    assertEquals {
        actual = createQualifiedExpression("x", "Y");
        expected = QualifiedExpression(BaseExpression(MemberNameWithTypeArguments(LIdentifier("x"))), TypeNameWithTypeArguments(UIdentifier("Y")));
    };
    assertEquals {
        actual = createQualifiedExpression(createQualifiedExpression(createBaseExpression("process"), "arguments"), "first");
        expected = QualifiedExpression {
            receiverExpression = QualifiedExpression {
                receiverExpression = BaseExpression(MemberNameWithTypeArguments(LIdentifier("process")));
                nameAndArgs = MemberNameWithTypeArguments(LIdentifier("arguments"));
            };
            nameAndArgs = MemberNameWithTypeArguments(LIdentifier("first"));
        };
        // this is why we need that function
    };
}