public void testTupleLiteralExp() { AstOclModelElementFactory factory1 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage()); OclExpression init1 = factory1.createIntegerLiteralExp(100, getClassifier("Integer")); VariableDeclaration part1 = factory1.createVariableDeclaration("a", getClassifier("Integer"), init1); OclExpression init2 = factory1.createRealLiteralExp("100.38", getClassifier("Real")); VariableDeclaration part2 = factory1.createVariableDeclaration("b", getClassifier("Real"), init2); OclExpression init3 = factory1.createBooleanLiteralExp(true, getClassifier("Boolean")); VariableDeclaration part3 = factory1.createVariableDeclaration("c", getClassifier("Boolean"), init3); List <object> parts = new List <object> (); parts.Add(part1); parts.Add(part2); parts.Add(part3); TupleTypeImpl tupleType = (TupleTypeImpl)factory1.createTupleType(); tupleType.addElement("a", getClassifier("Integer")); tupleType.addElement("b", getClassifier("Real")); tupleType.addElement("c", getClassifier("Boolean")); Assert.AreEqual("Tuple(a : Integer, b : Real, c : Boolean)", tupleType.getName()); // TuplePartType part1Type = factory1.createTuplePartType(tupleType, "a", getClassifier("Integer")); // TuplePartType part2Type = factory1.createTuplePartType(tupleType, "b", getClassifier("Real")); // TuplePartType part3Type = factory1.createTuplePartType(tupleType, "c", getClassifier("Boolean")); OclExpression exp = factory1.createTupleLiteralExp(parts, tupleType); Assert.AreEqual("Tuple{ a : Integer = 100, b : Real = 100.38, c : Boolean = True }", exp.ToString()); Assert.AreEqual("Tuple(a : Integer, b : Real, c : Boolean)", exp.getType().getName()); Assert.IsNotNull(exp.getType().lookupAttribute("a")); Assert.IsNull(exp.getType().lookupAttribute("d")); }
public void testTupleType() { AstOclModelElementFactory factory1 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage()); factory1.resetTypes(); TupleTypeImpl type1 = (TupleTypeImpl)factory1.createTupleType(); type1.addElement("a", getClassifier(("Integer"))); type1.addElement("b", getClassifier(("Boolean"))); TupleTypeImpl type2 = (TupleTypeImpl)factory1.createTupleType(); type2.addElement("a", getClassifier(("Real"))); type2.addElement("b", getClassifier(("Boolean"))); TupleTypeImpl type3 = (TupleTypeImpl)factory1.createTupleType(); type3.addElement("a", getClassifier(("Integer"))); type3.addElement("b", getClassifier(("Integer"))); TupleTypeImpl type4 = (TupleTypeImpl)factory1.createTupleType(); type4.addElement("a", getClassifier(("Real"))); type4.addElement("c", getClassifier(("Boolean"))); TupleTypeImpl type5 = (TupleTypeImpl)factory1.createTupleType(); type5.addElement("a", getClassifier(("Integer"))); type5.addElement("b", getClassifier(("Boolean"))); type5.addElement("c", getClassifier(("Boolean"))); TupleTypeImpl type6 = (TupleTypeImpl)factory1.createTupleType(); type6.addElement("a", getClassifier(("Integer"))); TupleTypeImpl type7 = (TupleTypeImpl)factory1.createTupleType(); type7.addElement("a", getClassifier(("Integer"))); type7.addElement("b", type1); Assert.IsTrue(type1.conformsTo(type2)); Assert.IsFalse(type1.conformsTo(type3)); Assert.IsFalse(type1.conformsTo(type4)); Assert.IsFalse(type1.conformsTo(type5)); Assert.IsFalse(type1.conformsTo(type6)); Assert.IsNotNull(type1.lookupAttribute("a")); Assert.AreEqual("Integer", type1.lookupAttribute("a").getFeatureType().getName()); Assert.AreEqual("Tuple(a : Integer, b : Boolean)", type1.getName()); Assert.AreEqual("Tuple(a : Integer, b : Boolean, c : Boolean)", type5.getName()); foreach (TuplePartType part in type1.getTupleParts()) { } CollectionTypeImpl col = (CollectionTypeImpl)factory1.createSetType(type1); Assert.AreEqual("Set(Tuple(a : Integer, b : Boolean))", col.getName()); CollectionTypeImpl col2 = (CollectionTypeImpl)factory1.createSetType(type7); Assert.AreEqual("Set(Tuple(a : Integer, b : Tuple(a : Integer, b : Boolean)))", col2.getName()); }