package org.eclipse.xtext.example.domainmodel.xpect.tests.modify;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.EcoreUtil2;
import org.eclipse.xtext.example.domainmodel.domainmodel.Entity;
import org.junit.runner.RunWith;
import org.xpect.expectation.IStringDiffExpectation;
import org.xpect.expectation.StringDiffExpectation;
import org.xpect.parameter.ParameterParser;
import org.xpect.runner.Xpect;
import org.xpect.runner.XpectRunner;
import org.xpect.setup.XpectSetup;
import org.xpect.xtext.lib.setup.XtextStandaloneSetup;
import org.xpect.xtext.lib.setup.XtextWorkspaceSetup;
import org.xpect.xtext.lib.util.EObjectFormatter;
import org.xpect.xtext.lib.util.TokenSerializer;
import org.xpect.xtext.lib.util.TokenSerializer.Token;
import com.google.inject.Inject;
@RunWith(XpectRunner.class)
@XpectSetup({ XtextStandaloneSetup.class, XtextWorkspaceSetup.class })
public class DeleteUtilTest {
@Inject
private TokenSerializer serializer;
@Inject
private DeleteUtil deleteUtil;
@Xpect
@ParameterParser(syntax = "'delete' arg1=OFFSET")
public void astDiff(@StringDiffExpectation IStringDiffExpectation expectation, EObject arg1) {
EObject root = EcoreUtil2.getRootContainer(arg1);
String beforeDeletion = new EObjectFormatter().apply(root);
deleteUtil.deleteEntity((Entity) arg1);
String afterDeletion = new EObjectFormatter().apply(root);
expectation.assertDiffEquals(beforeDeletion, afterDeletion);
}
@Xpect
@ParameterParser(syntax = "arg1=OFFSET")
public void delete(@StringDiffExpectation IStringDiffExpectation expectation, EObject arg1) {
EObject root = EcoreUtil2.getRootContainer(arg1);
List<Token> beforeDeletion = serializer.serialize(root);
deleteUtil.deleteEntity((Entity) arg1);
List<Token> afterDeletion = serializer.serialize(root);
expectation.assertDiffEquals(beforeDeletion, afterDeletion);
}
}