예제 #1
0
        public void TestIfPostgreStyleSortsProperly()
        {
            var g1 = MaxGuid();
            var g2 = Guid.Empty;
            // Inject the dates
            var d     = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
            var comb1 = PostgreCombs.Create(g1, d);
            var comb2 = PostgreCombs.Create(g2, d.AddMilliseconds(1));

            Assert.Equal(-1, comb1.CompareTo(comb2));
        }
예제 #2
0
        public void TestIfHybridStyleSortsProperly()
        {
            var g1 = MaxGuid();
            var g2 = Guid.Empty;
            // Inject the dates
            var d = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            System.Data.SqlTypes.SqlGuid comb1 = HybridCombs.Create(g1, d);
            System.Data.SqlTypes.SqlGuid comb2 = HybridCombs.Create(g2, d.AddMilliseconds(1));
            //Console.WriteLine(comb1.ToString());
            //Console.WriteLine(comb2.ToString());
            Assert.Equal(-1, comb1.CompareTo(comb2));
        }
예제 #3
0
            protected override async Task <Shelter> HandleCore(AddCmd cmd)
            {
                cmd.ShelterId = _guidProvider.Create();
                var result = await _repo.QueryAsync <Shelter>(_repo.Queries.Shelter.Insert, cmd);

                return(result.FirstOrDefault());
            }
예제 #4
0
		/// <summary>
		/// Ensure that the date provided to be injected into a GUID is the same date we get back from it.
		/// Allowed for an optional resolution loss in the time. Calculates the delta using ticks to
		/// avoid floating point drift in using TotalMilliseconds.
		/// </summary>
		private void IsReversible(ICombProvider Comb, int ClockDriftAllowedMs) {
			var dt = DateTime.UtcNow;
			var comb = Comb.Create(dt);
			var dtDecoded = Comb.GetTimestamp(comb);
			var delta = (dtDecoded.Ticks - dt.Ticks) / 10000;
			Assert.InRange(delta, -ClockDriftAllowedMs, ClockDriftAllowedMs);
		}
예제 #5
0
        /// <summary>
        /// Ensure that the date provided to be injected into a GUID is the same date we get back from it.
        /// Allowed for an optional resolution loss in the time. Calculates the delta using ticks to
        /// avoid floating point drift in using TotalMilliseconds.
        /// </summary>
        private void IsReversible(ICombProvider Comb, int ClockDriftAllowedMs)
        {
            var dt        = DateTime.UtcNow;
            var comb      = Comb.Create(dt);
            var dtDecoded = Comb.GetTimestamp(comb);
            var delta     = (dtDecoded.Ticks - dt.Ticks) / 10000;

            Assert.InRange(delta, -ClockDriftAllowedMs, ClockDriftAllowedMs);
        }
예제 #6
0
        public void TestUtcNoRepeatTimestampProvider()
        {
            var g1              = SqlNoRepeatCombs.Create();
            var dt1             = SqlNoRepeatCombs.GetTimestamp(g1);
            var inSequenceCount = 0;

            for (var i = 0; i < 1000; i++)
            {
                var g2  = SqlNoRepeatCombs.Create();
                var dt2 = SqlNoRepeatCombs.GetTimestamp(g2);
                if (dt2 > dt1)
                {
                    inSequenceCount++;
                }
                else
                {
                    Console.WriteLine($"{dt1:MM/dd/yyyy hh:mm:ss.fff} > {dt2:MM/dd/yyyy hh:mm:ss.fff}");
                }
                dt1 = dt2;
            }
            Assert.Equal(1000, inSequenceCount);
        }
예제 #7
0
 public Guid GenerateID(Guid id)
 {
     return(_sqlNoRepeatCombs.Create(id));
 }
예제 #8
0
 public static Guid Create()
 {
     return(SqlNoRepeatCombs.Create());
 }