public void t09_Parse_ClassDiagram_Containing_Two_Associated_Classes_With_Roles()
        {
            var tokens = new ClassDiagramTokenStream {
                TokenType.BracketOpen.Token(), "a".Token(), TokenType.BracketClose.Token(),
                "-".Token(), "associationName".Token(), ">".Token(),
                TokenType.BracketOpen.Token(), "b".Token(), TokenType.BracketClose.Token(),
            };

            var parser = new ClassDiagramParser(tokens);
            var cd     = parser.ParseClassDiagram();

            Assert.IsNotNull(cd, "parsing failed");

            var classes = cd.Classes.ToList();

            Assert.AreEqual(2, classes.Count, "wrong class count");
            Assert.AreEqual("a", classes[0].Name, "unexpected class name");
            Assert.AreEqual("b", classes[1].Name, "unexpected class name");

            var assocs = cd.Associations.ToList();

            Assert.AreEqual(1, assocs.Count, "wrong association count");
            Assert.AreEqual("a", assocs[0].Source.Name, "Source name wrong");
            Assert.AreEqual("b", assocs[0].Target.Name, "Target name wrong");
            Assert.AreEqual(AssociationKind.Directed, assocs[0].Kind, "wrong association kind");
            Assert.AreEqual("associationName", assocs[0].TargetRole, "unexpected target role");
        }
        public void t11_Parse_Class_With_Multiple_Fields()
        {
            var tokens = TokenStreamBuilder.Class("className",
                                                  TokenStreamBuilder.CombineTokenStreams(
                                                      TokenStreamBuilder.Field("fieldName", "fieldType"),
                                                      new ClassDiagramTokenStream {
                TokenType.Comma.Token()
            },                                                                                                 // TODO single-token streams.
                                                      TokenStreamBuilder.Field("fieldName2", "fieldType2")
                                                      )
                                                  );

            var classDiagram = new ClassDiagramParser(tokens).ParseClassDiagram();
            var c            = classDiagram.Classes.ToList()[0];

            Assert.IsNotNull(classDiagram, "failed to parse the class");
            Assert.AreEqual("className", c.Name, "name wrong");
            Assert.IsNotNull(c.Fields, "fields MUST NOT be null");
            var l = c.Fields.ToList();

            Assert.AreEqual(2, l.Count, "There should be exactly one field");
            var f = l[0];

            Assert.AreEqual("fieldName", f.Name, "field name wrong");
            Assert.AreEqual("fieldType", f.Type, "field type wrong");
            f = l[1];
            Assert.AreEqual("fieldName2", f.Name, "2nd field name wrong");
            Assert.AreEqual("fieldType2", f.Type, "2nd field type wrong");
        }
        public void t08_Parse_ClassDiagram_Containing_Two_Associated_Classes_With_Multiplicities_Numbers(string sourceFrom, string sourceTo, string targetFrom, string targetTo)
        {
            var tokens = new ClassDiagramTokenStream();

            tokens.AddRange(TokenStreamBuilder.Class("a"));

            tokens.AddRange(new[] { sourceFrom.Token() });
            if (sourceTo != null)
            {
                tokens.AddRange(new[] { "..".Token(), sourceTo.Token() });
            }

            tokens.AddRange(new[] { TokenType.Dash.Token() });

            tokens.AddRange(new[] { targetFrom.Token() });
            if (targetTo != null)
            {
                tokens.AddRange(new[] { "..".Token(), targetTo.Token() });
            }

            tokens.AddRange(TokenStreamBuilder.Class("b"));

            var parser = new ClassDiagramParser(tokens);
            var cd     = parser.ParseClassDiagram();
            var assoc  = t08_check(cd);

            checkMultiplicityKind(assoc.SourceMultiplicity.FromKind, sourceFrom, "source from");
            checkMultiplicityKind(assoc.SourceMultiplicity.ToKind, sourceTo, "source to");
            checkMultiplicityKind(assoc.TargetMultiplicity.FromKind, targetFrom, "target from");
            checkMultiplicityKind(assoc.TargetMultiplicity.ToKind, targetTo, "target to");

            Assert.AreEqual(sourceFrom, assoc.SourceMultiplicity.From, "source wrong value");
            Assert.AreEqual(targetFrom, assoc.TargetMultiplicity.From, "target wrong value");
        }
        public void t14_Parse_Method_VisibilityModifier(string modifier, VisibilityModifier expectedVisibility)
        {
            var tokens       = TokenStreamBuilder.FromStrings("[", "a", "|", "|", modifier, "methodName", "(", ")", "]");
            var classDiagram = new ClassDiagramParser(tokens).ParseClassDiagram();
            var m            = classDiagram.Classes.ToList()[0].Methods.ToList()[0];

            Assert.AreEqual(expectedVisibility, m.Visibility, "unexpected visibility");
        }
        public void t14_Parse_Class_With_Method()
        {
            // [className||-methodName(paramType paramName)]
            var tokens = TokenStreamBuilder.FromStrings("[", "className", "|", "|", "-", "methodName", "(", "paramType", "paramName", ")", "]");

            var classDiagram = new ClassDiagramParser(tokens).ParseClassDiagram();

            Assert.IsNotNull(classDiagram, "class parse error");
        }
        public void t14_Parse_Method_ReturnType()
        {
            var tokens       = TokenStreamBuilder.FromStrings("[", "a", "|", "|", "methodName", "(", ")", ":", "returntype", "]");
            var classDiagram = new ClassDiagramParser(tokens).ParseClassDiagram();
            var m            = classDiagram.Classes.ToList()[0].Methods.ToList()[0];

            Assert.IsNotNull(classDiagram, "method parse error");
            Assert.AreEqual("returntype", m.ReturnType);
        }
        public void t13_Parse_Field_With_AccessModifier(String modifier, VisibilityModifier expectedVm)
        {
            var tokens = TokenStreamBuilder.FromStrings("[", "a", "|", modifier, "fieldName", ":", "fieldType", "]");

            var classDiagram = new ClassDiagramParser(tokens).ParseClassDiagram();
            var f            = classDiagram.Classes.ToList()[0].Fields.ToList()[0];

            Assert.IsNotNull(classDiagram, "field parsing failed");
            Assert.AreEqual("fieldName", f.Name);
            Assert.AreEqual("fieldType", f.Type);
            Assert.AreEqual(expectedVm, f.Visibility, "wrong visibility modifier");
        }
        public void t14_Parse_Method_Parameter(string parameterType)
        {
            var tokens = TokenStreamBuilder.FromStrings("[", "c", "|", "|", "methodName", "(", parameterType, "parameter", ")", "]");

            var classDiagram = new ClassDiagramParser(tokens).ParseClassDiagram();
            var m            = classDiagram.Classes.ToList()[0].Methods.ToList()[0];

            Assert.IsNotNull(classDiagram, "method parse error");
            var parameters = new List <MethodParameter>(m.Parameters);

            Assert.AreEqual(1, parameters.Count, "wrong parameter count");
            Assert.AreEqual("parameter", parameters[0].Name, "wrong name");
            Assert.AreEqual(parameterType, parameters[0].Type, "wrong type");
        }
        public void t06_Parse_ClassDiagram_Containing_One_Class()
        {
            var tokens = TokenStreamBuilder.FromStrings("[", "a", "]");

            var parser = new ClassDiagramParser(tokens);
            var cd     = parser.ParseClassDiagram();

            Assert.IsNotNull(cd, "parsing failed");

            var classes = cd.Classes.ToList();

            Assert.AreEqual(1, classes.Count, "wrong class count");
            Assert.AreEqual("a", classes[0].Name, "unexpected class name");
        }
Esempio n. 10
0
        public void t16_Class_No_Fields_Just_Methods()
        {
            // [a]-[b]-[c]
            var tokens = TokenStreamBuilder.CombineTokenStreams(
                TokenStreamBuilder.FromStrings("[", "a", "|", "|"),
                TokenStreamBuilder.Method("methodName"),
                TokenStreamBuilder.FromStrings("]")
                );

            var classDiagram = new ClassDiagramParser(tokens).ParseClassDiagram();
            var c            = classDiagram.Classes.ToList()[0];

            Assert.IsNotNull(classDiagram, "class parse error");
            Assert.AreEqual(0, c.Fields.Count(), "there should be no fields");
            Assert.AreEqual(1, c.Methods.Count(), "there should be one method");
            AssertMethod(c.Methods.ToArray()[0], VisibilityModifier.Public, "methodName");
        }
Esempio n. 11
0
        public void t06_Parse_ClassDiagram_Containing_Two_Classes()
        {
            var tokens = new ClassDiagramTokenStream {
                TokenType.BracketOpen.Token(), "a".Token(), TokenType.BracketClose.Token(),
                TokenType.Comma.Token(),
                TokenType.BracketOpen.Token(), "b".Token(), TokenType.BracketClose.Token(),
            };
            var parser = new ClassDiagramParser(tokens);
            var cd     = parser.ParseClassDiagram();

            Assert.IsNotNull(cd, "parsing failed");

            var classes = cd.Classes.ToList();

            Assert.AreEqual(2, classes.Count, "wrong class count");
            Assert.AreEqual("a", classes[0].Name, "unexpected class name");
            Assert.AreEqual("b", classes[1].Name, "unexpected class name");
        }
Esempio n. 12
0
        public void t15_Parse_Three_Associated_Classes()
        {
            // [a]-[b]-[c]
            var tokens = TokenStreamBuilder.CombineTokenStreams(
                TokenStreamBuilder.Class("a"),
                TokenStreamBuilder.PureAssociation("-"),
                TokenStreamBuilder.Class("b"),
                TokenStreamBuilder.PureAssociation("-"),
                TokenStreamBuilder.Class("c")
                );

            var cd = new ClassDiagramParser(tokens).ParseClassDiagram();

            Assert.IsNotNull(cd, "class diagram1 parse error");
            Assert.AreEqual(3, cd.Classes.Count(), "wrong class count");
            Assert.AreEqual(2, cd.Associations.Count(), "wrong association count");
            // TODO more tests...
        }
Esempio n. 13
0
        public void t11_Parse_Class_With_Field()
        {
            var tokens = TokenStreamBuilder.Class("className", TokenStreamBuilder.Field("fieldName", "fieldType"));

            var classDiagram = new ClassDiagramParser(tokens).ParseClassDiagram();
            var c            = classDiagram.Classes.ToList()[0];

            Assert.IsNotNull(classDiagram, "failed to parse the class");
            Assert.AreEqual("className", c.Name, "name wrong");
            Assert.IsNotNull(c.Fields, "fields MUST NOT be null");
            var l = c.Fields.ToList();

            Assert.AreEqual(1, l.Count, "There should be exactly one field");
            var f = l[0];

            Assert.AreEqual("fieldName", f.Name, "field name wrong");
            Assert.AreEqual("fieldType", f.Type, "field type wrong");
        }
Esempio n. 14
0
        private void t07_Parse_ClassDiagram_Containing_Two_Associated_Classes(ClassDiagramTokenStream genericTokens, AssociationKind expectedKind)
        {
            var parser = new ClassDiagramParser(genericTokens);
            var cd     = parser.ParseClassDiagram();

            Assert.IsNotNull(cd, "parsing failed");

            var classes = cd.Classes.ToList();

            Assert.AreEqual(2, classes.Count, "wrong class count");
            Assert.AreEqual("a", classes[0].Name, "unexpected class name");
            Assert.AreEqual("b", classes[1].Name, "unexpected class name");

            var assocs = cd.Associations.ToList();

            Assert.AreEqual(1, assocs.Count, "wrong association count");
            Assert.AreEqual("a", assocs[0].Source.Name, "Source name wrong");
            Assert.AreEqual("b", assocs[0].Target.Name, "Target name wrong");
            Assert.AreEqual(expectedKind, assocs[0].Kind, "wrong association kind");
        }
Esempio n. 15
0
        /// <default>
        ///     <summary>
        ///     Creates the class diagram for the given <c>SDType</c>.
        ///     </summary>
        ///     <param name="type">Create the class diagram for this <c>SDType</c>.</param>
        ///     <returns>The class diagram for the given <c>SDType</c>.</returns>
        /// </default>
        /// <de>
        ///     <summary>
        ///     Erstellt das Klassendiagramm für den gegebenen <c>SDType</c>.
        ///     </summary>
        ///     <param name="type">Erstellt das Klassendiagramm für diesen <c>SDType</c>.</param>
        ///     <returns>Das Klassendiagramm für den <c>SDType</c>.</returns>
        /// </de>
        public static ISDDiagram GetClassDiagram(this SDType type)
        {
            var classDiagramParser = new ClassDiagramParser();

            return(classDiagramParser.CreateClassDiagram(type));
        }