// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Globalization; using System.IO; using System.Runtime.CompilerServices; namespace Microsoft.Framework.WebEncoders { /// /// Encoder used for unit testing. /// internal sealed class CommonTestEncoder : IHtmlEncoder, IJavaScriptStringEncoder, IUrlEncoder { /// /// Returns "HtmlEncode[[value]]". /// public string HtmlEncode(string value) { return EncodeCore(value); } /// /// Writes "HtmlEncode[[value]]". /// public void HtmlEncode(string value, int startIndex, int charCount, TextWriter output) { EncodeCore(value, startIndex, charCount, output); } /// /// Writes "HtmlEncode[[value]]". /// public void HtmlEncode(char[] value, int startIndex, int charCount, TextWriter output) { EncodeCore(value, startIndex, charCount, output); } /// /// Returns "JavaScriptStringEncode[[value]]". /// public string JavaScriptStringEncode(string value) { return EncodeCore(value); } /// /// Writes "JavaScriptStringEncode[[value]]". /// public void JavaScriptStringEncode(string value, int startIndex, int charCount, TextWriter output) { EncodeCore(value, startIndex, charCount, output); } /// /// Writes "JavaScriptStringEncode[[value]]". /// public void JavaScriptStringEncode(char[] value, int startIndex, int charCount, TextWriter output) { EncodeCore(value, startIndex, charCount, output); } /// /// Returns "UrlEncode[[value]]". /// public string UrlEncode(string value) { return EncodeCore(value); } /// /// Writes "UrlEncode[[value]]". /// public void UrlEncode(string value, int startIndex, int charCount, TextWriter output) { EncodeCore(value, startIndex, charCount, output); } /// /// Writes "UrlEncode[[value]]". /// public void UrlEncode(char[] value, int startIndex, int charCount, TextWriter output) { EncodeCore(value, startIndex, charCount, output); } private static string EncodeCore(string value, [CallerMemberName] string encodeType = null) { return String.Format(CultureInfo.InvariantCulture, "{0}[[{1}]]", encodeType, value); } private static void EncodeCore(string value, int startIndex, int charCount, TextWriter output, [CallerMemberName] string encodeType = null) { output.Write(EncodeCore(value.Substring(startIndex, charCount), encodeType)); } private static void EncodeCore(char[] value, int startIndex, int charCount, TextWriter output, [CallerMemberName] string encodeType = null) { output.Write(EncodeCore(new string(value, startIndex, charCount), encodeType)); } } }