SoftwareKeyboardTests.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using NUnit.Framework;
  2. using Ryujinx.HLE.HOS.Applets;
  3. using System.Text;
  4. namespace Ryujinx.Tests.HLE
  5. {
  6. public class SoftwareKeyboardTests
  7. {
  8. [Test]
  9. public void StripUnicodeControlCodes_NullInput()
  10. {
  11. Assert.IsNull(SoftwareKeyboardApplet.StripUnicodeControlCodes(null));
  12. }
  13. [Test]
  14. public void StripUnicodeControlCodes_EmptyInput()
  15. {
  16. Assert.AreEqual(string.Empty, SoftwareKeyboardApplet.StripUnicodeControlCodes(string.Empty));
  17. }
  18. [Test]
  19. public void StripUnicodeControlCodes_Passthrough()
  20. {
  21. string[] prompts = new string[]
  22. {
  23. "Please name him.",
  24. "Name her, too.",
  25. "Name your friend.",
  26. "Name another friend.",
  27. "Name your pet.",
  28. "Favorite homemade food?",
  29. "What’s your favorite thing?",
  30. "Are you sure?",
  31. };
  32. foreach (string prompt in prompts)
  33. {
  34. Assert.AreEqual(prompt, SoftwareKeyboardApplet.StripUnicodeControlCodes(prompt));
  35. }
  36. }
  37. [Test]
  38. public void StripUnicodeControlCodes_StripsNewlines()
  39. {
  40. Assert.AreEqual("I am very tall", SoftwareKeyboardApplet.StripUnicodeControlCodes("I \r\nam \r\nvery \r\ntall"));
  41. }
  42. [Test]
  43. public void StripUnicodeControlCodes_StripsDeviceControls()
  44. {
  45. // 0x13 is control code DC3 used by some games
  46. string specialInput = Encoding.UTF8.GetString(new byte[] { 0x13, 0x53, 0x68, 0x69, 0x6E, 0x65, 0x13 });
  47. Assert.AreEqual("Shine", SoftwareKeyboardApplet.StripUnicodeControlCodes(specialInput));
  48. }
  49. [Test]
  50. public void StripUnicodeControlCodes_StripsToEmptyString()
  51. {
  52. string specialInput = Encoding.UTF8.GetString(new byte[] { 17, 18, 19, 20 }); // DC1 - DC4 special codes
  53. Assert.AreEqual(string.Empty, SoftwareKeyboardApplet.StripUnicodeControlCodes(specialInput));
  54. }
  55. [Test]
  56. public void StripUnicodeControlCodes_PreservesMultiCodePoints()
  57. {
  58. // Turtles are a good example of multi-codepoint Unicode chars
  59. string specialInput = "♀ 🐢 🐢 ♂ ";
  60. Assert.AreEqual(specialInput, SoftwareKeyboardApplet.StripUnicodeControlCodes(specialInput));
  61. }
  62. }
  63. }