예제 #1
0
        public void ClassInheritsOneInterfaceTest()
        {
            var existingInterface = new Class
            {
                ClassId = new ClassId {
                    Id = 1, Name = "Test1"
                },
                Name      = "Test1",
                Interface = true
            };

            QueryParameters parameters = new QueryParameters();

            ParentClasses parentClassesStatement = new ParentClasses();

            Mock <ClassName> className = new Mock <ClassName>();

            className.Setup(cn => cn.Execute(It.Is <QueryParameters>(qp => parameters.Equals(qp)))).Returns(new QueryDTO {
                QueryClass = existingInterface
            });
            parentClassesStatement.Add(className.Object);

            QueryDTO     result        = parentClassesStatement.Execute(parameters);
            ISet <Class> parentClasses = result.Value;

            Assert.AreEqual(1, parentClasses.Count);
            Assert.IsTrue(parentClasses.Contains(existingInterface));
        }
예제 #2
0
        public void InterfaceInheritsOneClassAndTwoInterfacesTest()
        {
            var existingClass = new Class
            {
                ClassId = new ClassId {
                    Id = 1, Name = "Test1"
                },
                Name = "Test1"
            };

            var existingInterface = new Class
            {
                ClassId = new ClassId {
                    Id = 1, Name = "Test2"
                },
                Name      = "Test2",
                Interface = true
            };

            var existingOtherInterface = new Class
            {
                ClassId = new ClassId {
                    Id = 1, Name = "Test3"
                },
                Name      = "Test3",
                Interface = true
            };

            QueryParameters parameters = new QueryParameters();

            ParentClasses parentClassesStatement = new ParentClasses {
                InterfaceOnly = true
            };

            Mock <ClassName> className1 = new Mock <ClassName>();

            className1.Setup(cn => cn.Execute(It.Is <QueryParameters>(qp => parameters.Equals(qp)))).Returns(new QueryDTO {
                QueryClass = existingClass
            });
            parentClassesStatement.Add(className1.Object);

            Mock <ClassName> className2 = new Mock <ClassName>();

            className2.Setup(cn => cn.Execute(It.Is <QueryParameters>(qp => parameters.Equals(qp)))).Returns(new QueryDTO {
                QueryClass = existingInterface
            });
            parentClassesStatement.Add(className2.Object);

            Mock <ClassName> className3 = new Mock <ClassName>();

            className3.Setup(cn => cn.Execute(It.Is <QueryParameters>(qp => parameters.Equals(qp)))).Returns(new QueryDTO {
                QueryClass = existingOtherInterface
            });
            parentClassesStatement.Add(className3.Object);

            QueryDTO result = parentClassesStatement.Execute(parameters);

            Assert.AreEqual(ResultType.StringResult, result.Result.QueryResultType);
            Assert.AreEqual("An interface can't inherit from a class!", result.Result.StringOutput);
        }
예제 #3
0
        public object Get(ParentClasses request)
        {
            ApiUser hdUser = request.ApiUser;

            if (!request.class_id.HasValue)
            {
                return(new HttpError(HttpStatusCode.NotFound, "class not found"));
            }
            return(Models.Classes.ParentClasses(hdUser.OrganizationId, hdUser.DepartmentId, request.class_id.Value));
        }
예제 #4
0
        public override IQueryElement VisitParent_type([NotNull] QueryGrammarParser.Parent_typeContext context)
        {
            ParentClasses parentClasses = new ParentClasses();

            foreach (var className in context.NAME())
            {
                ClassName parentClassName = new ClassName();
                parentClassName.Name = className.GetText();
                parentClasses.Add(parentClassName);
            }

            return(parentClasses);
        }
예제 #5
0
        public void ClassInheritsTwoClassTest()
        {
            var existingClass = new Class
            {
                ClassId = new ClassId {
                    Id = 1, Name = "Test1"
                },
                Name = "Test1"
            };

            var otherExistingClass = new Class
            {
                ClassId = new ClassId {
                    Id = 1, Name = "Test2"
                },
                Name = "Test2"
            };

            QueryParameters parameters = new QueryParameters();

            ParentClasses parentClassesStatement = new ParentClasses();

            Mock <ClassName> className1 = new Mock <ClassName>();

            className1.Setup(cn => cn.Execute(It.Is <QueryParameters>(qp => parameters.Equals(qp)))).Returns(new QueryDTO {
                QueryClass = existingClass
            });
            parentClassesStatement.Add(className1.Object);

            Mock <ClassName> className2 = new Mock <ClassName>();

            className2.Setup(cn => cn.Execute(It.Is <QueryParameters>(qp => parameters.Equals(qp)))).Returns(new QueryDTO {
                QueryClass = otherExistingClass
            });
            parentClassesStatement.Add(className2.Object);

            QueryDTO result = parentClassesStatement.Execute(parameters);

            Assert.AreEqual(ResultType.StringResult, result.Result.QueryResultType);
            Assert.AreEqual("A class can't inherit from more than 1 class!", result.Result.StringOutput);
        }
예제 #6
0
        public override IQueryElement VisitInterface_declaration([NotNull] QueryGrammarParser.Interface_declarationContext context)
        {
            InterfaceDeclaration interfaceDeclaration = new InterfaceDeclaration();

            interfaceDeclaration.Name = context.NAME().GetText();

            if (context.parent_type() != null)
            {
                ParentClasses parentClasses = (ParentClasses)Visit(context.parent_type());
                parentClasses.InterfaceOnly = true;
                interfaceDeclaration.Add(parentClasses);
            }

            foreach (var attribute in context.attribute_dec_stm())
            {
                IQueryElement attributeDeclaration = Visit(attribute);
                interfaceDeclaration.Add(attributeDeclaration);
            }

            return(interfaceDeclaration);
        }