コード例 #1
0
        private void WriteMethods(List <Call> calls, CoverageScope klass)
        {
            foreach (var child in klass.Children)
            {
                FunctionDefinition funcDef = child.Statement as FunctionDefinition;
                if (funcDef != null)
                {
                    List <Call> lines = new List <Call>();
                    lines.Add(WriteStats(child));
                    lines.AddRange(WriteLines(child.Lines));

                    calls.Add(
                        new Call(
                            string.Format(
                                "Function(\"{0}\",",
                                CoverageExporter.GetQualifiedFunctionName(child.Statement)
                                ),
                            lines.ToArray()
                            )
                        );

                    WriteMethods(calls, child);
                }
            }
        }
コード例 #2
0
            internal override void Validate(CoverageMapper mapper, CoverageScope parentScope)
            {
                foreach (var scope in mapper.Classes)
                {
                    if (CoverageExporter.GetQualifiedName(scope.Statement) == _name)
                    {
                        foreach (var expected in _expected)
                        {
                            expected.Validate(mapper, scope);
                        }
                        return;
                    }
                }

                Assert.Fail("Failed to find class: " + _name);
            }
コード例 #3
0
        private void DumpCoverage(Dictionary <CoverageFileInfo, CoverageMapper> covInfo)
        {
            List <Call> calls = new List <Call>();

            foreach (var file in covInfo)
            {
                List <Call> children = new List <Call>();

                children.Add(WriteStats(file.Value.GlobalScope));

                var methods = WriteMethods(file.Value.GlobalScope);
                if (methods.Length > 0)
                {
                    children.Add(new Call("Global(", methods));
                }

                foreach (var klass in file.Value.Classes)
                {
                    List <Call> classMembers = new List <Call>();
                    classMembers.Add(WriteStats(klass));
                    classMembers.AddRange(WriteMethods(klass));
                    classMembers.AddRange(WriteLines(klass.Lines));

                    children.Add(
                        new Call(
                            string.Format("Class(\"{0}\", ", CoverageExporter.GetQualifiedName(klass.Statement)),
                            classMembers.ToArray()
                            )
                        );
                }

                children.AddRange(WriteLines(file.Value.GlobalScope.Lines));

                calls.Add(
                    new Call(
                        string.Format("Module(\"{0}\", ", file.Value.ModuleName),
                        children.ToArray()
                        )
                    );
            }
            Console.WriteLine("-----");
            Console.WriteLine(new Call(null, calls.ToArray()).ToString());
        }
コード例 #4
0
            private bool FindFunction(CoverageMapper mapper, CoverageScope parentScope)
            {
                foreach (var scope in parentScope.Children)
                {
                    if (scope.Statement is FunctionDefinition)
                    {
                        if (CoverageExporter.GetQualifiedFunctionName(scope.Statement) == _name)
                        {
                            foreach (var expected in _expected)
                            {
                                expected.Validate(mapper, scope);
                            }
                            return(true);
                        }

                        if (FindFunction(mapper, scope))
                        {
                            // nested function...
                            return(true);
                        }
                    }
                }
                return(false);
            }