Beispiel #1
0
        public void Init()
        {
            CodeCoverageMethod method = new CodeCoverageMethod("FileElementHasAttributeNamedType", "AbstractElementSchemaTestFixture");

            module = new CodeCoverageModule("XmlEditor.Tests");
            module.Methods.Add(method);
            List <CodeCoverageModule> modules = new List <CodeCoverageModule>();

            modules.Add(module);

            TreeNodeCollection nodes;

            using (CodeCoverageTreeView treeView = new CodeCoverageTreeView()) {
                treeView.AddModules(modules);
                nodes = treeView.Nodes;
            }

            CodeCoverageModuleTreeNode moduleNode = (CodeCoverageModuleTreeNode)nodes[0];

            moduleNode.Expanding();
            CodeCoverageClassTreeNode classNode = (CodeCoverageClassTreeNode)moduleNode.Nodes[0];

            classNode.Expanding();
            methodNode = (CodeCoverageMethodTreeNode)classNode.Nodes[0];
        }
        public void SetterPropertyCompareString()
        {
            CodeCoverageMethod         setterMethod = new CodeCoverageMethod("set_Aardvark", "Animal");
            CodeCoverageMethodTreeNode setterNode   = new CodeCoverageMethodTreeNode(setterMethod);

            Assert.AreEqual("Aardvark set", setterNode.CompareString);
        }
Beispiel #3
0
        public void Init()
        {
            string methodName = "Foo";
            string className  = "Foo";

            method = new CodeCoverageMethod(methodName, className);
        }
Beispiel #4
0
        public void SetUpFixture()
        {
            string xml = "<PartCoverReport date=\"2008-07-10T02:59:13.7198656+01:00\">\r\n" +
                         "    <File id=\"1\" url=\"c:\\Projects\\Foo\\FooTestFixture.cs\" />\r\n" +
                         "    <Assembly id=\"1\" name=\"Foo.Tests\" module=\"C:\\Projects\\Test\\Foo.Tests\\bin\\Foo.Tests.DLL\" domain=\"test-domain-Foo.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "    <Type asmref=\"1\" name=\"Foo.Tests.FooTestFixture\" flags=\"1232592\">\r\n" +
                         "        <Method name=\"SimpleTest\" sig=\"void  ()\" bodysize=\"42\" flags=\"2182\" iflags=\"0\">\r\n" +
                         "            <pt visit=\"1\" pos=\"0\" len=\"1\" fid=\"1\" sl=\"20\" sc=\"3\" el=\"20\" ec=\"4\" />\r\n" +
                         "            <pt visit=\"1\" pos=\"0\" len=\"1\" fid=\"1\" sl=\"21\" sc=\"13\" el=\"21\" ec=\"32\" />\r\n" +
                         "            <pt visit=\"0\" pos=\"0\" len=\"1\" fid=\"1\" sl=\"24\" sc=\"3\" el=\"24\" ec=\"4\" />\r\n" +
                         "        </Method>\r\n" +
                         "    </Type>\r\n" +
                         "</PartCoverReport>";

            results = new CodeCoverageResults(new StringReader(xml));
            if (results.Modules.Count > 0)
            {
                module = results.Modules[0];
                if (module.Methods.Count > 0)
                {
                    method = module.Methods[0];
                    if (method.SequencePoints.Count == 3)
                    {
                        point1 = method.SequencePoints[0];
                        point2 = method.SequencePoints[1];
                        point3 = method.SequencePoints[2];
                    }
                }
            }
        }
        public void GetterPropertyCompareString()
        {
            CodeCoverageMethod         getterMethod = new CodeCoverageMethod("get_Aardvark", "Animal");
            CodeCoverageMethodTreeNode getterNode   = new CodeCoverageMethodTreeNode(getterMethod);

            Assert.AreEqual("Aardvark get", getterNode.CompareString);
        }
        public void Init()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument          document       = MockTextMarkerService.CreateDocumentWithMockService();
            ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;

            string xml = "<PartCoverReport>\r\n" +
                         "\t<File id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\"/>\r\n" +
                         "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\" asmref=\"1\">\r\n" +
                         "\t\t<Method name=\"GetSchema\">\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"0\" sc=\"3\" el=\"0\" ec=\"4\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"-1\" sc=\"4\" el=\"9\" ec=\"20\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"10\" sc=\"3\" el=\"10\" ec=\"4\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(document, method.SequencePoints);

            markers = new List <ITextMarker>();
            foreach (ITextMarker marker in markerStrategy.TextMarkers)
            {
                markers.Add(marker);
            }
        }
        public void Init()
        {
            List <CodeCoverageModule> modules       = new List <CodeCoverageModule>();
            CodeCoverageModule        fooModule     = new CodeCoverageModule("Foo.Tests");
            CodeCoverageMethod        fooTestMethod = new CodeCoverageMethod("FooTest", "Foo.Tests.FooTestFixture");

            fooTestMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTestFixture.cs", 0, 1, 0, 2, 1, 1));
            fooTestMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTestFixture.cs", 0, 2, 2, 3, 4, 1));

            fooModule.Methods.Add(fooTestMethod);

            modules.Add(fooModule);

            using (CodeCoverageTreeView treeView = new CodeCoverageTreeView()) {
                treeView.AddModules(modules);
                nodes = treeView.Nodes;
            }

            fooModuleNode = (CodeCoverageModuleTreeNode)nodes[0];

            fooModuleNode.Expanding();
            fooNamespaceTreeNode = (CodeCoverageNamespaceTreeNode)fooModuleNode.Nodes[0];

            fooNamespaceTreeNode.Expanding();
            fooTestsNamespaceTreeNode = (CodeCoverageNamespaceTreeNode)fooNamespaceTreeNode.Nodes[0];

            fooTestsNamespaceTreeNode.Expanding();
            fooTestFixtureTreeNode = (CodeCoverageClassTreeNode)fooTestsNamespaceTreeNode.Nodes[0];

            fooTestFixtureTreeNode.Expanding();
            fooTestMethodTreeNode = (CodeCoverageMethodTreeNode)fooTestFixtureTreeNode.Nodes[0];
        }
Beispiel #8
0
        public void Init()
        {
            XElement getterElement = CreateGetterElement("MyTest", "Count");

            getter = new CodeCoverageMethod("MyTest", getterElement);
            XElement setterElement = CreateSetterElement("MyTest", "Count");

            setter = new CodeCoverageMethod("MyTest", setterElement);
        }
        public void Init()
        {
            try {
                //string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                //PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument          document       = MockTextMarkerService.CreateDocumentWithMockService();
            ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;

            // Give doc 3 lines (end line seems to be counted as an extra line).
            document.Text = "abc\r\ndef";

            string xml = "<CoverageSession xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n" +
                         "\t<Modules>\r\n" +
                         "\t\t<Module hash=\"44-54-B6-13-97-49-45-F8-6A-74-9E-49-0C-77-87-C6-9C-54-47-7A\">\r\n" +
                         "\t\t\t<FullName>C:\\Projects\\Test\\Foo.Tests\\bin\\Foo.Tests.DLL</FullName>\r\n" +
                         "\t\t\t<ModuleName>Foo.Tests</ModuleName>\r\n" +
                         "\t\t\t<Files>\r\n" +
                         "\t\t\t\t<File uid=\"1\" fullPath=\"c:\\Projects\\Foo\\FooTestFixture.cs\" />\r\n" +
                         "\t\t\t</Files>\r\n" +
                         "\t\t\t<Classes>\r\n" +
                         "\t\t\t\t<Class>\r\n" +
                         "\t\t\t\t\t<FullName>Foo.Tests.FooTestFixture</FullName>\r\n" +
                         "\t\t\t\t\t<Methods>\r\n" +
                         "\t\t\t\t\t\t<Method visited=\"true\" cyclomaticComplexity=\"1\" sequenceCoverage=\"100\" branchCoverage=\"100\" isConstructor=\"false\" isStatic=\"false\" isGetter=\"false\" isSetter=\"false\">\r\n" +
                         "\t\t\t\t\t\t\t<MetadataToken>100663297</MetadataToken>\r\n" +
                         "\t\t\t\t\t\t\t<Name>System.Void Foo.Tests.FooTestFixture::SimpleTest()</Name>\r\n" +
                         "\t\t\t\t\t\t\t<FileRef uid=\"1\" />\r\n" +
                         "\t\t\t\t\t\t\t<SequencePoints>\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"3\" sc=\"3\" el=\"4\" ec=\"4\" />\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"4\" el=\"5\" ec=\"20\" />\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"4\" el=\"-1\" ec=\"20\" />\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"4\" el=\"0\" ec=\"20\" />\r\n" +
                         "\t\t\t\t\t\t\t</SequencePoints>\r\n" +
                         "\t\t\t\t\t\t</Method>\r\n" +
                         "\t\t\t\t\t</Methods>\r\n" +
                         "\t\t\t\t</Class>\r\n" +
                         "\t\t\t</Classes>\r\n" +
                         "\t\t</Module>\r\n" +
                         "\t</Modules>\r\n" +
                         "</CoverageSession>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(document, method.SequencePoints);

            markers = new List <ITextMarker>();
            foreach (ITextMarker marker in markerStrategy.TextMarkers)
            {
                markers.Add(marker);
            }
        }
        public void IsExcluded()
        {
            CodeCoverageModule        module = new CodeCoverageModule("test");
            CodeCoverageMethod        method = new CodeCoverageMethod("Test1", "MyTestFixture");
            CodeCoverageSequencePoint pt     = new CodeCoverageSequencePoint(@"c:\test\MyTestFixture.cs", 0, 10, 0, 10, 20, true);

            method.SequencePoints.Add(pt);
            module.Methods.Add(method);

            Assert.IsTrue(module.IsExcluded, "Module should be excluded.");
        }
Beispiel #11
0
        public void SetUpFixture()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument document = MockDocument.Create();
            string    code     = "\t\t{\r\n" +
                                 "\t\t\tAssert.AreEqual(0, childElementCompletionData.Length, \"\" +\r\n" +
                                 "\t\t\t                \"Not expecting any child elements.\");\r\n" +
                                 "\t\t}\r\n";

            document.TextContent = code;
            MarkerStrategy markerStrategy = new MarkerStrategy(document);

            string xml = "<PartCoverReport>\r\n" +
                         "\t<file id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\" />\r\n" +
                         "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type asmref=\"1\" name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\">\r\n" +
                         "\t\t<Method name=\"NoteElementHasNoChildElements\">\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"2\" sc=\"4\" el=\"3\" ec=\"57\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"4\" sc=\"3\" el=\"4\" ec=\"4\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(markerStrategy, method.SequencePoints);

            foreach (CodeCoverageTextMarker marker in markerStrategy.TextMarker)
            {
                if (markerOne == null)
                {
                    markerOne = marker;
                }
                else if (markerTwo == null)
                {
                    markerTwo = marker;
                }
                else if (markerThree == null)
                {
                    markerThree = marker;
                }
                else if (markerFour == null)
                {
                    markerFour = marker;
                }
            }
        }
Beispiel #12
0
        public void SetUpFixture()
        {
            properties   = new CodeCoveragePropertyCollection();
            getterMethod = new CodeCoverageMethod("get_Count", "MyTests", MethodAttributes.SpecialName);
            setterMethod = new CodeCoverageMethod("set_Count", "MyTests", MethodAttributes.SpecialName);

            properties.Add(getterMethod);
            properties.Add(setterMethod);

            if (properties.Count > 0)
            {
                property = properties[0];
            }
        }
        public void SetUpFixture()
        {
            CodeCoverageModule module = new CodeCoverageModule("Root.Tests");

            // Add two methods in namespaces that start with the
            // same initial characters.
            CodeCoverageMethod rootTestsMethod = new CodeCoverageMethod("RunThis", "Root.Tests.MyTestFixture");

            module.Methods.Add(rootTestsMethod);
            CodeCoverageMethod rootBarMethod = new CodeCoverageMethod("RunThis", "RootBar.MyTestFixture");

            module.Methods.Add(rootBarMethod);

            childNamespaces = CodeCoverageMethod.GetChildNamespaces(module.Methods, "Root");
        }
Beispiel #14
0
        public void SetUpFixture()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            document = MockDocument.Create();
            string code = "\t\t{\r\n" +
                          "\t\t\tint count = 0;\r\n" +
                          "\t\t}\r\n";

            document.TextContent = code;
            markerStrategy       = new MarkerStrategy(document);

            string xml = "<PartCoverReport>\r\n" +
                         "<File id=\"1\" url=\"c:\\Projects\\Foo\\FooTestFixture.cs\" />\r\n" +
                         "<Assembly id=\"1\" name=\"Foo.Tests\" module=\"C:\\Projects\\Test\\Foo.Tests\\bin\\Foo.Tests.DLL\" domain=\"test-domain-Foo.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type asmref=\"1\" name=\"Foo.Tests.FooTestFixture\" flags=\"1232592\">\r\n" +
                         "\t\t<Method name=\"SimpleTest\">\r\n" +
                         "\t\t\t<pt visit=\"1\" sl=\"1\" fid=\"1\" sc=\"3\" el=\"1\" ec=\"4\" document=\"c:\\Projects\\Foo\\Foo1TestFixture.cs\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" sl=\"2\" fid=\"1\" sc=\"4\" el=\"2\" ec=\"18\" document=\"c:\\Projects\\Foo\\Foo1TestFixture.cs\" />\r\n" +
                         "\t\t\t<pt visit=\"0\" sl=\"3\" fid=\"1\" sc=\"3\" el=\"3\" ec=\"4\" document=\"c:\\Projects\\Foo\\Foo1TestFixture.cs\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";
            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(markerStrategy, method.SequencePoints);

            foreach (CodeCoverageTextMarker marker in markerStrategy.TextMarker)
            {
                if (markerOne == null)
                {
                    markerOne = marker;
                }
                else if (markerTwo == null)
                {
                    markerTwo = marker;
                }
                else if (markerThree == null)
                {
                    markerThree = marker;
                }
            }
        }
        public void SetUpFixture()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument document = MockDocument.Create();
            string    code     = "\t\t{\r\n" +
                                 "\t\t\treturn \"<?xml version=\\\"1.0\\\"?>\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"<xs:schema xmlns:xs=\\\"http://www.w3.org/2001/XMLSchema\\\"\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"targetNamespace=\\\"http://www.w3schools.com\\\"\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"xmlns=\\\"http://www.w3schools.com\\\"\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"elementFormDefault=\\\"qualified\\\">\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"<xs:element name=\\\"note\\\">\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"</xs:element>\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"</xs:schema>\";\r\n" +
                                 "\t\t}\r\n";

            document.TextContent = code;
            MarkerStrategy markerStrategy = new MarkerStrategy(document);

            string xml = "<PartCoverReport>\r\n" +
                         "\t<File id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\" />\r\n" +
                         "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type asmref=\"XmlEditor.Tests\" name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\" flags=\"1232592\">\r\n" +
                         "\t\t<Method name=\"GetSchema\">\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"2\" sc=\"4\" el=\"9\" ec=\"20\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"10\" sc=\"3\" el=\"10\" ec=\"4\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(markerStrategy, method.SequencePoints);

            markers = new List <CodeCoverageTextMarker>();
            foreach (CodeCoverageTextMarker marker in markerStrategy.TextMarker)
            {
                markers.Add(marker);
            }
        }
Beispiel #16
0
        public void SetUpFixture()
        {
            string xml = "<PartCoverReport ver=\"1.0.2796.35184\">\r\n" +
                         "  <File id=\"1\" url=\"d:\\Projects\\test\\TestFixture1.cs\" />\r\n" +
                         "  <Assembly id=\"1\" name=\"MyTests\" module=\"C:\\Projects\\Test\\MyTests\\bin\\MyTests.DLL\" domain=\"test-domain-MyTests.dll\" domainIdx=\"1\" />\r\n" +
                         "  <Type asmref=\"1\" name=\"MyTests.Class1\" flags=\"2606412\">\r\n" +
                         "    <Method name=\"set_Count\" sig=\"void  (int)\" flags=\"2182\" iflags=\"0\">\r\n" +
                         "      <pt visit=\"0\" pos=\"9\" len=\"1\" fid=\"1\" sl=\"34\" sc=\"4\" el=\"34\" ec=\"5\" />\r\n" +
                         "      <pt visit=\"0\" pos=\"1\" len=\"8\" fid=\"1\" sl=\"33\" sc=\"5\" el=\"33\" ec=\"12\" />\r\n" +
                         "      <pt visit=\"0\" pos=\"0\" len=\"1\" fid=\"1\" sl=\"32\" sc=\"8\" el=\"32\" ec=\"9\" />\r\n" +
                         "    </Method>\r\n" +
                         "    <Method name=\"get_Count\" sig=\"int  ()\" flags=\"2182\" iflags=\"0\">\r\n" +
                         "      <pt visit=\"0\" pos=\"6\" len=\"2\" fid=\"1\" sl=\"31\" sc=\"4\" el=\"31\" ec=\"5\" />\r\n" +
                         "      <pt visit=\"0\" pos=\"1\" len=\"5\" fid=\"1\" sl=\"30\" sc=\"5\" el=\"30\" ec=\"15\" />\r\n" +
                         "      <pt visit=\"0\" pos=\"0\" len=\"1\" fid=\"1\" sl=\"29\" sc=\"8\" el=\"29\" ec=\"9\" />\r\n" +
                         "    </Method>\r\n" +
                         "    <Method name=\"get_NotAProperty\" sig=\"void  ()\" flags=\"134\" iflags=\"0\">\r\n" +
                         "      <pt visit=\"0\" pos=\"1\" len=\"1\" fid=\"1\" sl=\"26\" sc=\"3\" el=\"26\" ec=\"4\" />\r\n" +
                         "      <pt visit=\"0\" pos=\"0\" len=\"1\" fid=\"1\" sl=\"25\" sc=\"3\" el=\"25\" ec=\"4\" />\r\n" +
                         "    </Method>\r\n" +
                         "    <Method name=\"PropertyFlagsButJustAMethod\" sig=\"void  ()\" flags=\"2182\" iflags=\"0\">\r\n" +
                         "      <pt visit=\"0\" pos=\"8\" len=\"2\" fid=\"1\" sl=\"22\" sc=\"3\" el=\"22\" ec=\"4\" />\r\n" +
                         "      <pt visit=\"0\" pos=\"7\" len=\"1\" fid=\"1\" sl=\"21\" sc=\"3\" el=\"21\" ec=\"4\" />\r\n" +
                         "      <pt visit=\"0\" pos=\"0\" len=\"7\" fid=\"1\" sl=\"20\" sc=\"3\" el=\"20\" ec=\"18\" />\r\n" +
                         "    </Method>\r\n" +
                         "    <Method name=\"InvalidFlags\" sig=\"void  ()\" flags=\"\" iflags=\"0\">\r\n" +
                         "      <pt visit=\"0\" pos=\"8\" len=\"2\" fid=\"1\" sl=\"22\" sc=\"3\" el=\"22\" ec=\"4\" />\r\n" +
                         "      <pt visit=\"0\" pos=\"7\" len=\"1\" fid=\"1\" sl=\"21\" sc=\"3\" el=\"21\" ec=\"4\" />\r\n" +
                         "      <pt visit=\"0\" pos=\"0\" len=\"7\" fid=\"1\" sl=\"20\" sc=\"3\" el=\"20\" ec=\"18\" />\r\n" +
                         "    </Method>\r\n" +
                         "  </Type>\r\n" +
                         "</PartCoverReport>";

            results = new CodeCoverageResults(new StringReader(xml));
            if (results.Modules.Count > 0)
            {
                CodeCoverageModule module = results.Modules[0];
                if (module.Methods.Count > 2)
                {
                    setterMethod = module.Methods[0];
                    getterMethod = module.Methods[1];
                    method       = module.Methods[2];
                    methodWithPropertyFlagsButInvalidName = module.Methods[3];
                }
            }
        }
        public void Init()
        {
            module = new CodeCoverageModule("XmlEditor.Tests");

            attributeNameTestFixtureMethod = new CodeCoverageMethod("SuccessTest1", "ICSharpCode.XmlEditor.Parser.AttributeNameTestFixture");
            module.Methods.Add(attributeNameTestFixtureMethod);

            abstractElementSchemaTestFixtureMethod = new CodeCoverageMethod("FileElementHasAttributeNamedType", "ICSharpCode.XmlEditor.Schema.AbstractElementSchemaTestFixture");
            module.Methods.Add(abstractElementSchemaTestFixtureMethod);

            differentRootNamespaceTestFixtureMethod = new CodeCoverageMethod("DifferentRootNamespaceTestMethod", "RootNamespace.XmlEditor.DifferentRootNamespaceTestFixture");
            module.Methods.Add(differentRootNamespaceTestFixtureMethod);

            sharpDevelopNamespace  = module.RootNamespaces[0];
            differentRootNamespace = module.RootNamespaces[1];
            xmlEditorNamespace     = (CodeCoverageMethod.GetChildNamespaces(module.Methods, sharpDevelopNamespace))[0];
        }
        public void SetUpFixture()
        {
            List <CodeCoverageModule> modules   = new List <CodeCoverageModule>();
            CodeCoverageModule        fooModule = new CodeCoverageModule("Tests");

            XElement setterMethod = CreateSetterElement("Tests.FooTest", "Count");

            fooSetterMethod = new CodeCoverageMethod("Tests.FooTest", setterMethod);
            fooSetterMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTest.cs", 1, 2, 2, 3, 4, 2));
            fooSetterMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTest.cs", 0, 3, 4, 4, 4, 1));

            XElement getterMethod = CreateGetterElement("Tests.FooTest", "Count");

            fooGetterMethod = new CodeCoverageMethod("Tests.FooTest", getterMethod);
            fooGetterMethod.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTest.cs", 1, 1, 0, 2, 1, 1));

            fooModule.Methods.Add(fooGetterMethod);
            fooModule.Methods.Add(fooSetterMethod);

            modules.Add(fooModule);

            using (CodeCoverageTreeView treeView = new CodeCoverageTreeView()) {
                treeView.AddModules(modules);
                fooModuleNode = (CodeCoverageModuleTreeNode)treeView.Nodes[0];
            }

            fooModuleNode.Expanding();

            fooTestsNamespaceTreeNode = (CodeCoverageNamespaceTreeNode)fooModuleNode.Nodes[0];

            fooTestsNamespaceTreeNode.Expanding();
            fooTestTreeNode = (CodeCoverageClassTreeNode)fooTestsNamespaceTreeNode.Nodes[0];

            fooTestTreeNode.Expanding();
            if (fooTestTreeNode.Nodes.Count > 0)
            {
                countPropertyTreeNode = fooTestTreeNode.Nodes[0] as CodeCoveragePropertyTreeNode;
            }

            countPropertyTreeNode.Expanding();
            if (countPropertyTreeNode != null && countPropertyTreeNode.Nodes.Count > 1)
            {
                fooGetterTreeNode = (CodeCoverageMethodTreeNode)countPropertyTreeNode.Nodes[0];
                fooSetterTreeNode = (CodeCoverageMethodTreeNode)countPropertyTreeNode.Nodes[1];
            }
        }
        public void SetUpFixture()
        {
            properties = new CodeCoveragePropertyCollection();
            XElement getterElement = CreatePropertyGetter("MyTests", "Count");

            getterMethod = new CodeCoverageMethod("MyTests", getterElement);
            XElement setterElement = CreatePropertySetter("MyTests", "Count");

            setterMethod = new CodeCoverageMethod("MyTests", setterElement);

            properties.Add(getterMethod);
            properties.Add(setterMethod);

            if (properties.Count > 0)
            {
                property = properties[0];
            }
        }
        public void SetUpFixture()
        {
            List <CodeCoverageModule> modules        = new List <CodeCoverageModule>();
            CodeCoverageModule        fooModule      = new CodeCoverageModule("Foo.Tests");
            CodeCoverageMethod        fooTestMethod1 = new CodeCoverageMethod("FooTest1", "Foo.Tests.FooTestFixture");

            fooTestMethod1.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTestFixture.cs", 1, 1, 0, 2, 1));
            fooTestMethod1.SequencePoints.Add(new CodeCoverageSequencePoint("c:\\Projects\\Foo\\FooTestFixture.cs", 0, 2, 2, 3, 4));
            CodeCoverageMethod fooTestMethod2 = new CodeCoverageMethod("FooTest2", "Foo.Tests.FooTestFixture");
            CodeCoverageMethod helperMethod   = new CodeCoverageMethod("GetCoverageFile", "Foo.Tests.Util.Helper");

            fooModule.Methods.Add(fooTestMethod1);
            fooModule.Methods.Add(fooTestMethod2);
            fooModule.Methods.Add(helperMethod);

            CodeCoverageModule barModule = new CodeCoverageModule("Bar.Tests");

            modules.Add(barModule);
            modules.Add(fooModule);

            using (CodeCoverageTreeView treeView = new CodeCoverageTreeView()) {
                treeView.AddModules(modules);
                nodes = treeView.Nodes;
            }

            barModuleNode = (CodeCoverageModuleTreeNode)nodes[0];
            fooModuleNode = (CodeCoverageModuleTreeNode)nodes[1];

            fooModuleNode.Expanding();
            fooNamespaceTreeNode = (CodeCoverageNamespaceTreeNode)fooModuleNode.Nodes[0];

            fooNamespaceTreeNode.Expanding();
            fooTestsNamespaceTreeNode = (CodeCoverageNamespaceTreeNode)fooNamespaceTreeNode.Nodes[0];

            fooTestsNamespaceTreeNode.Expanding();
            fooTestsUtilNamespaceTreeNode = (CodeCoverageNamespaceTreeNode)fooTestsNamespaceTreeNode.Nodes[0];
            fooTestFixtureTreeNode        = (CodeCoverageClassTreeNode)fooTestsNamespaceTreeNode.Nodes[1];

            fooTestFixtureTreeNode.Expanding();
            fooTestMethod1TreeNode = (CodeCoverageMethodTreeNode)fooTestFixtureTreeNode.Nodes[0];
            fooTestMethod2TreeNode = (CodeCoverageMethodTreeNode)fooTestFixtureTreeNode.Nodes[1];
        }
Beispiel #21
0
        public void Init()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument document = MockDocument.Create();

            // Give doc 3 lines (end line seems to be counted as an extra line).
            document.TextContent = "abc\r\ndef";
            MarkerStrategy markerStrategy = new MarkerStrategy(document);

            string xml = "<Coverage>\r\n" +
                         "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\" asmref=\"1\">\r\n" +
                         "\t\t<Method name=\"GetSchema\">\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"3\" sc=\"3\" el=\"4\" ec=\"4\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"1\" sc=\"4\" el=\"5\" ec=\"20\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"1\" sc=\"4\" el=\"-1\" ec=\"20\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"1\" sc=\"4\" el=\"0\" ec=\"20\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</Coverage>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(markerStrategy, method.SequencePoints);

            markers = new List <CodeCoverageTextMarker>();
            foreach (CodeCoverageTextMarker marker in markerStrategy.TextMarker)
            {
                markers.Add(marker);
            }
        }
        public void SetUpTestFixture()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            document       = MockTextMarkerService.CreateDocumentWithMockService();
            markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
            string code = "\t\t{\r\n" +
                          "\t\t\tint count = 0;\r\n" +
                          "\t\t}\r\n";

            document.Text = code;

            string xml = "<PartCoverReport>\r\n" +
                         "\t<File id=\"1\" url=\"c:\\Projects\\Foo\\FooTestFixture.cs\"/>\r\n" +
                         "\t<Assembly id=\"1\" name=\"Foo.Tests\" module=\"C:\\Projects\\Test\\bin\\Foo.Tests.DLL\" domain=\"test-domain-Foo.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type name=\"Foo.Tests.FooTestFixture\" asmref=\"1\">\r\n" +
                         "\t\t<Method name=\"SimpleTest\">\r\n" +
                         "\t\t\t<pt visit=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" fid=\"1\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" sl=\"2\" sc=\"4\" el=\"2\" ec=\"18\" fid=\"1\" />\r\n" +
                         "\t\t\t<pt visit=\"0\" sl=\"3\" sc=\"3\" el=\"3\" ec=\"4\" fid=\"1\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";
            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(document, method.SequencePoints);

            // Add non-code coverage markers.
            markerStrategy.Create(0, 2);
            markerStrategy.Create(4, 5);
        }
        public void SchemaNamespaceClassNames()
        {
            List <string> names = CodeCoverageMethod.GetClassNames(module.Methods, "ICSharpCode.XmlEditor.Schema");

            Assert.AreEqual("AbstractElementSchemaTestFixture", names[0]);
        }
Beispiel #24
0
        public void PropertyNameIsEmptyStringWhenMethodIsNotGetter()
        {
            CodeCoverageMethod method = new CodeCoverageMethod("Count", "MyTest");

            Assert.AreEqual(String.Empty, CodeCoverageProperty.GetPropertyName(method));
        }
 public void NoNamespacesBelowXmlEditorSchemaNamespace()
 {
     Assert.AreEqual(0, CodeCoverageMethod.GetChildNamespaces(module.Methods, "ICSharpCode.XmlEditor.Schema").Count);
 }
        public void SchemaNamespaceMethods()
        {
            List <CodeCoverageMethod> methods = CodeCoverageMethod.GetMethods(module.Methods, "ICSharpCode.XmlEditor.Schema", "AbstractElementSchemaTestFixture");

            Assert.AreSame(abstractElementSchemaTestFixtureMethod, methods[0]);
        }
 public void OnlyOneSharpDevelopChildNamespace()
 {
     Assert.AreEqual(1, CodeCoverageMethod.GetChildNamespaces(module.Methods, sharpDevelopNamespace).Count);
 }
        public void GetAllICSharpCodeXmlEditorNamespaceMethods()
        {
            List <CodeCoverageMethod> methods = CodeCoverageMethod.GetAllMethods(module.Methods, "ICSharpCode.XmlEditor");

            Assert.AreSame(attributeNameTestFixtureMethod, methods[0]);
        }
        public void SetUpFixture()
        {
            try {
                //string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                //PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            document = MockTextMarkerService.CreateDocumentWithMockService();
            string code = "\t\t{\r\n" +
                          "\t\t\treturn \"<?xml version=\\\"1.0\\\"?>\\r\\n\" +\r\n" +
                          "\t\t\t\t\"<xs:schema xmlns:xs=\\\"http://www.w3.org/2001/XMLSchema\\\"\\r\\n\" +\r\n" +
                          "\t\t\t\t\"targetNamespace=\\\"http://www.w3schools.com\\\"\\r\\n\" +\r\n" +
                          "\t\t\t\t\"xmlns=\\\"http://www.w3schools.com\\\"\\r\\n\" +\r\n" +
                          "\t\t\t\t\"elementFormDefault=\\\"qualified\\\">\\r\\n\" +\r\n" +
                          "\t\t\t\t\"<xs:element name=\\\"note\\\">\\r\\n\" +\r\n" +
                          "\t\t\t\t\"</xs:element>\\r\\n\" +\r\n" +
                          "\t\t\t\t\"</xs:schema>\";\r\n" +
                          "\t\t}\r\n";

            document.Text = code;
            ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService;

            string xml = "<CoverageSession xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n" +
                         "\t<Modules>\r\n" +
                         "\t\t<Module hash=\"44-54-B6-13-97-49-45-F8-6A-74-9E-49-0C-77-87-C6-9C-54-47-7A\">\r\n" +
                         "\t\t\t<FullName>C:\\Projects\\Test\\Foo.Tests\\bin\\Foo.Tests.DLL</FullName>\r\n" +
                         "\t\t\t<ModuleName>Foo.Tests</ModuleName>\r\n" +
                         "\t\t\t<Files>\r\n" +
                         "\t\t\t\t<File uid=\"1\" fullPath=\"c:\\Projects\\Foo\\FooTestFixture.cs\" />\r\n" +
                         "\t\t\t</Files>\r\n" +
                         "\t\t\t<Classes>\r\n" +
                         "\t\t\t\t<Class>\r\n" +
                         "\t\t\t\t\t<FullName>Foo.Tests.FooTestFixture</FullName>\r\n" +
                         "\t\t\t\t\t<Methods>\r\n" +
                         "\t\t\t\t\t\t<Method visited=\"true\" cyclomaticComplexity=\"1\" sequenceCoverage=\"100\" branchCoverage=\"100\" isConstructor=\"false\" isStatic=\"false\" isGetter=\"false\" isSetter=\"false\">\r\n" +
                         "\t\t\t\t\t\t\t<MetadataToken>100663297</MetadataToken>\r\n" +
                         "\t\t\t\t\t\t\t<Name>System.Void Foo.Tests.FooTestFixture::SimpleTest()</Name>\r\n" +
                         "\t\t\t\t\t\t\t<FileRef uid=\"1\" />\r\n" +
                         "\t\t\t\t\t\t\t<SequencePoints>\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" />\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"2\" sc=\"4\" el=\"9\" ec=\"20\" />\r\n" +
                         "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"10\" sc=\"3\" el=\"10\" ec=\"4\" />\r\n" +
                         "\t\t\t\t\t\t\t</SequencePoints>\r\n" +
                         "\t\t\t\t\t\t</Method>\r\n" +
                         "\t\t\t\t\t</Methods>\r\n" +
                         "\t\t\t\t</Class>\r\n" +
                         "\t\t\t</Classes>\r\n" +
                         "\t\t</Module>\r\n" +
                         "\t</Modules>\r\n" +
                         "</CoverageSession>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(document, method.SequencePoints);

            markers = new List <ITextMarker>();
            foreach (ITextMarker marker in markerStrategy.TextMarkers)
            {
                markers.Add(marker);
            }
        }
        public void SetUpFixture()
        {
            treeView = new CodeCoverageTreeView();
            nodeSorter = treeView.NodeSorter;

            List<CodeCoverageModule> modules = new List<CodeCoverageModule>();

            // Create a module called Z.
            CodeCoverageModule zModule = new CodeCoverageModule("Z");
            modules.Add(zModule);

            // Create a module called CodeCoverage.
            CodeCoverageModule codeCoverageModule = new CodeCoverageModule("CodeCoverage");
            modules.Add(codeCoverageModule);

            // Add a method that lives in a class without any namespace.
            CodeCoverageMethod testMethod = new CodeCoverageMethod("Test", "TestFixture");
            codeCoverageModule.Methods.Add(testMethod);

            // Add a method which produces a namespace that alphabetically
            // occurs after the class already added.
            CodeCoverageMethod removeCodeMarkersMethod = new CodeCoverageMethod("RemoveCodeMarkersMethod", "Beta.TestFixture");
            codeCoverageModule.Methods.Add(removeCodeMarkersMethod);

            // Add a method that lives in a namespace that
            // occurs before the removeCodeMarkersMethod. We want to
            // make sure that this namespace node gets added before the Beta one.
            CodeCoverageMethod zebraMethod = new CodeCoverageMethod("Zebra", "Aardvark.TestFixture");
            codeCoverageModule.Methods.Add(zebraMethod);

            // Add a second class in the beta namespace so we check the
            // sorting of classes.
            CodeCoverageMethod addCodeMarkersMethod = new CodeCoverageMethod("AddCodeMarkersMethod", "Beta.AnotherTestFixture");
            codeCoverageModule.Methods.Add(addCodeMarkersMethod);

            // Add a method which produces occurs before the remove code markers method.
            CodeCoverageMethod addNodeMethod = new CodeCoverageMethod("AddNode", "Beta.TestFixture");
            codeCoverageModule.Methods.Add(addNodeMethod);

            // Add two get and set properties.
            CodeCoverageMethod method = new CodeCoverageMethod("get_Zebra", "Beta.AnotherTestFixture");
            codeCoverageModule.Methods.Add(method);
            method = new CodeCoverageMethod("set_Zebra", "Beta.AnotherTestFixture");
            codeCoverageModule.Methods.Add(method);

            method = new CodeCoverageMethod("set_Aardvark", "Beta.AnotherTestFixture");
            codeCoverageModule.Methods.Add(method);
            method = new CodeCoverageMethod("get_Aardvark", "Beta.AnotherTestFixture");
            codeCoverageModule.Methods.Add(method);

            // Add a method which should appear between the two properties.
            method = new CodeCoverageMethod("Chimp", "Beta.AnotherTestFixture");
            codeCoverageModule.Methods.Add(method);

            // Add the modules to the tree.
            treeView.AddModules(modules);

            codeCoverageModuleTreeNode = (CodeCoverageModuleTreeNode)treeView.Nodes[0];
            zModuleTreeNode = (CodeCoverageModuleTreeNode)treeView.Nodes[1];

            // Initialise the code coverage module tree node.
            codeCoverageModuleTreeNode.PerformInitialization();
            aardvarkNamespaceTreeNode = (CodeCoverageTreeNode)codeCoverageModuleTreeNode.Nodes[0];
            betaNamespaceTreeNode = (CodeCoverageTreeNode)codeCoverageModuleTreeNode.Nodes[1];
            testFixtureClassTreeNode = (CodeCoverageTreeNode)codeCoverageModuleTreeNode.Nodes[2];

            // Initialise the beta namespace tree node.
            betaNamespaceTreeNode.PerformInitialization();
            anotherTestFixtureTreeNode = (CodeCoverageTreeNode)betaNamespaceTreeNode.Nodes[0];
            testFixtureTreeNode = (CodeCoverageTreeNode)betaNamespaceTreeNode.Nodes[1];

            // Initialise the test fixture class tree node
            testFixtureTreeNode.PerformInitialization();
            addNodeTestTreeNode = (CodeCoverageTreeNode)testFixtureTreeNode.Nodes[0];
            removeMarkersTestTreeNode = (CodeCoverageTreeNode)testFixtureTreeNode.Nodes[1];

            // Initialise the anotherTestFixtureTreeNode
            anotherTestFixtureTreeNode.PerformInitialization();
        }
Beispiel #31
0
 public void ClassWithNoNamespace()
 {
     Assert.AreEqual("AbstractElementSchemaTestFixture", (CodeCoverageMethod.GetClassNames(module.Methods, String.Empty))[0]);
 }