Exemplo n.º 1
0
            private static IEnumerable <ITestCaseData> GetTestCases()
            {
                var testCasesDir = Path.Combine(Path.GetDirectoryName(typeof(PcreTests).Assembly.Location) ?? throw new InvalidOperationException(), @"Pcre", "TestCases");

                for (var fileIndex = 0; fileIndex < InputFiles.GetLength(0); ++fileIndex)
                {
                    var testFileName = InputFiles[fileIndex, 0];
                    var testFilePath = Path.Combine(testCasesDir, testFileName);

                    using (var inputFs = File.OpenRead(testFilePath))
                        using (var outputFs = File.OpenRead(Path.Combine(testCasesDir, InputFiles[fileIndex, 1])))
                            using (var inputReader = new TestInputReader(inputFs))
                                using (var outputReader = new TestOutputReader(outputFs))
                                {
                                    var tests = inputReader.ReadTestInputs().Zip(outputReader.ReadTestOutputs(), (i, o) => new
                                    {
                                        input          = i,
                                        expectedResult = o
                                    });

                                    var testCases =
                                        from test in tests
                                        from jit in new[] { false, true }
                                    from span in new[] { false, true }
                                    let  testCase = new TestCase
                                    {
                                        TestFile       = testFilePath,
                                        Input          = test.input,
                                        ExpectedResult = test.expectedResult,
                                        Jit            = jit,
                                        Span           = span
                                    }
                                    select new TestCaseData(testCase)
                                    .SetCategory(testFileName)
                                    .SetName($"PCRE {testFileName}, Line {testCase.Input.Pattern.LineNumber:0000}, {(jit ? "JIT" : "Interpreted")}, {(span ? "Span" : "String")}")
                                    .SetDescription(testCase.Input.Pattern.Pattern);

                                    foreach (var testCase in testCases)
                                    {
                                        yield return(testCase);
                                    }
                                }
                }
            }