public void MemoryKeyValueDataStore_WithDefaultConstructor_ShouldInitializeObjectCorrectly()
        {
            // Act + Assert
            var db = new MemoryKeyValueDataStore <IKeyModel, IValueModel>();

            Assert.IsNotNull(db);
        }
Exemple #2
0
        public void MemoryKeyValueDataStore_AddUpdateGetRemoveOfOneKey_ShouldWork()
        {
            // Arrange
            var db  = new MemoryKeyValueDataStore <IKeyModel, IValueModel>();
            var key = new KeyModel
            {
                Id = DateTime.Now.Millisecond
            };

            var value1 = new ValueModel
            {
                Id      = 234234 + DateTime.Now.Millisecond,
                Content = Guid.NewGuid().ToString()
            };

            var value2 = new ValueModel
            {
                Id      = 5354 + DateTime.Now.Millisecond,
                Content = Guid.NewGuid().ToString()
            };

            // Act: AddOrUpdate
            var addResult = db.AddOrUpdate(key, k => value1, (k, v) => value1);

            // Assert: AddOrUpdate
            Assert.AreSame(value1, addResult, "Returned after addition value should be same as the added.");

            // Act: AddOrUpdate
            var updateResult = db.AddOrUpdate(key, k => value2, (k, v) => value2);

            // Assert: AddOrUpdate
            Assert.AreSame(value2, updateResult, "Returned after update value should be same as the updated.");

            // Act: Keys
            var keysAfterAdd = db.Keys.ToList();

            // Assert: Keys
            Assert.IsTrue(keysAfterAdd.Contains(key), "Added key should be present in the Keys list.");

            // Act: Get
            var valueFromDb = db[key];

            // Assert: Get
            Assert.AreSame(value2, valueFromDb, "Indexer should return the added object.");

            // Act: Remove
            var removeResult = db.Remove(key);

            // Assert: Remove
            Assert.IsTrue(removeResult, "Key should be removed.");

            // Act: Keys
            var keysAfterRemove = db.Keys.ToList();

            // Assert: Keys
            Assert.IsFalse(keysAfterRemove.Contains(key), "Removed key should not be present in the Keys list.");
        }
        public void MemoryKeyValueDataStore_InvocationOfKeys_ShouldNotThrow()
        {
            // Arrange
            var db = new MemoryKeyValueDataStore <IKeyModel, IValueModel>();

            // Act
            var keys = db.Keys;

            // Assert
            Assert.IsNotNull(keys);
        }
        public void MemoryKeyValueDataStore_AddOrUpdateAllNullParameters_ShouldThrowArgumentNullException()
        {
            // Arrange
            var db = new MemoryKeyValueDataStore <IKeyModel, IValueModel>();

            // Act + Assert
            Assert.Throws <ArgumentNullException>(() =>
            {
                db.AddOrUpdate(null, null, null);
            });
        }
        public void MemoryKeyValueDataStore_AddOrUpdateWithNullKeyAndNullAddValueFactory_ShouldThrowArgumentNullException()
        {
            // Arrange
            var valueMock = new Mock <IValueModel>();
            var db        = new MemoryKeyValueDataStore <IKeyModel, IValueModel>();

            // Act + Assert
            Assert.Throws <ArgumentNullException>(() =>
            {
                db.AddOrUpdate(null, null, (k, v) => valueMock.Object);
            });
        }
        public void MemoryKeyValueDataStore_RemoveWithNullKey_ShouldThrowArgumentNullExceptionWithCorrectParamName()
        {
            // Arrange
            var db = new MemoryKeyValueDataStore <IKeyModel, IValueModel>();

            // Act + Assert
            var exception = Assert.Throws <ArgumentNullException>(() =>
            {
                db.Remove(null);
            });

            Assert.AreEqual(Constants.KeyParamName, exception.ParamName);
        }
        public void MemoryKeyValueDataStore_AddOrUpdateWithNullKey_ShouldThrowArgumentNullExceptionWithCorrectParamName()
        {
            // Arrange
            var valueMock = new Mock <IValueModel>();
            var db        = new MemoryKeyValueDataStore <IKeyModel, IValueModel>();

            // Act + Assert
            var exception = Assert.Throws <ArgumentNullException>(() =>
            {
                db.AddOrUpdate(null, k => valueMock.Object, (k, v) => valueMock.Object);
            });

            Assert.AreEqual(Constants.KeyParamName, exception.ParamName);
        }
        public void MemoryKeyValueDataStore_AddOrUpdateWithNullAddValueFactoryAndNullUpdateValueFactory_ShouldThrowArgumentNullException()
        {
            // Arrange
            var keyMock = new Mock <IKeyModel>();

            keyMock
            .SetupGet(k => k.Id)
            .Returns(1);

            var db = new MemoryKeyValueDataStore <IKeyModel, IValueModel>();

            // Act + Assert
            Assert.Throws <ArgumentNullException>(() =>
            {
                db.AddOrUpdate(keyMock.Object, null, null);
            });
        }
        public void MemoryKeyValueDataStore_AddOrUpdateWithNullUpdateValueFactory_ShouldThrowArgumentNullExceptionWithCorrectParamName()
        {
            // Arrange
            var keyMock = new Mock <IKeyModel>();

            keyMock
            .SetupGet(k => k.Id)
            .Returns(1);

            var valueMock = new Mock <IValueModel>();
            var db        = new MemoryKeyValueDataStore <IKeyModel, IValueModel>();

            // Act + Assert
            var exception = Assert.Throws <ArgumentNullException>(() =>
            {
                db.AddOrUpdate(keyMock.Object, k => valueMock.Object, null);
            });

            Assert.AreEqual(Constants.UpdateValueFactoryParamName, exception.ParamName);
        }