parserImport XOCL; parserImport Parser::BNF; import XOCL; import IO; context Tests @Class Test extends NamedElement, Sugar @Attribute test : Performable end @Constructor(name,test) self.setName(name) end @Grammar extends OCL::OCL.grammar Test ::= name = Name test = Exp 'end' { Test(name,test) }. end @Operation desugar() [| @Operation (testOut:OutputChannel .TESTDATA) let time = Time() in format(testOut,"Start test ~S at ~S...~%",Seq{,xmf.date()}); try catch(x) format(testOut," error: ~S~%",Seq{x.toString()}) end; format(testOut,"End test ~S (~S).~%",Seq{, (Time() - time).pprint()}) end end.setProperty("isTest",true) |] end end