package com.sap.ide.cts.editor.integration.prettyprint;
import static org.junit.Assert.assertNotNull;
import org.junit.Before;
import org.junit.Test;
import com.sap.furcas.metamodel.FURCAS.textblocks.TextBlock;
import com.sap.ide.cts.editor.prettyprint.TcsPrettyPrinterTestHelper;
import com.sap.ide.cts.editor.prettyprint.imported.SyntaxAndModelMismatchException;
public class TestPrettyPrintClass extends CtsPrettyPrinterIntegrationTestBase {
NgpmPackage ngpmPackage;
@Before
public void init() {
ngpmPackage = connection.getPackage(NgpmPackage.PACKAGE_DESCRIPTOR);
initSyntax("Class");
}
@Test
public void testAssociation() throws SyntaxAndModelMismatchException {
final SapClass clazz = (SapClass) ngpmPackage.getData().getClasses()
.getSapClass().refCreateInstance();
clazz.setName("Humba");
clazz.setValueType(false);
Association assoc = (Association) ngpmPackage.getData().getClasses()
.getAssociation().refCreateInstance();
assoc.setName("unnamed");
AssociationEnd a1 = (AssociationEnd) ngpmPackage.getData().getClasses()
.getAssociationEnd().refCreateInstance();
a1.setName("a1");
a1.setNavigable(true);
AssociationEnd a2 = (AssociationEnd) ngpmPackage.getData().getClasses()
.getAssociationEnd().refCreateInstance();
a2.setContributesToEquality(true);
a2.setName("unnamed");
a2.setNavigable(false);
ClassTypeDefinition a1ctd = (ClassTypeDefinition) ngpmPackage.getData()
.getClasses().getClassTypeDefinition().refCreateInstance();
a1ctd.setLowerMultiplicity(0);
a1ctd.setUpperMultiplicity(1);
// a1ctd.setOrdered(true);
// a1ctd.setUnique(true);
a1ctd.setClazz(findClass("Class1"));
ClassTypeDefinition a2ctd = (ClassTypeDefinition) ngpmPackage.getData()
.getClasses().getClassTypeDefinition().refCreateInstance();
a2ctd.setLowerMultiplicity(0);
a2ctd.setUpperMultiplicity(-1);
// a2ctd.setOrdered(true);
// a2ctd.setUnique(true);
a2ctd.setClazz(clazz);
a1.setType(a1ctd);
a2.setType(a2ctd);
assoc.getEnds().add(a1);
assoc.getEnds().add(a2);
TextBlock output = TcsPrettyPrinterTestHelper.prettyPrintTextBlock(
clazz, syntax, new ClassParserFactory());
assertOutput(output, "Association");
}
@Test
public void testBoolean() throws SyntaxAndModelMismatchException {
SapClass clazz = findClass("Boolean");
assertNotNull(clazz);
TextBlock output = TcsPrettyPrinterTestHelper.prettyPrintTextBlock(
clazz, syntax, new ClassParserFactory());
assertOutput(output, "Boolean");
}
@Test
public void testNumber() throws SyntaxAndModelMismatchException {
SapClass clazz = findClass("Number");
assertNotNull(clazz);
TextBlock output = TcsPrettyPrinterTestHelper.prettyPrintTextBlock(
clazz, syntax, new ClassParserFactory());
assertOutput(output, "Number");
}
@Test
public void testMonthAndYear() throws SyntaxAndModelMismatchException {
SapClass clazz = findClass("MonthAndYear");
assertNotNull(clazz);
TextBlock output = TcsPrettyPrinterTestHelper.prettyPrintTextBlock(
clazz, syntax, new ClassParserFactory());
assertOutput(output, "MonthAndYear");
}
@Test
public void testOrganization() throws SyntaxAndModelMismatchException {
SapClass clazz = findClass("Organization");
assertNotNull(clazz);
TextBlock output = TcsPrettyPrinterTestHelper.prettyPrintTextBlock(
clazz, syntax, new ClassParserFactory());
assertOutput(output, "Organization");
}
private SapClass findClass(String classname) {
MQLProcessor mql = connection.getMQLProcessor();
MQLResultSet queryResult = mql.execute(
"select c from data::classes::SapClass as c where for c(name='"
+ classname + "')", mql.getQueryScopeProvider(
/* scopeInclusive */false, /* partitionScope */
null, (String[]) null));
SapClass clazz = (SapClass) queryResult.getRefObjects("c")[0];
return clazz;
}
}