コード例 #1
0
        public void Perform_Basic_Startup_Without_Failure()
        {
            // arrange
            var program  = new Program();
            var dumpFile = Scenario.HelloWorld.GetDumpFile();
            var options  = new RunOptions()
            {
                DumpLocation = dumpFile.FullName,
                SettingsFile = "Settings/Mortician_Should.json"
            };
            var analyzer = new TestAnalyzer();

            // act
            var result = program.DefaultExecution(options, container =>
            {
                container.ComposeParts(analyzer);
                container.ComposeExportedValue <IAnalyzer>(analyzer);
                return(container);
            });

            // assert
            result.Should().Be(0);
            analyzer.AppDomainCount.Should().Be(3);
            analyzer.TypeRepo.Types.FirstOrDefault(t => t.Name == "TestApplications.Console.Person").Should()
            .NotBeNull();
            analyzer.TypeRepo.Types.FirstOrDefault(t => t.Name == "TestApplications.Console.Address").Should()
            .NotBeNull();
            analyzer.ThreadRepo.Threads.Any(t =>
                                            t.ManagedStackFrames.Any(f =>
                                                                     f.DisplayString.Contains("TestApplications.Console.Program.Main")))
            .Should().BeTrue();
            analyzer.EngineSettings.TestString.Should().Be("This is a test string");
            analyzer.RunawayReport.Should().NotBeNull();
        }
コード例 #2
0
ファイル: TestDiscovererTests.cs プロジェクト: JoshVarty/PTVS
        public void DecoratedTests()
        {
            using (var analyzer = MakeTestAnalyzer()) {
                var code  = @"import unittest

def decorator(fn):
    def wrapped(*args, **kwargs):
        return fn(*args, **kwargs)
    return wrapped

class MyTest(unittest.TestCase):
    @decorator
    def testAbc(self):
        pass
";
                var entry = AddModule(analyzer, "Fob", code);

                entry.Analyze(CancellationToken.None, true);
                analyzer.AnalyzeQueuedEntries(CancellationToken.None);

                var test = TestAnalyzer.GetTestCasesFromAnalysis(entry).Single();
                Assert.AreEqual("testAbc", test.MethodName);
                Assert.AreEqual(10, test.StartLine);

                test = GetTestCasesFromAst(code, analyzer).Single();
                Assert.AreEqual("testAbc", test.MethodName);
                Assert.AreEqual(10, test.StartLine);
            }
        }
コード例 #3
0
ファイル: TestDiscovererTests.cs プロジェクト: xyongy/PTVS
        private static IEnumerable <TestCaseInfo> GetTestCasesFromAst(string code, PythonAnalyzer analyzer)
        {
            var codeStream = new MemoryStream(Encoding.UTF8.GetBytes(code));
            var m          = AstPythonModule.FromStream(analyzer.Interpreter, codeStream, "<string>", analyzer.LanguageVersion, "__main__");

            return(TestAnalyzer.GetTestCasesFromAst(m, null));
        }
コード例 #4
0
 private void InitializeInstanceFields()
 {
     analyzer             = new TestAnalyzer(this, collator);
     firstRangeBeginning  = new BytesRef(encodeCollationKey(collator.getCollationKey(firstRangeBeginningOriginal).toByteArray()));
     firstRangeEnd        = new BytesRef(encodeCollationKey(collator.getCollationKey(firstRangeEndOriginal).toByteArray()));
     secondRangeBeginning = new BytesRef(encodeCollationKey(collator.getCollationKey(secondRangeBeginningOriginal).toByteArray()));
     secondRangeEnd       = new BytesRef(encodeCollationKey(collator.getCollationKey(secondRangeEndOriginal).toByteArray()));
 }
コード例 #5
0
 private void AddModule(TestAnalyzer analyzer, string moduleName, string code, string moduleFile = null)
 {
     using (var source = new StringReader(code)) {
         analyzer.AddModule(
             moduleName,
             TestData.GetPath("Fob\\" + (moduleFile ?? moduleName.Replace('.', '\\') + ".py")),
             source
             );
     }
 }
コード例 #6
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: public void testCollationKeySort() throws Exception
        public virtual void testCollationKeySort()
        {
            Analyzer usAnalyzer      = new TestAnalyzer(this, Collator.getInstance(Locale.US));
            Analyzer franceAnalyzer  = new TestAnalyzer(this, Collator.getInstance(Locale.FRANCE));
            Analyzer swedenAnalyzer  = new TestAnalyzer(this, Collator.getInstance(new Locale("sv", "se")));
            Analyzer denmarkAnalyzer = new TestAnalyzer(this, Collator.getInstance(new Locale("da", "dk")));

            // The ICU Collator and Sun java.text.Collator implementations differ in their
            // orderings - "BFJDH" is the ordering for java.text.Collator for Locale.US.
            testCollationKeySort(usAnalyzer, franceAnalyzer, swedenAnalyzer, denmarkAnalyzer, oStrokeFirst ? "BFJHD" : "BFJDH", "EACGI", "BJDFH", "BJDHF");
        }
コード例 #7
0
        //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
        //ORIGINAL LINE: public void testCollationKeySort() throws Exception
        public virtual void testCollationKeySort()
        {
            Analyzer usAnalyzer = new TestAnalyzer(this, Collator.getInstance(Locale.US));
            Analyzer franceAnalyzer = new TestAnalyzer(this, Collator.getInstance(Locale.FRANCE));
            Analyzer swedenAnalyzer = new TestAnalyzer(this, Collator.getInstance(new Locale("sv", "se")));
            Analyzer denmarkAnalyzer = new TestAnalyzer(this, Collator.getInstance(new Locale("da", "dk")));

            // The ICU Collator and Sun java.text.Collator implementations differ in their
            // orderings - "BFJDH" is the ordering for java.text.Collator for Locale.US.
            testCollationKeySort(usAnalyzer, franceAnalyzer, swedenAnalyzer, denmarkAnalyzer, oStrokeFirst ? "BFJHD" : "BFJDH", "EACGI", "BJDFH", "BJDHF");
        }
コード例 #8
0
        public void SetUp()
        {
            const string path       = "../../../../InvalidTestProject";
            var          files      = Directory.EnumerateFiles(path, "*.dll", SearchOption.AllDirectories);
            var          assemblies = new List <Assembly>();

            foreach (var file in files)
            {
                assemblies.Add(Assembly.LoadFrom(file));
            }
            var classes = assemblies.Distinct().SelectMany(a => a.ExportedTypes).Where(t => t.IsClass);

            report = TestAnalyzer.AnalyzeTestAssembly(classes).Where(r => r.Name == "InvalidTests").FirstOrDefault();
        }
コード例 #9
0
        public void LoadConfigurations_MultipleFiles_ConfigurationsLoad()
        {
            string[] expectedEntries = { "A", "B" };

            var configurationFiles = ImmutableArray.Create<AdditionalText>(
                new TestAdditionalDocument("first.xml", $"<Data><Entry>{expectedEntries[0]}</Entry></Data>"),
                new TestAdditionalDocument("second.xml", $"<Data><Entry>{expectedEntries[1]}</Entry></Data>"),
                new TestAdditionalDocument("third.txt", "<Data><Entry>C</Entry></Data>"));

            var additionalFileService = new AdditionalFileService(configurationFiles, FileParseRule);
            var testAnalyzer = new TestAnalyzer(additionalFileService, CancellationToken.None);

            testAnalyzer.LoadConfigurations(@".+\.xml");

            Assert.Equal(expectedEntries, testAnalyzer.Entries);
        }
コード例 #10
0
        public void TestCollationKeySort()
        {
            Analyzer usAnalyzer = new TestAnalyzer(Collator.GetInstance(new CultureInfo("en-us")));
            Analyzer franceAnalyzer
                = new TestAnalyzer(Collator.GetInstance(new CultureInfo("fr")));
            Analyzer swedenAnalyzer
                = new TestAnalyzer(Collator.GetInstance(new CultureInfo("sv-se")));
            Analyzer denmarkAnalyzer
                = new TestAnalyzer(Collator.GetInstance(new CultureInfo("da-dk")));

            // The ICU Collator and java.text.Collator implementations differ in their
            // orderings - "BFJHD" is the ordering for the ICU Collator for Locale.US.
            TestCollationKeySort
                (usAnalyzer, franceAnalyzer, swedenAnalyzer, denmarkAnalyzer,
                "BFJHD", "ECAGI", "BJDFH", "BJDHF");
        }
コード例 #11
0
ファイル: TestDiscovererTests.cs プロジェクト: xyongy/PTVS
        public void TestCaseSubclasses()
        {
            using (var analyzer = MakeTestAnalyzer()) {
                var entry1 = AddModule(analyzer, "Pkg.SubPkg", @"import unittest

class TestBase(unittest.TestCase):
    pass
");

                var entry2 = AddModule(
                    analyzer,
                    "Pkg",
                    moduleFile: "Pkg\\__init__.py",
                    code: @"from .SubPkg import TestBase"
                    );

                var code   = @"from Pkg.SubPkg import TestBase as TB1
from Pkg import TestBase as TB2
from Pkg import *

class MyTest1(TB1):
    def test1(self):
        pass

class MyTest2(TB2):
    def test2(self):
        pass

class MyTest3(TestBase):
    def test3(self):
        pass
";
                var entry3 = AddModule(analyzer, "__main__", code);

                entry1.Analyze(CancellationToken.None, true);
                entry2.Analyze(CancellationToken.None, true);
                entry3.Analyze(CancellationToken.None, true);
                analyzer.AnalyzeQueuedEntries(CancellationToken.None);

                var test = TestAnalyzer.GetTestCasesFromAnalysis(entry3).ToList();
                AssertUtil.ContainsExactly(test.Select(t => t.MethodName), "test1", "test2", "test3");

                // Cannot discover tests from subclasses with just the AST
                test = GetTestCasesFromAst(code, analyzer).ToList();
                AssertUtil.ContainsExactly(test.Select(t => t.MethodName));
            }
        }
コード例 #12
0
        public virtual void TestCollationKeySort()
        {
            Analyzer usAnalyzer     = new TestAnalyzer(this, GetCollator("en-US"));
            Collator franceCollator = GetCollator("fr");

            franceCollator.FrenchCollation = FrenchCollation.On;
            Analyzer franceAnalyzer = new TestAnalyzer(this, franceCollator);

            // `useFallback: true` on both Swedish and Danish collators in
            // case the region specific collator is not found.
            Analyzer swedenAnalyzer  = new TestAnalyzer(this, GetCollator("sv-SE", "sv"));
            Analyzer denmarkAnalyzer = new TestAnalyzer(this, GetCollator("da-DK", "da"));

            // The ICU Collator and Sun java.text.Collator implementations differ in their
            // orderings - "BFJDH" is the ordering for java.text.Collator for Locale.US.
            this.TestCollationKeySort(usAnalyzer, franceAnalyzer, swedenAnalyzer, denmarkAnalyzer,
                                      this.oStrokeFirst ? "BFJHD" : "BFJDH", "EACGI", "BJDFH", "BJDHF");
        }
コード例 #13
0
ファイル: TestDiscovererTests.cs プロジェクト: yuts/PTVS
        public void TestCaseRunTestsWithTest() {
            using (var analyzer = MakeTestAnalyzer()) {
                var entry = AddModule(analyzer, "__main__", @"import unittest

class TestBase(unittest.TestCase):
    def test_1(self):
        pass
    def runTest(self):
        pass
");

                entry.Analyze(CancellationToken.None, true);
                analyzer.AnalyzeQueuedEntries(CancellationToken.None);

                var test = TestAnalyzer.GetTestCases(entry).ToList();
                AssertUtil.ContainsExactly(test.Select(t => t.MethodName), "test_1");
            }
        }
コード例 #14
0
ファイル: TestDiscovererTests.cs プロジェクト: yuts/PTVS
        public void TestCaseRunTests() {
            using (var analyzer = MakeTestAnalyzer()) {
                var entry = AddModule(analyzer, "__main__", @"import unittest

class TestBase(unittest.TestCase):
    def runTests(self):
        pass # should not discover this as it isn't runTest or test*
    def runTest(self):
        pass
");

                entry.Analyze(CancellationToken.None, true);
                analyzer.AnalyzeQueuedEntries(CancellationToken.None);

                var test = TestAnalyzer.GetTestCases(entry).ToList();
                AssertUtil.ContainsExactly(test.Select(t => t.ClassName), "TestBase");
            }
        }
コード例 #15
0
        public void TestDiscover()
        {
            var ctx    = new MockDiscoveryContext();
            var sink   = new MockTestCaseDiscoverySink();
            var logger = new MockMessageLogger();

            new TestDiscoverer().DiscoverTests(
                new[] { TestInfo.TestAdapterLibProjectFilePath, TestInfo.TestAdapterAProjectFilePath, TestInfo.TestAdapterBProjectFilePath },
                ctx,
                logger,
                sink
                );

            PrintTestCases(sink.Tests);

            var expectedTests = TestInfo.TestAdapterATests.Concat(TestInfo.TestAdapterBTests).ToArray();

            Assert.AreEqual(expectedTests.Length, sink.Tests.Count);

            foreach (var expectedTest in expectedTests)
            {
                var expectedFullyQualifiedName = TestAnalyzer.MakeFullyQualifiedTestName(expectedTest.RelativeClassFilePath, expectedTest.ClassName, expectedTest.MethodName);
                var actualTestCase             = sink.Tests.SingleOrDefault(tc => tc.FullyQualifiedName == expectedFullyQualifiedName);
                Assert.IsNotNull(actualTestCase, expectedFullyQualifiedName);
                Assert.AreEqual(expectedTest.MethodName, actualTestCase.DisplayName, expectedFullyQualifiedName);
                Assert.AreEqual(new Uri(TestExecutor.ExecutorUriString), actualTestCase.ExecutorUri);
                Assert.AreEqual(expectedTest.SourceCodeLineNumber, actualTestCase.LineNumber, expectedFullyQualifiedName);
                Assert.IsTrue(IsSameFile(expectedTest.SourceCodeFilePath, actualTestCase.CodeFilePath), expectedFullyQualifiedName);
                Assert.IsTrue(IsSameFile(expectedTest.ProjectFilePath, actualTestCase.Source), expectedFullyQualifiedName);

                sink.Tests.Remove(actualTestCase);
            }

            Debug.WriteLine("");
            Debug.WriteLine("");
            Debug.WriteLine("");
            Debug.WriteLine("");

            PrintTestCases(sink.Tests);
        }
コード例 #16
0
ファイル: TestDiscovererTests.cs プロジェクト: xyongy/PTVS
        public void DecoratedTests()
        {
            using (var analyzer = MakeTestAnalyzer()) {
                var code  = @"import unittest

def decorator(fn):
    def wrapped(*args, **kwargs):
        return fn(*args, **kwargs)
    return wrapped

class MyTest(unittest.TestCase):
    @decorator
    def testAbc(self):
        pass

    @fake_decorator
    def testDef(self):
        pass
";
                var entry = AddModule(analyzer, "Fob", code);

                entry.Analyze(CancellationToken.None, true);
                analyzer.AnalyzeQueuedEntries(CancellationToken.None);

                var tests = TestAnalyzer.GetTestCasesFromAnalysis(entry)
                            .Select(t => $"{t.MethodName}:{t.StartLine}");
                AssertUtil.ArrayEquals(
                    new[] { "testAbc:10", "testDef:14" },
                    tests.ToArray()
                    );

                tests = GetTestCasesFromAst(code, analyzer)
                        .Select(t => $"{t.MethodName}:{t.StartLine}");
                AssertUtil.ArrayEquals(
                    new[] { "testAbc:9", "testDef:13" },
                    tests.ToArray()
                    );
            }
        }