Example #1
0
        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}");
        }
Example #2
0
        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)));
        }
Example #3
0
 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);
 }
Example #4
0
 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);
 }
Example #5
0
 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);
 }
Example #6
0
        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;
            }
        }