2016-09-11 15 views
0

У меня есть этот странный белый пробел, и я собираюсь его протестировать. Сейчас грамматика проста (база на терминалах)Xtext: Тестирование пробелов - отсутствует RULE_BEGIN в JUnit

Model: 
    {Model} 
BEGIN 
    package=PackageDeclaration? 
    class=ClassDeclaration? 
END 
methods+=MethodDeclaration* 
; 

PackageDeclaration: 'package' name=ID; 
ClassDeclaration: 'class' name=ID; 
MethodDeclaration: 'def' name=ID; 

terminal BEGIN: 
    'synthetic:BEGIN'; 

terminal END: 
    'synthetic:END'; 

И теперь, когда дело доходит до JUnit:

@Test 
def void packageSimpleNoErrors() { 
    val result = ''' 

     package testPack 
     '''.parse 
    // Parsed without errors 
    result.assertNoErrors 
} 

Multiline строка 2x новая строка, вкладка 'пакет testPack' и новая линия. Проверено с помощью метода debug in parse.

Если я так выразился в редакторе Eclipse, это совершенно нормально, никаких проблем. Но я не могу сделать JUnit, чтобы пройти этот тест:

java.lang.AssertionError: Expected no errors, 
but got :ERROR (org.eclipse.xtext.diagnostics.Diagnostic.Syntax) 
'missing RULE_BEGIN at 'package’’ on PackageDeclaration, 
ERROR (org.eclipse.xtext.diagnostics.Diagnostic.Syntax) 
'mismatched input '<EOF>' expecting RULE_END' on Model 

На данный момент это не шоу Stoper в остальной части теста по этому коду смотрят хорошо, но я предпочитаю иметь их все зеленые :)

Thanks

ответ

0

проблема в том, что богатые пустые пустые строки теряются по намерениям. возможно, вам стоит прочитать модель из файла или попробовать что-то

''' 
«"\n"» 
    package testPack 
'''.parse 
+0

Спасибо, это решило мою проблему :) Но я надеюсь, что это не предпочтительное долгосрочное решение в Xtext. –