Search in sources :

Example 41 with Root

use of org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Root in project xtext-core by eclipse.

the class RegionAccessDiffTest method testInsertBeforeComment.

@Test
public void testInsertBeforeComment() throws Exception {
    String model = "8\n" + "/**/\n" + "a b\n";
    ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
    ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
        ITextRegionExtensions ext = access.getExtensions();
        ValueList rootObj = (ValueList) access.regionForRootEObject().getSemanticElement();
        ISemanticRegion a = ext.regionFor(rootObj).keyword("8").getNextSemanticRegion();
        ISemanticRegion b = a.getNextSemanticRegion();
        it.replace(a.getPreviousHiddenRegion(), a.getPreviousHiddenRegion(), b.getPreviousHiddenRegion(), b.getNextHiddenRegion());
    });
    String expectation = " 0 0   H\n" + "       B ValueList'[a, b]' Root\n" + " 0 1    S \"8\"        Root:'8'\n" + " 1 1 1  H \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + " 2 1 1  S \"b\"        ValueList:name+=ID\n" + " 3   1  H \"/**/\"     Comment:TerminalRule'ML_COMMENT' Association:PREVIOUS\n" + "   5    \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + " 8 1    S \"a\"        ValueList:name+=ID\n" + " 9 1    H \" \"        Whitespace:TerminalRule'WS'\n" + "10 1    S \"b\"        ValueList:name+=ID\n" + "       E ValueList'[a, b]' Root\n" + "11 0   H\n" + "------------ diff 1 ------------\n" + " 1   H \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "       \"/**/\"     Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + "   6   \"\\n" + "\"       Whitespace:TerminalRule'WS'\n";
    regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
Also used : ITextRegionAccess(org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess) ValueList(org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.ValueList) ITextRegionDiffBuilder(org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder) ISemanticRegion(org.eclipse.xtext.formatting2.regionaccess.ISemanticRegion) ITextRegionExtensions(org.eclipse.xtext.formatting2.regionaccess.ITextRegionExtensions) Test(org.junit.Test)

Example 42 with Root

use of org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Root in project xtext-core by eclipse.

the class RegionAccessDiffTest method testSerializeChildObject.

@Test
public void testSerializeChildObject() throws Exception {
    String model = "2 foo\n";
    ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
    ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
        Delegate child = ((Delegation) access.regionForRootEObject().getSemanticElement()).getDelegate();
        IEObjectRegion childRegion = access.regionForEObject(child);
        child.setName("baaaz");
        ITextRegionAccess textRegions = this.serializer.serializeToRegions(child);
        it.replace(childRegion.getPreviousHiddenRegion(), childRegion.getNextHiddenRegion(), textRegions);
    });
    String expectation = "0 0   H\n" + "      B Delegation Root\n" + "0 1    S \"2\"        Delegation:'2'\n" + "1 1 1  H \" \"        Whitespace:TerminalRule'WS'\n" + "       B Delegate'baaaz' Delegate path:Delegation/delegate\n" + "2 5 1   S \"baaaz\"    Delegate:name=ID\n" + "       E Delegate'baaaz' Delegate path:Delegation/delegate\n" + "      E Delegation Root\n" + "7 0 1 H\n" + "------------ diff 1 ------------\n" + "1 1  H \" \"        Whitespace:TerminalRule'WS'\n" + "2 3  S \"foo\"      Delegate:name=ID\n" + "5 0  H\n";
    regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
Also used : ITextRegionAccess(org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess) Delegate(org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Delegate) IEObjectRegion(org.eclipse.xtext.formatting2.regionaccess.IEObjectRegion) ITextRegionDiffBuilder(org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder) Delegation(org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Delegation) Test(org.junit.Test)

Example 43 with Root

use of org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Root in project xtext-core by eclipse.

the class RegionAccessCommentsTest method testDeleteFirstRegion4.

@Test
public void testDeleteFirstRegion4() throws Exception {
    String model = "/*h*/\n" + "/*81*/\n" + "/*82*/\n" + "\n" + "8 //8\n" + "/*a*/\n" + "a\n";
    ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
    ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
        ISemanticRegion foo = access.regionForRootEObject().getAllRegionsFor().keyword("8");
        it.remove(foo);
    });
    String expectation = " 0    1 H \"/*h*/\"    Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + "        \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "        \"/*81*/\"   Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + "        \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "        \"/*82*/\"   Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + "        \"\\n" + "\\n" + "\"     Whitespace:TerminalRule'WS'\n" + "        \"/*a*/\"    Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + "   27   \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "        B ValueList'[a]' Root\n" + "27  1    S \"a\"        ValueList:name+=ID\n" + "        E ValueList'[a]' Root\n" + "28  0   H\n" + "------------ diff 1 ------------\n" + " 0    H \"/*h*/\"    Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + "        \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "        \"/*81*/\"   Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + "        \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "        \"/*82*/\"   Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + "   21   \"\\n" + "\\n" + "\"     Whitespace:TerminalRule'WS'\n" + "21  1 S \"8\"        Root:'8'\n" + "22    H \" \"        Whitespace:TerminalRule'WS'\n" + "        \"//8\\n" + "\"    Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + "        \"/*a*/\"    Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + "   11   \"\\n" + "\"       Whitespace:TerminalRule'WS'\n";
    regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
Also used : ITextRegionAccess(org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess) ITextRegionDiffBuilder(org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder) ISemanticRegion(org.eclipse.xtext.formatting2.regionaccess.ISemanticRegion) Test(org.junit.Test)

Example 44 with Root

use of org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Root in project xtext-core by eclipse.

the class RegionAccessCommentsTest method testMove.

@Test
public void testMove() throws Exception {
    String model = "8//8\n" + "/*a*/\n" + "a//a\n" + "/*b*/\n" + "b//b\n" + "/*c*/\n" + "c\n";
    ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
    ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
        List<ISemanticRegion> regions = access.regionForRootEObject().getAllRegionsFor().features(RegionaccesstestlanguagePackage.Literals.VALUE_LIST__NAME);
        ISemanticRegion a = regions.get(0);
        ISemanticRegion b = regions.get(1);
        it.move(b.getNextHiddenRegion(), a.getPreviousHiddenRegion(), a.getNextHiddenRegion());
    });
    String expectation = " 0  0   H\n" + "        B ValueList'[a, b, c]' Root\n" + " 0  1    S \"8\"        Root:'8'\n" + " 1    1  H \"//8\\n" + "\"    Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + "         \"/*b*/\"    Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + "   10    \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "11  1    S \"b\"        ValueList:name+=ID\n" + "12    2  H \"//b\\n" + "\"    Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + "         \"/*a*/\"    Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + "   10    \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "22  1 2  S \"a\"        ValueList:name+=ID\n" + "23    2  H \"//a\\n" + "\"    Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + "         \"/*c*/\"    Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + "   10    \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "33  1    S \"c\"        ValueList:name+=ID\n" + "        E ValueList'[a, b, c]' Root\n" + "34  0   H\n" + "------------ diff 1 ------------\n" + " 1    H \"//8\\n" + "\"    Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + "        \"/*a*/\"    Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + "   10   \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "11  1 S \"a\"        ValueList:name+=ID\n" + "12    H \"//a\\n" + "\"    Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + "        \"/*b*/\"    Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + "   10   \"\\n" + "\"       Whitespace:TerminalRule'WS'\n" + "------------ diff 2 ------------\n" + "23    H \"//b\\n" + "\"    Comment:TerminalRule'SL_COMMENT' Association:PREVIOUS\n" + "        \"/*c*/\"    Comment:TerminalRule'ML_COMMENT' Association:NEXT\n" + "   10   \"\\n" + "\"       Whitespace:TerminalRule'WS'\n";
    regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
Also used : ITextRegionAccess(org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess) ITextRegionDiffBuilder(org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder) ISemanticRegion(org.eclipse.xtext.formatting2.regionaccess.ISemanticRegion) Test(org.junit.Test)

Example 45 with Root

use of org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Root in project xtext-core by eclipse.

the class RegionAccessBuilderTest method testMixedUnassignedDatatype1.

@Test
public void testMixedUnassignedDatatype1() throws Exception {
    String model = "6 (unassigned datatype foo)\n".trim();
    String expectation = " 0  0 H\n" + "      B Action     Root\n" + " 0  1  S \"6\"        Root:'6'\n" + " 1  1  H \" \"        Whitespace:TerminalRule'WS'\n" + " 2  1  S \"(\"        Mixed:'('\n" + " 3  0  H\n" + " 3 10  S \"unass...\" Mixed:'unassigned'\n" + "13  1  H \" \"        Whitespace:TerminalRule'WS'\n" + "14 12  S \"datat...\" Mixed:Datatype\n" + "26  0  H\n" + "26  1  S \")\"        Mixed:')'\n" + "      E Action     Root\n" + "27  0 H\n";
    assertRegions(model, expectation);
}
Also used : TextRegionAccessToString(org.eclipse.xtext.formatting2.debug.TextRegionAccessToString) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)47 TextRegionAccessToString (org.eclipse.xtext.formatting2.debug.TextRegionAccessToString)32 ITextRegionAccess (org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess)21 ITextRegionDiffBuilder (org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder)16 ISemanticRegion (org.eclipse.xtext.formatting2.regionaccess.ISemanticRegion)14 ITextRegionExtensions (org.eclipse.xtext.formatting2.regionaccess.ITextRegionExtensions)6 Root (org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Root)5 IEObjectRegion (org.eclipse.xtext.formatting2.regionaccess.IEObjectRegion)4 ValueList (org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.ValueList)4 EObject (org.eclipse.emf.ecore.EObject)3 Delegate (org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Delegate)3 PrefixedUnassigned (org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.PrefixedUnassigned)3 Delegation (org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Delegation)2 EPackage (org.eclipse.emf.ecore.EPackage)1 EReference (org.eclipse.emf.ecore.EReference)1 EStructuralFeature (org.eclipse.emf.ecore.EStructuralFeature)1 Action (org.eclipse.xtext.Action)1 Parameter (org.eclipse.xtext.Parameter)1 ParserRule (org.eclipse.xtext.ParserRule)1 IHiddenRegion (org.eclipse.xtext.formatting2.regionaccess.IHiddenRegion)1