Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.29 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. using FluentAssertions;
  5.  
  6. using NUnit.Framework;
  7.  
  8. using Sberbank.Transit.Core;
  9.  
  10. namespace Sberbank.Transit.Business.Tests.Core
  11. {
  12.     /// <summary>
  13.     /// Сервис выделения штампов времени.
  14.     /// </summary>
  15.     public interface ITimeStampProvider
  16.     {
  17.         /// <summary>
  18.         /// Возвращает уникальную отметку времени.
  19.         /// </summary>
  20.         DateTime TimeStamp { get; }
  21.     }
  22.  
  23.     /// <summary>
  24.     /// Тесты для класса <see cref="TimeStampProvider"/>.
  25.     /// </summary>
  26.     [TestFixture]
  27.     public class TimeStampProviderTest
  28.     {
  29.         /// <summary>
  30.         /// Тестовый объект.
  31.         /// </summary>
  32.         private TimeStampProvider _timeStampProvider;
  33.  
  34.         /// <summary>
  35.         /// Настройка теста.
  36.         /// </summary>
  37.         [SetUp]
  38.         public void Setup()
  39.         {
  40.             _timeStampProvider = new TimeStampProvider();
  41.         }
  42.  
  43.         /// <summary>
  44.         /// Тест на то, что провайдер возвращает только уникальные объекты.
  45.         /// </summary>
  46.         [Test]
  47.         public void TimeStampProviderShouldReturnUniqueValuesTest()
  48.         {
  49.             // act
  50.             var timeStamps = Enumerable
  51.                 .Range(0, 10000)
  52.                 .Select(_ => _timeStampProvider.TimeStamp).ToArray();
  53.  
  54.             // assert
  55.             timeStamps.Should().OnlyHaveUniqueItems();
  56.         }
  57.  
  58.         /// <summary>
  59.         /// Тест на то, что провайдер возвращает только уникальные объекты.
  60.         /// </summary>
  61.         [Test]
  62.         public void ConcurrentTimeStampProviderShouldReturnUniqueValuesTest()
  63.         {
  64.             // act
  65.             var timeStamps = Enumerable
  66.                 .Range(0, 10000)
  67.                 .AsParallel()
  68.                 .Select(_ => _timeStampProvider.TimeStamp).ToArray();
  69.  
  70.             // assert
  71.             timeStamps.Should().OnlyHaveUniqueItems();
  72.         }
  73.  
  74.         /// <summary>
  75.         /// Тест на то, что провайдер возвращает только уникальные объекты.
  76.         /// </summary>
  77.         [Test]
  78.         public void TimeStampProviderShouldReturnRoundedValuesTest()
  79.         {
  80.             // act
  81.             var timeStamps = Enumerable
  82.                 .Range(0, 1000)
  83.                 .AsParallel()
  84.                 .Select(_ => _timeStampProvider.TimeStamp).ToArray();
  85.  
  86.             // assert
  87.             foreach (var timeStamp in timeStamps)
  88.             {
  89.                 (timeStamp.Ticks % TimeSpan.TicksPerMillisecond).Should().Be(0);
  90.             }
  91.         }
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement