public void ShouldFailToGetTimestamp(string seed) { // setup var guid = new Guid(seed); // execute Action action = () => SequentialGuid.GetTimestamp(guid); // assert action.Should().Throw<InvalidOperationException>().WithMessage($"Cannot extract a valid DateTime from {seed}"); }
public void ShouldGetTimestamp() { // setup var sequentialGuid = SequentialGuid.NewSequentialGuid(); // execute var timestamp = SequentialGuid.GetTimestamp(sequentialGuid); // assert timestamp.Should().BeAfter(DateTime.UtcNow.Subtract(TimeSpan.FromMilliseconds(1))); timestamp.Should().BeBefore(DateTime.UtcNow.Add(TimeSpan.FromMilliseconds(1))); }
public void ShouldGenerateEmptyGuidFromStringSeed() { // setup const string emptyStringSeed = ""; // this is what an empty seed looks like var emptyFromStringSeed = SequentialGuid.NewSequentialGuid(emptyStringSeed, () => DateTimeHelper.Epoch); // execute var resultFromString = SequentialGuid.GetTimestamp(emptyFromStringSeed); // assert emptyFromStringSeed.Should().Be(Guid.Empty); resultFromString.Should().Be(DateTimeHelper.Epoch); }
public void ShouldExtractNowTimestampFromSequentialGuid() { // setup var utcNow = DateTime.Now; var sequentialGuid = SequentialGuid.NewSequentialGuid(() => DateTime.Now); // execute var extractedTime = SequentialGuid.GetTimestamp(sequentialGuid); // assert extractedTime.Year.Should().Be(utcNow.Year); extractedTime.Month.Should().Be(utcNow.Month); extractedTime.Day.Should().Be(utcNow.Day); extractedTime.Hour.Should().Be(utcNow.Hour); extractedTime.Minute.Should().Be(utcNow.Minute); extractedTime.Second.Should().Be(utcNow.Second); }
public void ShouldExtractEpochTimestampFromSequentialGuid() { // setup const string seed = "Burritos"; var now = DateTimeHelper.Epoch; var sequentialGuid = SequentialGuid.NewSequentialGuid(seed,() => now); // execute var extractedTime = SequentialGuid.GetTimestamp(sequentialGuid); // assert extractedTime.Year.Should().Be(now.Year); extractedTime.Month.Should().Be(now.Month); extractedTime.Day.Should().Be(now.Day); extractedTime.Hour.Should().Be(now.Hour); extractedTime.Minute.Should().Be(now.Minute); extractedTime.Second.Should().Be(now.Second); extractedTime.Second.Should().Be(now.Millisecond); }
public void ShouldGenerateSequentialGuidsWithUnknownSeedSeed(int expectedLength) { // setup var guidList = new HashSet<Guid>(); // execute for (var i = 0; i < expectedLength; i++) { guidList.Add(SequentialGuid.NewSequentialGuid()); } // assert guidList.Count.Should().Be(expectedLength); guidList.Distinct().Count().Should().Be(expectedLength, "all guids are unique"); var previousStamp = DateTime.MinValue; foreach (var guid in guidList.OrderBy(SequentialGuid.GetTimestamp)) { var stamp = SequentialGuid.GetTimestamp(guid); stamp.Should().BeOnOrAfter(previousStamp); previousStamp = stamp; } }