|
|
@@ -0,0 +1,71 @@
|
|
|
+using NUnit.Framework;
|
|
|
+using Ryujinx.HLE.HOS.Applets;
|
|
|
+using System.Text;
|
|
|
+
|
|
|
+namespace Ryujinx.Tests.HLE
|
|
|
+{
|
|
|
+ public class SoftwareKeyboardTests
|
|
|
+ {
|
|
|
+ [Test]
|
|
|
+ public void StripUnicodeControlCodes_NullInput()
|
|
|
+ {
|
|
|
+ Assert.IsNull(SoftwareKeyboardApplet.StripUnicodeControlCodes(null));
|
|
|
+ }
|
|
|
+
|
|
|
+ [Test]
|
|
|
+ public void StripUnicodeControlCodes_EmptyInput()
|
|
|
+ {
|
|
|
+ Assert.AreEqual(string.Empty, SoftwareKeyboardApplet.StripUnicodeControlCodes(string.Empty));
|
|
|
+ }
|
|
|
+
|
|
|
+ [Test]
|
|
|
+ public void StripUnicodeControlCodes_Passthrough()
|
|
|
+ {
|
|
|
+ string[] prompts = new string[]
|
|
|
+ {
|
|
|
+ "Please name him.",
|
|
|
+ "Name her, too.",
|
|
|
+ "Name your friend.",
|
|
|
+ "Name another friend.",
|
|
|
+ "Name your pet.",
|
|
|
+ "Favorite homemade food?",
|
|
|
+ "What’s your favorite thing?",
|
|
|
+ "Are you sure?",
|
|
|
+ };
|
|
|
+
|
|
|
+ foreach (string prompt in prompts)
|
|
|
+ {
|
|
|
+ Assert.AreEqual(prompt, SoftwareKeyboardApplet.StripUnicodeControlCodes(prompt));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [Test]
|
|
|
+ public void StripUnicodeControlCodes_StripsNewlines()
|
|
|
+ {
|
|
|
+ Assert.AreEqual("I am very tall", SoftwareKeyboardApplet.StripUnicodeControlCodes("I \r\nam \r\nvery \r\ntall"));
|
|
|
+ }
|
|
|
+
|
|
|
+ [Test]
|
|
|
+ public void StripUnicodeControlCodes_StripsDeviceControls()
|
|
|
+ {
|
|
|
+ // 0x13 is control code DC3 used by some games
|
|
|
+ string specialInput = Encoding.UTF8.GetString(new byte[] { 0x13, 0x53, 0x68, 0x69, 0x6E, 0x65, 0x13 });
|
|
|
+ Assert.AreEqual("Shine", SoftwareKeyboardApplet.StripUnicodeControlCodes(specialInput));
|
|
|
+ }
|
|
|
+
|
|
|
+ [Test]
|
|
|
+ public void StripUnicodeControlCodes_StripsToEmptyString()
|
|
|
+ {
|
|
|
+ string specialInput = Encoding.UTF8.GetString(new byte[] { 17, 18, 19, 20 }); // DC1 - DC4 special codes
|
|
|
+ Assert.AreEqual(string.Empty, SoftwareKeyboardApplet.StripUnicodeControlCodes(specialInput));
|
|
|
+ }
|
|
|
+
|
|
|
+ [Test]
|
|
|
+ public void StripUnicodeControlCodes_PreservesMultiCodePoints()
|
|
|
+ {
|
|
|
+ // Turtles are a good example of multi-codepoint Unicode chars
|
|
|
+ string specialInput = "♀ 🐢 🐢 ♂ ";
|
|
|
+ Assert.AreEqual(specialInput, SoftwareKeyboardApplet.StripUnicodeControlCodes(specialInput));
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|