testRewriteReturnsEditor.ceylon
import ceylon.ast.samples.bodyReturnRewrite {
RewriteReturnsEditor
}
import ceylon.ast.core {
Block,
BooleanCondition,
Conditions,
ElseClause,
IfClause,
IfElse,
LIdentifier,
Return,
Specifier,
ValueSpecification
}
import ceylon.ast.create {
baseExpression
}
import ceylon.test {
test,
assertEquals
}
LIdentifier returnValueName = LIdentifier("returnValue");
RewriteReturnsEditor rewriter = RewriteReturnsEditor(returnValueName);
void compare(Block input, Block expectedOutput, String? message = null) {
assertEquals {
expected = expectedOutput;
actual = input.transform(rewriter);
message = message;
};
}
test
shared void testRewriteReturnsEditor() {
value trueConditions = Conditions([BooleanCondition(baseExpression("true"))]);
compare {
Block([]);
Block([]);
"Empty body";
};
compare {
Block([
IfElse {
ifClause = IfClause(trueConditions, Block([
Return(baseExpression("a"))
]));
elseClause = ElseClause(Block([
Return(baseExpression("b"))
]));
}]);
Block([
IfElse {
ifClause = IfClause(trueConditions, Block([
ValueSpecification(returnValueName, Specifier(baseExpression("a")))
]));
elseClause = ElseClause(Block([
ValueSpecification(returnValueName, Specifier(baseExpression("b")))
]));
}]);
};
}