Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using FluentAssertions;
- using NUnit.Framework;
- using Sberbank.Transit.Core;
- namespace Sberbank.Transit.Business.Tests.Core
- {
- /// <summary>
- /// Сервис выделения штампов времени.
- /// </summary>
- public interface ITimeStampProvider
- {
- /// <summary>
- /// Возвращает уникальную отметку времени.
- /// </summary>
- DateTime TimeStamp { get; }
- }
- /// <summary>
- /// Тесты для класса <see cref="TimeStampProvider"/>.
- /// </summary>
- [TestFixture]
- public class TimeStampProviderTest
- {
- /// <summary>
- /// Тестовый объект.
- /// </summary>
- private TimeStampProvider _timeStampProvider;
- /// <summary>
- /// Настройка теста.
- /// </summary>
- [SetUp]
- public void Setup()
- {
- _timeStampProvider = new TimeStampProvider();
- }
- /// <summary>
- /// Тест на то, что провайдер возвращает только уникальные объекты.
- /// </summary>
- [Test]
- public void TimeStampProviderShouldReturnUniqueValuesTest()
- {
- // act
- var timeStamps = Enumerable
- .Range(0, 10000)
- .Select(_ => _timeStampProvider.TimeStamp).ToArray();
- // assert
- timeStamps.Should().OnlyHaveUniqueItems();
- }
- /// <summary>
- /// Тест на то, что провайдер возвращает только уникальные объекты.
- /// </summary>
- [Test]
- public void ConcurrentTimeStampProviderShouldReturnUniqueValuesTest()
- {
- // act
- var timeStamps = Enumerable
- .Range(0, 10000)
- .AsParallel()
- .Select(_ => _timeStampProvider.TimeStamp).ToArray();
- // assert
- timeStamps.Should().OnlyHaveUniqueItems();
- }
- /// <summary>
- /// Тест на то, что провайдер возвращает только уникальные объекты.
- /// </summary>
- [Test]
- public void TimeStampProviderShouldReturnRoundedValuesTest()
- {
- // act
- var timeStamps = Enumerable
- .Range(0, 1000)
- .AsParallel()
- .Select(_ => _timeStampProvider.TimeStamp).ToArray();
- // assert
- foreach (var timeStamp in timeStamps)
- {
- (timeStamp.Ticks % TimeSpan.TicksPerMillisecond).Should().Be(0);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement