Search in sources :

Example 36 with Root

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

the class RegionAccessDiffTest method testSerializeRootObject.

@Test
public void testSerializeRootObject() throws Exception {
    String model = "3 foo\n";
    ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
    ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
        IEObjectRegion root = access.regionForRootEObject();
        Delegate rootObj = (Delegate) root.getSemanticElement();
        rootObj.setName("baaaz");
        ITextRegionAccess textRegions = this.serializer.serializeToRegions(rootObj);
        it.replace(root.getPreviousHiddenRegion(), root.getNextHiddenRegion(), textRegions);
    });
    String expectation = "0 0 1 H\n" + "      B Delegate'baaaz' Root\n" + "0 1 1  S \"3\"        Unassigned:'3'\n" + "1 1 1  H \" \"        Whitespace:TerminalRule'WS'\n" + "2 5 1  S \"baaaz\"    Delegate:name=ID\n" + "      E Delegate'baaaz' Root\n" + "7 0 1 H\n" + "------------ diff 1 ------------\n" + "0 0 H\n" + "0 1 S \"3\"        Unassigned:'3'\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) IEObjectRegion(org.eclipse.xtext.formatting2.regionaccess.IEObjectRegion) Delegate(org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.Delegate) ITextRegionDiffBuilder(org.eclipse.xtext.formatting2.regionaccess.ITextRegionDiffBuilder) Test(org.junit.Test)

Example 37 with Root

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

the class RegionAccessDiffTest method testInsertReplaceReplace.

@Test
public void testInsertReplaceReplace() throws Exception {
    String model = "8 a\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();
        it.replace(a, "b");
        it.replace(a, "c");
    });
    String expectation = "0 0   H\n" + "      B ValueList'[a]' Root\n" + "0 1    S \"8\"        Root:'8'\n" + "1 1    H \" \"        Whitespace:TerminalRule'WS'\n" + "2 1 1  S \"c\"        ValueList:name+=ID\n" + "      E ValueList'[a]' Root\n" + "3 0   H\n" + "------------ diff 1 ------------\n" + "2 1 S \"a\"        ValueList:name+=ID\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 38 with Root

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

the class RegionAccessDiffTest method testDeleteTwo.

@Test
public void testDeleteTwo() throws Exception {
    String model = "4/*1*/prefix/*2*/foo/*3*/\n";
    ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
    ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
        ITextRegionExtensions ext = access.getExtensions();
        PrefixedUnassigned rootObj = (PrefixedUnassigned) access.regionForRootEObject().getSemanticElement();
        ISemanticRegion prefix = ext.regionFor(rootObj.getDelegate()).keyword("prefix");
        ISemanticRegion foo = ext.regionFor(rootObj.getDelegate()).feature(RegionaccesstestlanguagePackage.Literals.DELEGATE__NAME);
        it.remove(prefix.getPreviousHiddenRegion(), foo.getNextHiddenRegion());
    });
    String expectation = " 0  0   H\n" + "        B PrefixedUnassigned Root\n" + " 0  1    S \"4\"        PrefixedUnassigned:'4'\n" + "        E PrefixedUnassigned Root\n" + " 1    1 H \"/*1*/\"    Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + "   10   \"/*3*/\"    Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + "------------ diff 1 ------------\n" + " 1  5  H \"/*1*/\"    Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + " 6  6  S \"prefix\"   PrefixedDelegate:'prefix'\n" + "12  5  H \"/*2*/\"    Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n" + "17  3  S \"foo\"      Delegate:name=ID\n" + "20  5  H \"/*3*/\"    Comment:TerminalRule'ML_COMMENT' Association:CONTAINER\n";
    regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
Also used : ITextRegionAccess(org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess) PrefixedUnassigned(org.eclipse.xtext.formatting2.regionaccess.internal.regionaccesstestlanguage.PrefixedUnassigned) 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 39 with Root

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

the class RegionAccessDiffTest method testInsertInsertReplace.

@Test
public void testInsertInsertReplace() throws Exception {
    String model = "8 a\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();
        it.replace(a.getNextHiddenRegion(), a.getNextHiddenRegion(), a.getPreviousHiddenRegion(), a.getNextHiddenRegion());
        it.replace(a.getNextHiddenRegion(), a.getNextHiddenRegion(), a.getPreviousHiddenRegion(), a.getNextHiddenRegion());
        it.replace(a, "new");
    });
    String expectation = " 0 0   H\n" + "       B ValueList'[a]' Root\n" + " 0 1    S \"8\"        Root:'8'\n" + " 1 1    H \" \"        Whitespace:TerminalRule'WS'\n" + " 2 3 2  S \"new\"      ValueList:name+=ID\n" + " 5 0 2  H\n" + " 5 3 2  S \"new\"      ValueList:name+=ID\n" + " 8 0 2  H\n" + " 8 3 2  S \"new\"      ValueList:name+=ID\n" + "       E ValueList'[a]' Root\n" + "11 0 2 H\n" + "------------ diff 1 ------------\n" + " 2 1 S \"a\"        ValueList:name+=ID\n" + "------------ diff 2 ------------\n" + " 2 1  S \"a\"        ValueList:name+=ID\n" + " 3 0  H\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 40 with Root

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

the class RegionAccessDiffTest method testSingleSemanticToken.

@Test
public void testSingleSemanticToken() throws Exception {
    String model = "1 foo\n";
    ITextRegionAccess access = regionAccessTestHelper.toTextRegionAccess(model);
    ITextRegionAccess modifiedAccess = regionAccessTestHelper.modify(access, (ITextRegionDiffBuilder it) -> {
        ITextRegionExtensions ext = access.getExtensions();
        EObject root = access.regionForRootEObject().getSemanticElement();
        ISemanticRegion foo = ext.allRegionsFor(root).feature(RegionaccesstestlanguagePackage.Literals.SIMPLE__NAME);
        it.replace(foo, "baaar");
    });
    String expectation = "0 0   H\n" + "      B Simple'foo' Root\n" + "0 1    S \"1\"        Simple:'1'\n" + "1 1    H \" \"        Whitespace:TerminalRule'WS'\n" + "2 5 1  S \"baaar\"    Simple:name=ID\n" + "      E Simple'foo' Root\n" + "7 0   H\n" + "------------ diff 1 ------------\n" + "2 3 S \"foo\"      Simple:name=ID\n";
    regionAccessTestHelper.assertRegions(modifiedAccess, expectation);
}
Also used : ITextRegionAccess(org.eclipse.xtext.formatting2.regionaccess.ITextRegionAccess) EObject(org.eclipse.emf.ecore.EObject) 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)

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