Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. using NUnit.Framework;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Text.RegularExpressions;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9.  
  10. namespace Memory.Timers
  11. {
  12. [TestFixture]
  13. class Timer_should
  14. {
  15. List<int> Validate(string expected)
  16. {
  17. var actual = Timer.Report;
  18. expected = expected.Replace("#", "(\\d+)");
  19. var regex = new Regex(expected);
  20. var match = regex.Match(actual);
  21. if (!match.Success)
  22. Assert.Fail($"Your string \n{actual} does not match pattern {expected}");
  23. var result = match.Groups.Cast<Group>().Skip(1).Select(z => int.Parse(z.Value)).ToList();
  24. return result;
  25. }
  26.  
  27. [Test]
  28. public void WorkInSimplestCase()
  29. {
  30. using (Timer.Start())
  31. {
  32. }
  33. Validate(@"\*[ ]{19}: (\d+)\n");
  34. /*Пример ответа
  35. * : 0
  36. */
  37. }
  38.  
  39. [Test]
  40. public void WorkWithTimerName()
  41. {
  42. using (Timer.Start("MyTimer"))
  43. { }
  44. Validate(@"MyTimer[ ]{13}: (\d+)\n");
  45. /*Пример ответа
  46. MyTimer : 0
  47. */
  48. }
  49.  
  50. [Test]
  51. public void WorkWithNesting()
  52. {
  53. using (Timer.Start("A"))
  54. {
  55. using (Timer.Start("B"))
  56. { }
  57. using (Timer.Start("C"))
  58. { }
  59. }
  60. Validate(@"A[ ]{19}: (\d+)\n[ ]{4}B[ ]{15}: (\d+)\n[ ]{4}C[ ]{15}: (\d+)\n[ ]{4}Rest[ ]{12}: (\d+)");
  61. /* Пример ответа
  62. A : 0
  63. B : 0
  64. C : 0
  65. Rest : 0
  66. */
  67. }
  68.  
  69. [Test]
  70. public void WorkWithDeepNesting()
  71. {
  72. using (Timer.Start("A"))
  73. {
  74. using (Timer.Start("B"))
  75. {
  76. using (Timer.Start("C"))
  77. { }
  78. }
  79. }
  80. Validate(@"A[ ]{19}: (\d+)\n[ ]{4}B[ ]{15}: (\d+)\n[ ]{8}C[ ]{11}: (\d+)\n[ ]{8}Rest[ ]{8}: (\d+)\n[ ]{4}Rest[ ]{12}: (\d+)\n");
  81.  
  82. /* Пример ответа
  83. A : 0
  84. B : 0
  85. C : 0
  86. Rest : 0
  87. Rest : 0
  88. */
  89. }
  90.  
  91. [Test]
  92. public void WorkWithNestingAndGiveCorrectTime()
  93. {
  94. using (Timer.Start("A"))
  95. {
  96. using (Timer.Start("B"))
  97. {
  98. Thread.Sleep(100);
  99. }
  100. using (Timer.Start("C"))
  101. {
  102. Thread.Sleep(200);
  103. }
  104. Thread.Sleep(300);
  105. }
  106. var values = Validate(@"A[ ]{19}: (\d+)\n[ ]{4}B[ ]{15}: (\d+)\n[ ]{4}C[ ]{15}: (\d+)\n[ ]{4}Rest[ ]{12}: (\d+)");
  107. Assert.True(values[0] == values[1] + values[2] + values[3]);
  108. Assert.AreEqual(2, (double)values[2] / values[1], 1);
  109. Assert.AreEqual(3, (double)values[3] / values[1], 1);
  110. Assert.Fail(Timer.Report);
  111. /*Пример ответа
  112. A : 600
  113. B : 100
  114. C : 200
  115. Rest : 300
  116. */
  117. }
  118. }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement