public void TryGetItem_CaseSensitive_ReturnsCorrectItem() { // Arrange var manager = new TestItemManager(); var item1 = manager.GetOrCreateItem("abc", item => item.Value = 1); var item2 = manager.GetOrCreateItem("ABC", item => item.Value = 2); // Act var actual1 = manager.TryGetItem("abc"); var actual2 = manager.TryGetItem("ABC"); var actual3 = manager.TryGetItem("aBc"); // Assert item1.Should().NotBeNull(); item2.Should().NotBeNull(); item1.Should().NotBeSameAs(item2); actual1.Should().NotBeNull(); actual1.Should().BeSameAs(item1); actual2.Should().NotBeNull(); actual2.Should().BeSameAs(item2); actual3.Should().BeNull(); }
public void GetOrCreateItem_CreatesNew_PreviouslyRemovedItem() { // Arrange var manager = new TestItemManager(); // Act var item1 = manager.GetOrCreateItem( "abc", item => { Assert.Equal(0, item.Value); item.Value = 1; }); Assert.True(manager.TryRemoveItem("abc")); var item2 = manager.GetOrCreateItem( "abc", item => { Assert.Equal(0, item.Value); item.Value = 2; }); // Assert Assert.NotNull(item1); Assert.Equal("abc", item1.ItemId); Assert.Equal(1, item1.Value); Assert.NotNull(item2); Assert.Equal("abc", item2.ItemId); Assert.Equal(2, item2.Value); }
public void GetOrCreateItem_ReusesAndReinitializes_ExistingItem() { // Arrange var manager = new TestItemManager(); // Act var item1 = manager.GetOrCreateItem( "abc", item => { item.Value.Should().Be(0); item.Value = 1; }); var item2 = manager.GetOrCreateItem( "abc", item => { item.Value.Should().Be(1); item.Value = 2; }); // Assert item1.Should().NotBeNull(); item1.ItemId.Should().Be("abc"); item1.Value.Should().Be(2); item1.Should().BeSameAs(item2); }
public void TryGetItem_CaseSensitive_ReturnsCorrectItem() { // Arrange var manager = new TestItemManager(); var item1 = manager.GetOrCreateItem("abc", item => item.Value = 1); var item2 = manager.GetOrCreateItem("ABC", item => item.Value = 2); // Act var actual1 = manager.TryGetItem("abc"); var actual2 = manager.TryGetItem("ABC"); var actual3 = manager.TryGetItem("aBc"); // Assert Assert.NotNull(item1); Assert.NotNull(item2); Assert.NotSame(item2, item1); Assert.NotNull(actual1); Assert.Same(item1, actual1); Assert.NotNull(actual2); Assert.Same(item2, actual2); Assert.Null(actual3); }
public void GetOrCreateItem_CreatesNew_PreviouslyRemovedItem() { // Arrange var manager = new TestItemManager(); // Act var item1 = manager.GetOrCreateItem( "abc", item => { item.Value.Should().Be(0); item.Value = 1; }); manager.TryRemoveItem("abc").Should().BeTrue(); var item2 = manager.GetOrCreateItem( "abc", item => { item.Value.Should().Be(0); item.Value = 2; }); // Assert item1.Should().NotBeNull(); item1.ItemId.Should().Be("abc"); item1.Value.Should().Be(1); item2.Should().NotBeNull(); item2.ItemId.Should().Be("abc"); item2.Value.Should().Be(2); }
public void GetOrCreateItem_ReusesAndReinitializes_ExistingItem() { // Arrange var manager = new TestItemManager(); // Act var item1 = manager.GetOrCreateItem( "abc", item => { Assert.Equal(0, item.Value); item.Value = 1; }); var item2 = manager.GetOrCreateItem( "abc", item => { Assert.Equal(1, item.Value); item.Value = 2; }); // Assert Assert.NotNull(item1); Assert.Equal("abc", item1.ItemId); Assert.Equal(2, item1.Value); Assert.Same(item2, item1); }
public void TryGetItem_NonExistentItem_ReturnsNull() { var manager = new TestItemManager(); var item = manager.TryGetItem("abc"); Assert.Null(item); }
public void GetItems_Works_Empty() { var manager = new TestItemManager(); var items = manager.GetItems(); Assert.Empty(items); }
public void GetOrCreateItem_DoesNotAdd_WhenSetupActionThrows() { var manager = new TestItemManager(); Action action = () => manager.GetOrCreateItem("abc", item => throw new Exception()); Assert.Throws <Exception>(action); Assert.Empty(manager.GetItems()); }
public void GetItems_Works_OneItem() { var manager = new TestItemManager(); var item = manager.GetOrCreateItem("abc", item => { }); var items = manager.GetItems(); Assert.Single(items); Assert.Same(item, items[0]); }
public void GetItems_Works_Empty() { // Arrange var manager = new TestItemManager(); // Act var items = manager.GetItems(); // Assert Assert.Empty(items); }
public void TryGetItem_NonExistentItem_ReturnsNull() { // Arrange var manager = new TestItemManager(); // Act var item = manager.TryGetItem("abc"); // Assert Assert.Null(item); }
public void TryRemoveItem_Works() { var manager = new TestItemManager(); var item = manager.GetOrCreateItem("abc", item => { }); var result1 = manager.TryRemoveItem("abc"); var result2 = manager.TryRemoveItem("abc"); Assert.True(result1); Assert.False(result2); }
public void GetItems_Works_Empty() { // Arrange var manager = new TestItemManager(); // Act var items = manager.GetItems(); // Assert items.Should().BeEmpty(); }
public void GetOrCreateItem_DoesNotAdd_WhenSetupActionThrows() { // Arrange var manager = new TestItemManager(); // Act Action action = () => manager.GetOrCreateItem("abc", item => throw new Exception()); // Assert action.Should().ThrowExactly <Exception>(); manager.GetItems().Should().BeEmpty(); }
public void TryGetItem_ExistingItem_Works() { var manager = new TestItemManager(); manager.GetOrCreateItem("abc", item => item.Value = 1); var item = manager.TryGetItem("abc"); Assert.NotNull(item); Assert.Equal("abc", item.ItemId); Assert.Equal(1, item.Value); }
public void GetItems_Works_TwoItems() { var manager = new TestItemManager(); var item1 = manager.GetOrCreateItem("abc", item => { }); var item2 = manager.GetOrCreateItem("def", item => { }); var items = manager.GetItems(); Assert.Equal(2, items.Count); Assert.Contains(item1, items); Assert.Contains(item2, items); }
public void GetItems_Works_OneItem() { // Arrange var manager = new TestItemManager(); // Act var item = manager.GetOrCreateItem("abc", item => { }); var items = manager.GetItems(); // Assert items.Should().HaveCount(1); items[0].Should().BeSameAs(item); }
public void TryRemoveItem_Works() { // Arrange var manager = new TestItemManager(); // Act var item = manager.GetOrCreateItem("abc", item => { }); var result1 = manager.TryRemoveItem("abc"); var result2 = manager.TryRemoveItem("abc"); // Assert result1.Should().BeTrue(); result2.Should().BeFalse(); }
public void GetOrCreateItem_CreatesAndInitializes_NonExistentItem() { var manager = new TestItemManager(); var item1 = manager.GetOrCreateItem("abc", item => item.Value = 1); var item2 = manager.GetOrCreateItem("def", item => item.Value = 2); Assert.NotNull(item1); Assert.Equal("abc", item1.ItemId); Assert.Equal(1, item1.Value); Assert.NotNull(item2); Assert.Equal("def", item2.ItemId); Assert.Equal(2, item2.Value); }
public void GetItems_Works_TwoItems() { // Arrange var manager = new TestItemManager(); // Act var item1 = manager.GetOrCreateItem("abc", item => { }); var item2 = manager.GetOrCreateItem("def", item => { }); var items = manager.GetItems(); // Assert items.Should().HaveCount(2); items.Should().Contain(item1); items.Should().Contain(item2); }
public void TryGetItem_ExistingItem_Works() { // Arrange var manager = new TestItemManager(); manager.GetOrCreateItem("abc", item => item.Value = 1); // Act var item = manager.TryGetItem("abc"); // Assert item.Should().NotBeNull(); item.ItemId.Should().Be("abc"); item.Value.Should().Be(1); }
public void GetOrCreateItem_ThreadSafety() { const int Iterations = 100_000; var manager = new TestItemManager(); Parallel.For(0, Iterations, i => { manager.GetOrCreateItem("abc", item => item.Value++); }); var item = manager.TryGetItem("abc"); Assert.NotNull(item); Assert.Equal("abc", item.ItemId); Assert.Equal(Iterations, item.Value); }
public void Items_Notifications_Work() { // Arrange var manager = new TestItemManager(); var itemsCountSignal = manager.Items.Select(items => items.Count); // Act manager.GetOrCreateItem("abc", item => { }); manager.GetOrCreateItem("def", item => { }); Assert.Equal(2, itemsCountSignal.Value); manager.TryRemoveItem("abc"); manager.TryRemoveItem("def"); Assert.Equal(0, itemsCountSignal.Value); }
public void GetOrCreateItem_CreatesAndInitializes_NonExistentItem() { // Arrange var manager = new TestItemManager(); // Act var item1 = manager.GetOrCreateItem("abc", item => item.Value = 1); var item2 = manager.GetOrCreateItem("def", item => item.Value = 2); // Assert item1.Should().NotBeNull(); item1.ItemId.Should().Be("abc"); item1.Value.Should().Be(1); item2.Should().NotBeNull(); item2.ItemId.Should().Be("def"); item2.Value.Should().Be(2); }
public void GetOrCreateItem_ThreadSafety() { // Arrange const int Iterations = 100_000; var manager = new TestItemManager(); // Act Parallel.For(0, Iterations, i => { manager.GetOrCreateItem("abc", item => item.Value++); }); // Assert var item = manager.TryGetItem("abc"); item.Should().NotBeNull(); item.ItemId.Should().Be("abc"); item.Value.Should().Be(Iterations); }
public void TryGetItem_CaseInsensitive_ReturnsSameItem() { var manager = new TestItemManager(); var item1 = manager.GetOrCreateItem("abc", item => item.Value = 1); var item2 = manager.GetOrCreateItem("ABC", item => item.Value = 2); var actual1 = manager.TryGetItem("abc"); var actual2 = manager.TryGetItem("ABC"); var actual3 = manager.TryGetItem("aBc"); Assert.NotNull(item1); Assert.NotNull(item2); Assert.NotNull(actual1); Assert.NotNull(actual2); Assert.NotNull(actual3); Assert.Same(item1, item2); Assert.Same(item2, actual1); Assert.Same(actual1, actual2); Assert.Same(actual2, actual3); }