OpenAPI.NET.OData/test/Microsoft.OpenAPI.OData.Reader.Tests/Common/OpenApiWriterTestHelper.cs

102 lines
3.3 KiB
C#
Raw Normal View History

//---------------------------------------------------------------------
// <copyright file="OpenApiWriterTestHelper.cs" company="Microsoft">
// Copyright (C) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
// </copyright>
//---------------------------------------------------------------------
using System;
using System.IO;
2017-11-14 23:41:19 +01:00
using Microsoft.OpenApi.Interfaces;
using Microsoft.OpenApi.Writers;
namespace Microsoft.OpenApi.OData.Tests
{
internal static class OpenApiWriterTestHelper
{
2017-11-14 23:41:19 +01:00
internal static string WriteToJson(this IOpenApiElement element,
Action<IOpenApiWriter, IOpenApiElement> before = null,
Action<IOpenApiWriter, IOpenApiElement> after = null)
{
Action<IOpenApiWriter> action = writer =>
{
before?.Invoke(writer, element);
2017-11-11 00:45:25 +01:00
// element?(writer);
after?.Invoke(writer, element);
writer?.Flush();
};
2017-11-11 00:45:25 +01:00
return Write(OpenApiFormat.Json, action);
}
2017-11-14 23:41:19 +01:00
internal static string WriteToYaml(this IOpenApiElement element,
Action<IOpenApiWriter, IOpenApiElement> before = null,
Action<IOpenApiWriter, IOpenApiElement> after = null)
{
Action<IOpenApiWriter> action = writer =>
{
before?.Invoke(writer, element);
2017-11-11 00:45:25 +01:00
//element?.Write(writer);
after?.Invoke(writer, element);
writer?.Flush();
};
2017-11-11 00:45:25 +01:00
return Write(OpenApiFormat.Yaml, action);
}
2017-11-14 23:41:19 +01:00
internal static string Write(this IOpenApiElement element,
2017-11-11 00:45:25 +01:00
OpenApiFormat target,
2017-11-14 23:41:19 +01:00
Action<IOpenApiWriter, IOpenApiElement> before = null,
Action<IOpenApiWriter, IOpenApiElement> after = null)
{
Action<IOpenApiWriter> action = writer =>
{
before?.Invoke(writer, element);
2017-11-11 00:45:25 +01:00
// element?.Write(writer);
after?.Invoke(writer, element);
writer?.Flush();
};
return Write(target, action);
}
2017-11-11 00:45:25 +01:00
internal static string Write(this Action<IOpenApiWriter> action, OpenApiFormat target)
{
MemoryStream stream = new MemoryStream();
IOpenApiWriter writer;
2017-11-11 00:45:25 +01:00
if (target == OpenApiFormat.Yaml)
{
writer = new OpenApiYamlWriter(new StreamWriter(stream));
}
else
{
writer = new OpenApiJsonWriter(new StreamWriter(stream));
}
action(writer);
writer.Flush();
stream.Position = 0;
return new StreamReader(stream).ReadToEnd();
}
2017-11-11 00:45:25 +01:00
internal static string Write(OpenApiFormat target, Action<IOpenApiWriter> action)
{
MemoryStream stream = new MemoryStream();
IOpenApiWriter writer;
2017-11-11 00:45:25 +01:00
if (target == OpenApiFormat.Yaml)
{
writer = new OpenApiYamlWriter(new StreamWriter(stream));
}
else
{
writer = new OpenApiJsonWriter(new StreamWriter(stream));
}
action(writer);
writer.Flush();
stream.Position = 0;
return new StreamReader(stream).ReadToEnd();
}
}
}