示例#1
0
        public void GetOrCreateIfNotDefault_Int_DefaultValueThenNonDefault()
        {
            const string key = "test";

            ObjectTreeAssert.AreEqual(0, distributedCache.GetOrCreateIfNotDefault <int>(key, (options) => 0));
            ObjectTreeAssert.AreEqual(2, distributedCache.GetOrCreateIfNotDefault <int>(key, (options) => 2));
        }
示例#2
0
        public async Task GetKeysAsync_Sample()
        {
            var requestUri = new Uri("users/test/keys", UriKind.Relative);
            var json       = TestFileProvider.ReadText("keys.json");

            clientContext.MockHttpMessageHandler.SetResponse(requestUri, json);

            var keys = await client.GetKeysAsync("test");

            Assert.IsNotNull(keys);

            var expected = new[]
            {
                new KeyResult
                {
                    Id        = 19,
                    Key       = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6jjVtyI0CgyiGkmwAbjZgMU2LXThTlgUp7EFEme0KM8mPsD6eiHk330UyXrFIu9+IAFjl3lj8/PJ30NUUnf26Zv7pgeLoxeGwpMXdh4UCIVL1hWAhWxGLbNIUC/KSX83LNCD2EDjxsmv5HeDi4dAXkURn3e14QetjpSUQsYke+h91ANQJ7WVxO7UXqrGB2Mpk/+FkypT1Q+xYSnquAQ4SwnWV16fBBoOyIM+fhKRuv0oOsu6AMaxdPDNA5TTeOwo9J7W1UCo0dgOLTX7GL5qFPdcgsHfwskSRXb2qgixTL4765epGTT6akdWO+7N9O0c2SjshlaE7KN90V3ncA56t ",
                    Url       = "https://try.gogs.io/api/v1/user/keys/19",
                    Title     = "Plop",
                    CreatedAt = new DateTimeOffset(2015, 02, 09, 15, 58, 42, TimeSpan.FromHours(-5)),
                },
            };

            ObjectTreeAssert.AreEqual(expected, keys);
        }
示例#3
0
        public void RoundTrip_TimeParty()
        {
            var input = new TimeParty
            {
                UnixDateTimeSeconds       = 2,
                UnitDateTimeSecondsOrNull = 2,
                DateTimeUtc               = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Utc),
                DateTimeUtcOrNull         = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Utc),
                DateTimeLocal             = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Local),
                DateTimeLocalOrNull       = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Local),
                DateTimeUnspecified       = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Unspecified),
                DateTimeUnspecifiedOrNull = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Unspecified),
                DateTimeOffsetUtc         = new DateTimeOffset(2002, 2, 2, 12, 1, 2, TimeSpan.FromHours(0)),
                DateTimeOffsetUtcOrNull   = new DateTimeOffset(2002, 2, 2, 12, 1, 2, TimeSpan.FromHours(0)),
                DateTimeOffsetLocal       = new DateTimeOffset(2002, 2, 2, 12, 1, 2, TimeSpan.FromHours(-5)),
                DateTimeOffsetLocalOrNull = new DateTimeOffset(2002, 2, 2, 12, 1, 2, TimeSpan.FromHours(-5)),
            };

            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <TimeParty>(serialized);

            ObjectTreeAssert.AreEqual(input, deserialized);

            Assert.Equal(DateTimeKind.Utc, deserialized.DateTimeUtc.Kind);
            Assert.Equal(DateTimeKind.Utc, deserialized.DateTimeUtcOrNull.Value.Kind);
            Assert.Equal(DateTimeKind.Local, deserialized.DateTimeLocal.Kind);
            Assert.Equal(DateTimeKind.Local, deserialized.DateTimeLocalOrNull.Value.Kind);
            Assert.Equal(DateTimeKind.Unspecified, deserialized.DateTimeUnspecified.Kind);
            Assert.Equal(DateTimeKind.Unspecified, deserialized.DateTimeUnspecifiedOrNull.Value.Kind);
        }
示例#4
0
        public async Task GetOrCreateIfNotDefaultAsync_Int_DefaultValueThenNonDefault()
        {
            const string key = "test";

            ObjectTreeAssert.AreEqual(0, await distributedCache.GetOrCreateIfNotDefaultAsync <int>(key, (options) => Task.FromResult(0)));
            ObjectTreeAssert.AreEqual(2, await distributedCache.GetOrCreateIfNotDefaultAsync <int>(key, (options) => Task.FromResult(2)));
        }
示例#5
0
        public void RoundTrip_ImmutableIdNamePair_ToIdNamePair()
        {
            var input        = new ImmutableIdNamePair(2, "hello");
            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <IdNamePair>(serialized);

            ObjectTreeAssert.AreEqual(new IdNamePair(), deserialized);
        }
示例#6
0
        public async Task GetOrCreateIfNotDefaultAsync_Int_CreatesOnFirstCallThenGetsOnSecondCall()
        {
            const string key   = "test";
            var          input = 2;

            ObjectTreeAssert.AreEqual(input, await distributedCache.GetOrCreateIfNotDefaultAsync <int>(key, (options) => Task.FromResult(input)));
            ObjectTreeAssert.AreEqual(input, await distributedCache.GetOrCreateIfNotDefaultAsync <int>(key, (options) => Task.FromResult(3)));
        }
示例#7
0
        public void GetOrCreateIfNotDefault_Int_CreatesOnFirstCallThenGetsOnSecondCall()
        {
            const string key   = "test";
            var          input = 2;

            ObjectTreeAssert.AreEqual(input, distributedCache.GetOrCreateIfNotDefault <int>(key, (options) => input));
            ObjectTreeAssert.AreEqual(input, distributedCache.GetOrCreateIfNotDefault <int>(key, (options) => 3));
        }
示例#8
0
        public void RoundTrip_TimeParty_Defaults()
        {
            var input = new TimeParty();

            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <TimeParty>(serialized);

            ObjectTreeAssert.AreEqual(input, deserialized);
        }
示例#9
0
        public async Task SetAsyncThenGetAsync_AbsoluteExpiration_IdNamePair()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };
            await distributedCache.SetAsync(key, input, absoluteExpiration : DateTimeOffset.MaxValue);

            ObjectTreeAssert.AreEqual(input, await distributedCache.GetAsync <IdNamePair>(key));
        }
示例#10
0
        public async Task SetThenGetAsync_AbsoluteExpirationRelativeToNow_IdNamePair()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };
            await distributedCache.SetAsync(key, input, absoluteExpirationRelativeToNow : TimeSpan.FromDays(2));

            ObjectTreeAssert.AreEqual(input, await distributedCache.GetAsync <IdNamePair>(key));
        }
示例#11
0
        public void SetThenGet_AbsoluteExpiration_IdNamePair()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };

            distributedCache.Set(key, input, absoluteExpiration: DateTimeOffset.MaxValue);
            ObjectTreeAssert.AreEqual(input, distributedCache.Get <IdNamePair>(key));
        }
示例#12
0
        public void SetThenGet_IdNamePair()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };

            distributedCache.Set(key, input);
            ObjectTreeAssert.AreEqual(input, distributedCache.Get <IdNamePair>(key));
        }
示例#13
0
        public async Task SetAsyncThenGetAsync_IdNamePair()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };
            await distributedCache.SetAsync(key, input);

            ObjectTreeAssert.AreEqual(input, await distributedCache.GetAsync <IdNamePair>(key));
        }
示例#14
0
        public void RoundTrip_StringComparisonMetadata()
        {
            var input = new StringComparisonMetadata
            {
                StringComparisonId = (int)StringComparison.OrdinalIgnoreCase,
            };
            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <StringComparisonMetadata>(serialized);

            ObjectTreeAssert.AreEqual(input, deserialized);
        }
        public void GetOrCreate_IdNamePair_AbsoluteExpiration_CreatesThenGets()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };

            ObjectTreeAssert.AreEqual(input, memoryCache.GetOrCreate <IdNamePair>(key, () => input, absoluteExpiration: DateTimeOffset.MaxValue));
            ObjectTreeAssert.AreEqual(input, memoryCache.GetOrCreate <IdNamePair>(key, () => new IdNamePair {
                Id = 3, Name = "world"
            }, absoluteExpiration: DateTimeOffset.MaxValue));
        }
        public async Task GetOrCreateAsync_IdNamePair_AbsoluteExpiration_CreatesThenGets()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };

            ObjectTreeAssert.AreEqual(input, await memoryCache.GetOrCreateAsync <IdNamePair>(key, () => Task.FromResult(input), absoluteExpiration: DateTimeOffset.MaxValue));
            ObjectTreeAssert.AreEqual(input, await memoryCache.GetOrCreateAsync <IdNamePair>(key, () => Task.FromResult(new IdNamePair {
                Id = 3, Name = "world"
            }), absoluteExpiration: DateTimeOffset.MaxValue));
        }
示例#17
0
        public void RoundTrip_IdNamePair()
        {
            var input = new IdNamePair
            {
                Id   = 2,
                Name = "hello",
            };
            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <IdNamePair>(serialized);

            ObjectTreeAssert.AreEqual(input, deserialized);
        }
        public void GetOrCreate_IdNamePair_AbsoluteExpirationRelativeToNow_CreatesThenGets()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };

            ObjectTreeAssert.AreEqual(input, memoryCache.GetOrCreate <IdNamePair>(key, () => input, absoluteExpirationRelativeToNow: TimeSpan.FromDays(2)));
            ObjectTreeAssert.AreEqual(input, memoryCache.GetOrCreate <IdNamePair>(key, () => new IdNamePair {
                Id = 3, Name = "world"
            }, absoluteExpirationRelativeToNow: TimeSpan.FromDays(2)));
        }
        public async Task GetOrCreateAsync_IdNamePair_AbsoluteExpirationRelativeToNow_CreatesThenGets()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };

            ObjectTreeAssert.AreEqual(input, await memoryCache.GetOrCreateAsync <IdNamePair>(key, () => Task.FromResult(input), absoluteExpirationRelativeToNow: TimeSpan.FromDays(2)));
            ObjectTreeAssert.AreEqual(input, await memoryCache.GetOrCreateAsync <IdNamePair>(key, () => Task.FromResult(new IdNamePair {
                Id = 3, Name = "world"
            }), absoluteExpirationRelativeToNow: TimeSpan.FromDays(2)));
        }
示例#20
0
        public async Task GetOrCreateIfNotDefaultAsync_IdNamePair_DoesNotCallFactoryIfAlreadyExists()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };

            await distributedCache.SetAsync(key, input);

            ObjectTreeAssert.AreEqual(input, await distributedCache.GetOrCreateIfNotDefaultAsync <IdNamePair>(key, new Func <DistributedCacheEntryOptions, Task <IdNamePair> >((options) => throw new Exception("Test"))));
            ObjectTreeAssert.AreEqual(input, await distributedCache.GetOrCreateIfNotDefaultAsync <IdNamePair>(key, new Func <Task <IdNamePair> >(() => throw new Exception("Test2")), absoluteExpirationRelativeToNow: TimeSpan.FromDays(2)));
            ObjectTreeAssert.AreEqual(input, await distributedCache.GetOrCreateIfNotDefaultAsync <IdNamePair>(key, new Func <Task <IdNamePair> >(() => throw new Exception("Test3")), absoluteExpiration: DateTimeOffset.MaxValue));
        }
示例#21
0
        public void RoundTrip_NoIdGetterIdNamePair_ToIdNamePair()
        {
            var input = new NoIdGetterIdNamePair {
                Id = 2, Name = "hello",
            };
            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <IdNamePair>(serialized);

            var expected = new IdNamePair {
                Name = "hello"
            };

            ObjectTreeAssert.AreEqual(expected, deserialized);
        }
示例#22
0
        public void RoundTrip_CustomJsonAttributeClass()
        {
            var input = new CustomJsonAttributeClass
            {
                Id          = 1,
                AlternateId = 2,
                Ignored     = 3,
                Name        = "4",
            };

            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <CustomJsonAttributeClass>(serialized);

            ObjectTreeAssert.AreEqual(input, deserialized);
        }
示例#23
0
        public void RoundTrip_CustomDataContractClass()
        {
            var input = new CustomDataContractClass
            {
                Id          = 1,
                AlternateId = 2,
                NotMember   = 3,
                Ignored     = 4,
                Name        = "5",
            };

            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <CustomDataContractClass>(serialized);

            ObjectTreeAssert.AreEqual(input, deserialized);
        }
示例#24
0
        public void GetOrCreateIfNotDefault_IdNamePair_CreatesOnFirstCallThenGetsOnSecondCall()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };

            ObjectTreeAssert.AreEqual(input, distributedCache.GetOrCreateIfNotDefault <IdNamePair>(key, (options) => input));
            ObjectTreeAssert.AreEqual(input, distributedCache.GetOrCreateIfNotDefault <IdNamePair>(key, (options) => new IdNamePair {
                Id = 3, Name = "world"
            }));
            ObjectTreeAssert.AreEqual(input, distributedCache.GetOrCreateIfNotDefault <IdNamePair>(key, () => new IdNamePair {
                Id = 3, Name = "world"
            }, absoluteExpirationRelativeToNow: TimeSpan.FromDays(2)));
            ObjectTreeAssert.AreEqual(input, distributedCache.GetOrCreateIfNotDefault <IdNamePair>(key, () => new IdNamePair {
                Id = 3, Name = "world"
            }, absoluteExpiration: DateTimeOffset.MaxValue));
        }
示例#25
0
        public async Task GetOrCreateIfNotDefaultAsync_IdNamePair_CreatesOnFirstCallThenGetsOnSecondCall()
        {
            const string key   = "test";
            var          input = new IdNamePair {
                Id = 2, Name = "hello"
            };

            ObjectTreeAssert.AreEqual(input, await distributedCache.GetOrCreateIfNotDefaultAsync <IdNamePair>(key, (options) => Task.FromResult(input)));
            ObjectTreeAssert.AreEqual(input, await distributedCache.GetOrCreateIfNotDefaultAsync <IdNamePair>(key, (options) => Task.FromResult(new IdNamePair {
                Id = 3, Name = "world"
            })));
            ObjectTreeAssert.AreEqual(input, await distributedCache.GetOrCreateIfNotDefaultAsync <IdNamePair>(key, () => Task.FromResult(new IdNamePair {
                Id = 3, Name = "world"
            }), TimeSpan.FromDays(2)));
            ObjectTreeAssert.AreEqual(input, await distributedCache.GetOrCreateIfNotDefaultAsync <IdNamePair>(key, () => Task.FromResult(new IdNamePair {
                Id = 3, Name = "world"
            }), DateTimeOffset.MaxValue));
        }
示例#26
0
        public void RoundTrip_ListOfObjects()
        {
            TimeParty[] input = new TimeParty[]
            {
                new TimeParty
                {
                    UnixDateTimeSeconds = 2,
                    DateTimeUtc         = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Utc),
                    DateTimeLocal       = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Local),
                    DateTimeUnspecified = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Unspecified),
                    DateTimeOffsetUtc   = new DateTimeOffset(2002, 2, 2, 12, 1, 2, TimeSpan.FromHours(0)),
                    DateTimeOffsetLocal = new DateTimeOffset(2002, 2, 2, 12, 1, 2, TimeSpan.FromHours(-5)),
                },
                new TimeParty(),
            };
            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <List <TimeParty> >(serialized);

            ObjectTreeAssert.AreEqual(input, deserialized);
        }
示例#27
0
        public async Task SearchAsync_Sample()
        {
            var requestUri = new Uri("users/search?q=temp", UriKind.Relative);
            var json       = TestFileProvider.ReadText("usersDataWrapper.json");

            clientContext.MockHttpMessageHandler.SetResponse(requestUri, json);

            var users = await client.SearchAsync("temp");

            Assert.IsNotNull(users);

            var expected = new[]
            {
                new UserResult
                {
                    Id        = 9075,
                    Username  = "******",
                    FullName  = "",
                    Email     = "*****@*****.**",
                    AvatarUrl = "https://secure.gravatar.com/avatar/57d9c9c2bcc73252855f785e19bc02c1"
                },
                new UserResult
                {
                    Id        = 9417,
                    Username  = "******",
                    FullName  = "",
                    Email     = "*****@*****.**",
                    AvatarUrl = "https://secure.gravatar.com/avatar/e87463cc49c6a58e139b75adfb27d052"
                },
                new UserResult
                {
                    Id        = 10236,
                    Username  = "******",
                    FullName  = "",
                    Email     = "*****@*****.**",
                    AvatarUrl = "https://secure.gravatar.com/avatar/ca890e0da264bb85254a787bebd8da7e"
                },
            };

            ObjectTreeAssert.AreEqual(expected, users);
        }
示例#28
0
        public async Task GetAsync_Sample()
        {
            var requestUri = new Uri("users/test", UriKind.Relative);
            var json       = TestFileProvider.ReadText("user.json");

            clientContext.MockHttpMessageHandler.SetResponse(requestUri, json);

            var user = await client.GetAsync("test");

            Assert.IsNotNull(user);

            var expected = new UserResult
            {
                Id        = 7,
                Username  = "******",
                FullName  = "",
                Email     = "",
                AvatarUrl = "https://secure.gravatar.com/avatar/bb11777b425ba7229a182f446783203d"
            };

            ObjectTreeAssert.AreEqual(expected, user);
        }
        public async Task SerializeAndDeserialize()
        {
            var responseMessage = new HttpResponseMessage(HttpStatusCode.OK);

            responseMessage.Headers.ETag = new EntityTagHeaderValue("\"abcdef==\"");
            responseMessage.Headers.TryAddWithoutValidation("Link", @"<https://3.basecampapi.com/999999999/buckets/2085958496/messages.json?page=4>; rel=""next""");
            responseMessage.Content = new StringContent("This is the content");

            var entry = await ResponseMessageCacheEntry.CreateOrNullAsync(responseMessage);

            Assert.IsNotNull(entry);
            var serialized   = JsonConvert.SerializeObject(entry);
            var deserialized = JsonConvert.DeserializeObject <ResponseMessageCacheEntry>(serialized);

            ObjectTreeAssert.AreEqual(entry, deserialized, new ObjectTreeNodeFilter
            {
                ExcludedPropertyNames = new[] { nameof(ResponseMessageCacheEntry.Headers), nameof(ResponseMessageCacheEntry.ContentHeaders) },
            });

            CollectionAssert.AreEquivalent(entry.Headers, deserialized.Headers);
            CollectionAssert.AreEquivalent(entry.ContentHeaders, deserialized.ContentHeaders);
        }
示例#30
0
        public void RoundTrip_DictionaryOfObjects()
        {
            Dictionary <string, TimeParty> input = new Dictionary <string, TimeParty>
            {
                ["one"] = new TimeParty(),
                ["two"] = new TimeParty
                {
                    UnixDateTimeSeconds = 2,
                    DateTimeUtc         = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Utc),
                    DateTimeLocal       = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Local),
                    DateTimeUnspecified = new DateTime(2002, 2, 2, 12, 1, 2, 123, DateTimeKind.Unspecified),
                    DateTimeOffsetUtc   = new DateTimeOffset(2002, 2, 2, 12, 1, 2, TimeSpan.FromHours(0)),
                    DateTimeOffsetLocal = new DateTimeOffset(2002, 2, 2, 12, 1, 2, TimeSpan.FromHours(-5)),
                },
                ["three"] = null
            };
            var serialized   = BinaryConvert.Serialize(input);
            var deserialized = BinaryConvert.Deserialize <Dictionary <string, TimeParty> >(serialized);

            Assert.Equal(input.Keys.OrderBy(x => x), deserialized.Keys.OrderBy(x => x));
            ObjectTreeAssert.AreEqual(input["one"], deserialized["one"]);
            ObjectTreeAssert.AreEqual(input["two"], deserialized["two"]);
            Assert.Null(deserialized["three"]);
        }