public static IEnumerable<object[]> HtmlDecode_TestData()
{
// Needs decoding
yield return new object[] { "Hello! '"<&>\u2665♥\u00E7çç", "Hello! '\"<&>\u2665\u2665\u00E7\u00E7\u00E7" };
yield return new object[] { "퟿퟿", "\uD7FF\uD7FF" };
yield return new object[] { "", "\uE000\uE000" };
yield return new object[] { "abc", "abc" };
// Surrogate pairs
yield return new object[] { "𐀀", "\uD800\uDC00" };
yield return new object[] { "a𐀀b", "a\uD800\uDC00b" };
yield return new object[] { "𣎴", char.ConvertFromUtf32(144308) };
// Invalid encoding
yield return new object[] { "&", "&" };
yield return new object[] { "&#", "&#" };
yield return new object[] { "&#x", "&#x" };
yield return new object[] { "&abc", "&abc" };
yield return new object[] { "&abc;", "&abc;" };
yield return new object[] { "𐀀", "𐀀" };
yield return new object[] { "퟿", "퟿" };
yield return new object[] { "&#xG123;", "&#xG123;" };
yield return new object[] { "�", "�" };
yield return new object[] { "�", "�" };
yield return new object[] { "�", "�" };
yield return new object[] { "�", "�" };
yield return new object[] { "�", "�" };
yield return new object[] { "�", "�" };
// High BMP non-chars
yield return new object[] { "\uFFFD", "\uFFFD" };
yield return new object[] { "\uFFFE", "\uFFFE" };
yield return new object[] { "\uFFFF", "\uFFFF" };
// Basic
yield return new object[] { "Hello, world!", "Hello, world!" };
yield return new object[] { "Hello, world! \"<>\u2665\u00E7", "Hello, world! \"<>\u2665\u00E7" };
yield return new object[] { " ", " " };
// Empty
yield return new object[] { "", "" };
yield return new object[] { null, null };
}