Няма описание
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BurstStringSearchTests.cs 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using System;
  2. using System.Text;
  3. using System.Text.RegularExpressions;
  4. using NUnit.Framework;
  5. using Unity.Burst;
  6. using Unity.Burst.Editor;
  7. public class BurstStringSearchTests
  8. {
  9. [Test]
  10. public void FindLineNrTest()
  11. {
  12. // Load in a test text
  13. var disassembler = BurstInspectorTestUtil.GetDisassemblerAndText("BurstInspectorGUITests.MyJob - (IJob)", 1, BurstTargetCpu.X64_SSE4, out string textToRender);
  14. disassembler.Initialize(textToRender, BurstDisassembler.AsmKind.Intel, true, true);
  15. var text = disassembler.GetOrRenderBlockToText(0);
  16. // Call find line nr for:
  17. // first line
  18. // Around middle
  19. // Last line
  20. Assert.AreEqual(0, BurstStringSearch.FindLineNr(text, text.IndexOf('\n') - 1), "Couldn't find line 0");
  21. Assert.AreEqual(2, BurstStringSearch.FindLineNr(text, text.IndexOf('\n', text.IndexOf('\n') + 1) + 1), "Couldn't find line in middle");
  22. Assert.AreEqual(disassembler.Blocks[0].Length-1, BurstStringSearch.FindLineNr(text, text.Length-1), "Couldn't find last line");
  23. }
  24. [Test]
  25. public void GetEndIndexOfPlainLineTest()
  26. {
  27. Assert.AreEqual(("This\nIs\nPerfect".Length-1, 6),
  28. BurstStringSearch.GetEndIndexOfPlainLine("This\nIs\nPerfect", 2),
  29. "Failed finding in well formed string");
  30. const string text1 = "No line endings";
  31. Assert.AreEqual((text1.Length-1, text1.Length-1),
  32. BurstStringSearch.GetEndIndexOfPlainLine(text1, 0),
  33. "Failed for missing line ending");
  34. const string text2 = "No Line endings too many lines";
  35. Assert.Throws<ArgumentOutOfRangeException>(() => BurstStringSearch.GetEndIndexOfPlainLine(text2, 2),
  36. "Failed for missing line ending and too high line number");
  37. const string text3 = "Line ending\n";
  38. Assert.AreEqual((text3.Length-1, text3.Length-1),
  39. BurstStringSearch.GetEndIndexOfPlainLine(text3, 0),
  40. "Failed with line ending");
  41. const string text4 = "Line ending too many lines\n";
  42. Assert.Throws<ArgumentOutOfRangeException>(() => BurstStringSearch.GetEndIndexOfPlainLine(text4, 2),
  43. "Failed with line endings and too high line number");
  44. }
  45. [Test]
  46. public void FindMatchTest()
  47. {
  48. _ = BurstInspectorTestUtil.GetDisassemblerAndText("BurstInspectorGUITests.MyJob - (IJob)", 2, BurstTargetCpu.X64_SSE4, out var textToRender);
  49. var expectedNormal = textToRender.IndexOf("def");
  50. var tmp = Regex.Match(textToRender, @"\bdef\b");
  51. var expectedWhole = tmp.Success ? tmp.Index : -1;
  52. // Normal search
  53. Assert.AreEqual((expectedNormal, 3),
  54. BurstStringSearch.FindMatch(textToRender,
  55. new SearchCriteria("def", false, false, false), default),
  56. "Standard search failed"); // standard search: Match def in .endef
  57. Assert.AreEqual((expectedWhole, 3),
  58. BurstStringSearch.FindMatch(textToRender,
  59. new SearchCriteria("def", false, true, false), default),
  60. "Standard whole words failed"); // whole word search: Match def in .def
  61. // Regex search
  62. const RegexOptions opt = RegexOptions.CultureInvariant;
  63. Assert.AreEqual((expectedNormal, 3),
  64. BurstStringSearch.FindMatch(textToRender,
  65. new SearchCriteria("def", false, false, true),
  66. new Regex("def", opt | RegexOptions.IgnoreCase)),
  67. "Regex search failed"); // standard search: Match def in .endef
  68. Assert.AreEqual((expectedWhole, tmp.Success ? 3 : 0),
  69. BurstStringSearch.FindMatch(textToRender,
  70. new SearchCriteria(@"\bdef\b", false, true, true),
  71. new Regex(@"\bdef\b", opt)),
  72. "Regex whole word failed"); // whole word search: Match def in .def
  73. // Across lines and blocks
  74. Assert.AreEqual((12, 4),
  75. BurstStringSearch.FindMatch(textToRender,
  76. new SearchCriteria(@"t[\n]+..", false, false, true),
  77. new Regex(@"t[\n]+..", opt | RegexOptions.IgnoreCase)),
  78. "Regex across lines failed");
  79. }
  80. }