CeylonExpressionTransformer.ceylon
import ceylon.test {
test,
assertEquals
}
import ceylon.file {
File,
parsePath
}
import ceylon.ast.core {
CeylonExpressionTransformer
}
import ceylon.ast.samples.completeCompilationUnit {
completeCompilationUnit
}
"Tests that [[CeylonExpressionTransformer]] returns a valid expression."
native
test
shared void testCeylonExpressionTransformer();
native ("js")
test
shared void testCeylonExpressionTransformer() {
// weak test: test only that it doesn’t crash
completeCompilationUnit.transform(CeylonExpressionTransformer());
// TODO: should eventually be possible on JS backend as well;
// see ceylon/ceylon-sdk#239
}
native ("jvm")
test
shared void testCeylonExpressionTransformer() {
assert (is File completeCUFile = parsePath("source/ceylon/ast/samples/completeCompilationUnit/completeCompilationUnit.ceylon").resource);
String completeCUCode;
try (r = completeCUFile.Reader("UTF-8")) {
StringBuilder completeCUCodeSb = StringBuilder();
/*
Structure:
bla bla bla
/* BEGIN */ code
code code /* END */ bla
bla bla
*/
while (exists l = r.readLine()) {
if (exists i = l.firstInclusion("/* BEGIN */")) {
completeCUCodeSb.append(l[(i + "/* BEGIN */".size)...]);
completeCUCodeSb.appendNewline();
break;
}
}
while (exists l = r.readLine()) {
if (exists i = l.firstInclusion("/* END */")) {
completeCUCodeSb.append(l[... i - 1]);
break;
} else {
completeCUCodeSb.append(l);
completeCUCodeSb.appendNewline();
}
}
completeCUCode = completeCUCodeSb.string.trimmed;
}
assertEquals {
expected = completeCUCode;
actual = completeCompilationUnit.transform(CeylonExpressionTransformer());
};
}