diff --git a/src/main/java/org/cqfn/astranaut/core/Replace.java b/src/main/java/org/cqfn/astranaut/core/Replace.java index 57159fb..7f76983 100644 --- a/src/main/java/org/cqfn/astranaut/core/Replace.java +++ b/src/main/java/org/cqfn/astranaut/core/Replace.java @@ -89,7 +89,7 @@ public String getData() { @Override public int getChildCount() { - return 1; + return 2; } @Override diff --git a/src/test/java/org/cqfn/astranaut/core/ActionTest.java b/src/test/java/org/cqfn/astranaut/core/ActionTest.java index 8a98949..257bc70 100644 --- a/src/test/java/org/cqfn/astranaut/core/ActionTest.java +++ b/src/test/java/org/cqfn/astranaut/core/ActionTest.java @@ -41,6 +41,16 @@ class ActionTest { */ private static final String INSERT_TYPE = "Insert"; + /** + * The 'Replace' type. + */ + private static final String REPLACE_TYPE = "Replace"; + + /** + * The 'Delete' type. + */ + private static final String DELETE_TYPE = "Delete"; + /** * The 'color' property. */ @@ -86,4 +96,78 @@ void testInsertAction() { created = builder.createNode(); Assertions.assertEquals(ActionTest.INSERT_TYPE, created.getTypeName()); } + + /** + * Testing {@link Replace} action. + */ + @Test + void testReplaceAction() { + final Node before = LittleTrees.createVariable("x"); + final Node after = LittleTrees.createIntegerLiteral(0); + final Action action = new Replace(before, after); + Assertions.assertEquals(EmptyFragment.INSTANCE, action.getFragment()); + Assertions.assertEquals("", action.getData()); + Assertions.assertEquals(2, action.getChildCount()); + Assertions.assertEquals(before, action.getChild(0)); + Assertions.assertEquals(after, action.getChild(1)); + Assertions.assertNull(action.getChild(2)); + final Type type = action.getType(); + Assertions.assertEquals(ActionTest.REPLACE_TYPE, type.getName()); + final List descriptors = type.getChildTypes(); + Assertions.assertFalse(descriptors.isEmpty()); + final List hierarchy = type.getHierarchy(); + Assertions.assertFalse(hierarchy.isEmpty()); + Assertions.assertEquals(type.getName(), hierarchy.get(0)); + Assertions.assertEquals( + ActionTest.EXPECTED_COLOR, + type.getProperty(ActionTest.COLOR_PROPERTY) + ); + final Builder builder = type.createBuilder(); + builder.setFragment(EmptyFragment.INSTANCE); + Assertions.assertTrue(builder.setData("")); + Assertions.assertFalse(builder.setData("it's a kind of magic")); + Assertions.assertFalse(builder.isValid()); + Node created = builder.createNode(); + Assertions.assertEquals(EmptyTree.INSTANCE, created); + Assertions.assertTrue(builder.setChildrenList(Arrays.asList(before, after))); + Assertions.assertFalse(builder.setChildrenList(Collections.singletonList(before))); + created = builder.createNode(); + Assertions.assertEquals(ActionTest.REPLACE_TYPE, created.getTypeName()); + } + + /** + * Testing {@link Delete} action. + */ + @Test + void testDeleteAction() { + final Node deleted = LittleTrees.createReturnStatement(null); + final Action action = new Delete(deleted); + Assertions.assertEquals(EmptyFragment.INSTANCE, action.getFragment()); + Assertions.assertEquals("", action.getData()); + Assertions.assertEquals(1, action.getChildCount()); + Assertions.assertEquals(deleted, action.getChild(0)); + Assertions.assertNull(action.getChild(1)); + final Type type = action.getType(); + Assertions.assertEquals(ActionTest.DELETE_TYPE, type.getName()); + final List descriptors = type.getChildTypes(); + Assertions.assertFalse(descriptors.isEmpty()); + final List hierarchy = type.getHierarchy(); + Assertions.assertFalse(hierarchy.isEmpty()); + Assertions.assertEquals(type.getName(), hierarchy.get(0)); + Assertions.assertEquals( + ActionTest.EXPECTED_COLOR, + type.getProperty(ActionTest.COLOR_PROPERTY) + ); + final Builder builder = type.createBuilder(); + builder.setFragment(EmptyFragment.INSTANCE); + Assertions.assertTrue(builder.setData("")); + Assertions.assertFalse(builder.setData("I hate syntax trees")); + Assertions.assertFalse(builder.isValid()); + Node created = builder.createNode(); + Assertions.assertEquals(EmptyTree.INSTANCE, created); + Assertions.assertTrue(builder.setChildrenList(Collections.singletonList(deleted))); + Assertions.assertFalse(builder.setChildrenList(Arrays.asList(deleted, deleted))); + created = builder.createNode(); + Assertions.assertEquals(ActionTest.DELETE_TYPE, created.getTypeName()); + } }