Identifier.ceylon
import ceylon.test {
test,
assertEquals,
assertNotEquals,
assertTrue
}
import ceylon.ast.core {
LIdentifier,
UIdentifier
}
test
shared void identifier() {
assertEquals(LIdentifier("name"), LIdentifier("name"), "LIdentifier equals without prefix");
assertEquals(UIdentifier("Name"), UIdentifier("Name"), "UIdentifier equals without prefix");
assertEquals(LIdentifier("Name", true), LIdentifier("Name", true), "LIdentifier equals with prefix");
assertEquals(UIdentifier("name", true), UIdentifier("name", true), "UIdentifier equals with prefix");
assertEquals(LIdentifier("name", true), LIdentifier("name", false), "LIdentifier equals with mixed prefix");
assertEquals(UIdentifier("Name", true), UIdentifier("Name", false), "UIdentifier equals with mixed prefix");
assertNotEquals(LIdentifier("name"), UIdentifier("name", true), "Identifier case not equals");
assertNotEquals(LIdentifier("name"), LIdentifier("text"), "LIdentifier name not equals");
assertNotEquals(UIdentifier("Name"), UIdentifier("Text"), "UIdentifier name not equals");
}
test
shared void identifierCopy() {
value lid = LIdentifier("lid");
value uid = UIdentifier("Uid");
value lidf = lid.copy("Lid", true);
value uidf = uid.copy("uid", true);
assertTrue(lidf.usePrefix, "uppercase LIdentifier needs prefix");
assertTrue(uidf.usePrefix, "lowercase UIdentifier needs prefix");
}
test
shared void identifierCeylonExpression() {
void test(LIdentifier|UIdentifier identifier) {
String type = identifier is LIdentifier then "LIdentifier" else "UIdentifier";
assertTrue(identifier.string in { for (name in { "\"``identifier.name``\"", "\"\"\"``identifier.name``\"\"\"" }) for (usePrefix in (identifier.usePrefix then { ", true" } else { "", ", false" })) "``type``(`` name + usePrefix ``)" }, "ceylonExpression of identifier '``identifier``'");
}
test(LIdentifier("lid"));
test(UIdentifier("Uid"));
test(LIdentifier("lid", true));
test(UIdentifier("Uid", true));
}