Пример #1
0
        public void Expirable_EqualsStruct()
        {
            var v = DateTime.UtcNow;
            var x = new Expirable <DateTime>(new TimeSpan(0, 0, 0, 0, 10), v);

            Assert.AreEqual(default(DateTime), x.DefaultValue);

            Assert.IsTrue(x.Equals(x));
            Assert.IsTrue(x.Equals(v));
            Assert.IsTrue(x.Equals(new Expirable <DateTime>(3, v)));
            Assert.AreEqual(v.ToString(), x.ToString());

            Assert.IsFalse(x.Equals(v.AddTicks(1)));
            Assert.IsFalse(x.Equals(new Expirable <DateTime>(3, v.AddTicks(1))));

            Assert.IsFalse(x.Equals(null));

            DateTime v2;
            var      r2 = x.TryGet(out v2);

            Assert.IsTrue(r2);
            Assert.AreEqual(v, v2);

            x.Expire();

            Assert.IsTrue(x.Equals(DateTime.MinValue));
            Assert.AreEqual(DateTime.MinValue.ToString(), x.ToString());

            DateTime v3;
            var      r3 = x.TryGet(out v3);

            Assert.IsFalse(r3);
            Assert.AreEqual(x.DefaultValue, v3);
        }
Пример #2
0
        public void Expirable_EqualsClass()
        {
            var v = "Test";
            var x = new Expirable <string>(new TimeSpan(0, 0, 0, 0, 10), v);

            Assert.AreEqual(null, x.DefaultValue);

            Assert.IsTrue(x.Equals(x));
            Assert.IsTrue(x.Equals(v));
            Assert.IsTrue(x.Equals(new Expirable <string>(3, "Test")));
            Assert.AreEqual(v.ToString(), x.ToString());

            Assert.IsFalse(x.Equals("Test2"));
            Assert.IsFalse(x.Equals(new Expirable <string>(3, "Test2")));

            Assert.IsFalse(x.Equals(null));

            string v2;
            var    r2 = x.TryGet(out v2);

            Assert.IsTrue(r2);
            Assert.AreEqual(v, v2);

            x.Expire();

            Assert.IsTrue(x.Equals(null));
            Assert.AreEqual("", x.ToString());

            string v3;
            var    r3 = x.TryGet(out v3);

            Assert.IsFalse(r3);
            Assert.AreEqual(x.DefaultValue, v3);
        }
Пример #3
0
        public void ExpiredWithCounter()
        {
            int             counter         = 10;
            Expirable <int> expiredNewValue = new Expirable <int>(() => counter++, i => DateTime.Now.AddSeconds(-i));

            Assert.AreEqual(10, expiredNewValue.Value);
            Assert.AreEqual(11, expiredNewValue.Value);
            Assert.AreEqual(12, expiredNewValue.Value);
        }
Пример #4
0
        public void Expirable_Defaults()
        {
            var v = DateTime.UtcNow;
            var x = new Expirable <DateTime>(new TimeSpan(0, 0, 0, 0, 10), v, DateTime.MaxValue);

            Assert.AreEqual(true, x.HasValue);
            Assert.AreEqual(v, x.Value);

            Thread.Sleep(10);

            Assert.AreEqual(false, x.HasValue);
            Assert.AreEqual(DateTime.MaxValue, x);
        }
Пример #5
0
    public async Task ScheduleExpiry()
    {
        if (ExpirationTime == 0.0f)
        {
            return;
        }

        Expirable expriable = this;
        await Task.Delay((int)((ExpirationTime - Time.time) * 1000.0f));

        expriable.Expire();
        expriable = null;
    }
Пример #6
0
        public void Expirable_Basic()
        {
            var v = DateTime.UtcNow;
            var x = new Expirable <DateTime>(new TimeSpan(0, 0, 0, 0, 10), v);

            Assert.AreEqual(true, x.HasValue);
            Assert.AreEqual(v, x.Value);

            Thread.Sleep(10);

            Assert.AreEqual(false, x.HasValue);
            Assert.AreEqual(DateTime.MinValue, x);
            Assert.AreEqual(DateTime.MinValue.ToString(), x.ToString());
        }
Пример #7
0
        public void ExpiredThenLaterNotExpired()
        {
            bool value     = true;
            var  expirable = new Expirable <int>(() => 10, i =>
            {
                if (value) //expired first time
                {
                    value = false;

                    return(DateTime.Now.AddSeconds(-10));
                }
                else //non-expired second time
                {
                    return(DateTime.Now.AddSeconds(10));
                }
            });

            Assert.IsTrue(expirable.Expired);
            var trash = expirable.Value;

            Assert.IsFalse(expirable.Expired);
        }
Пример #8
0
 void Start()
 {
     spriteRenderer = GetComponent <SpriteRenderer>();
     expirable      = GetComponent <Expirable>();
 }
Пример #9
0
 /// <summary>
 /// TODO.
 /// </summary>
 public void Set(string key, T value)
 {
     _cache[key] = new Expirable(
         value: value,
         expirationTime: _clock.GetStopwatchTime().Add(_expirationTimeOffset));
 }
Пример #10
0
        public void Expirable_EqualsStruct()
        {
            var v = DateTime.UtcNow;
            var x = new Expirable <DateTime>(new TimeSpan(0, 0, 0, 0, 10), v);

            Assert.AreEqual(default, x.DefaultValue);
Пример #11
0
        public void NonExpired()
        {
            var nonExpired = new Expirable <int>(() => 10, i => DateTime.Now.AddSeconds(i));

            Assert.IsFalse(nonExpired.Expired);
        }
Пример #12
0
        public void Expired()
        {
            var expired = new Expirable <int>(() => 10, i => DateTime.Now.AddSeconds(-i));

            Assert.IsTrue(expired.Expired);
        }
Пример #13
0
 /// <summary>
 /// TODO.
 /// </summary>
 public void Set(string key, T value)
 {
     _cache[key] = new Expirable(
         value: value,
         expirationTime: _timer.CurrentTime.Add(_expirationTimeOffset));
 }