コード例 #1
0
        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"));
        }
コード例 #2
0
        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());
        }