public virtual void FlattenTests(string testId, JsonLdTestType testType, string inputPath, string contextPath,
                                         string expectedOutputPath, JsonLdErrorCode expectedErrorCode, string baseIri,
                                         string processorMode, string expandContextPath, bool compactArrays, string rdfDirection)
        {
            var processorOptions = MakeProcessorOptions(inputPath, baseIri, processorMode, expandContextPath,
                                                        compactArrays, rdfDirection);
            var inputJson      = File.ReadAllText(inputPath);
            var contextJson    = contextPath == null ? null : File.ReadAllText(contextPath);
            var inputElement   = JToken.Parse(inputJson);
            var contextElement = contextJson == null ? null : JToken.Parse(contextJson);

            switch (testType)
            {
            case JsonLdTestType.PositiveEvaluationTest:
                var expectedOutputJson    = File.ReadAllText(expectedOutputPath);
                var expectedOutputElement = JToken.Parse(expectedOutputJson);

                var actualOutputElement = JsonLdProcessor.Flatten(inputElement, contextElement, processorOptions);
                Assert.True(DeepEquals(actualOutputElement, expectedOutputElement),
                            $"Error processing flatten test {Path.GetFileName(inputPath)}.\nActual output does not match expected output.\nExpected:\n{expectedOutputElement}\n\nActual:\n{actualOutputElement}");
                break;

            case JsonLdTestType.NegativeEvaluationTest:
                var exception = Assert.Throws <JsonLdProcessorException>(() =>
                                                                         JsonLdProcessor.Flatten(inputElement, contextElement, processorOptions));
                Assert.Equal(expectedErrorCode, exception.ErrorCode);
                break;

            default:
                Assert.True(false, $"Test type {testType} has not been implemented for Flatten tests");
                break;
            }
        }
        public void FlattenTests(string inputPath, string contextPath, string expectedOutputPath, string baseIri,
                                 string processorMode, string expandContextPath, bool compactArrays)
        {
            var processorOptions = MakeProcessorOptions(inputPath, baseIri, processorMode, expandContextPath,
                                                        compactArrays);
            var inputJson             = File.ReadAllText(inputPath);
            var contextJson           = contextPath == null ? null : File.ReadAllText(contextPath);
            var expectedOutputJson    = File.ReadAllText(expectedOutputPath);
            var inputElement          = JToken.Parse(inputJson);
            var contextElement        = contextJson == null ? null : JToken.Parse(contextJson);
            var expectedOutputElement = JToken.Parse(expectedOutputJson);

            var actualOutputElement = JsonLdProcessor.Flatten(inputElement, contextElement, processorOptions);

            Assert.True(JToken.DeepEquals(actualOutputElement, expectedOutputElement),
                        $"Error processing flatten test {Path.GetFileName(inputPath)}.\nActual output does not match expected output.\nExpected:\n{expectedOutputElement}\n\nActual:\n{actualOutputElement}");
        }