public void AddOrReplaceTest()
        {
            ItemList list             = new ItemList();
            Item     stackableItem    = TestUtils.RandomStackableItem();
            Item     nonStackableItem = TestUtils.RandomNonStackableItem();
            int      count            = stackableItem.Count;

            Item junkedItem = list.AddOrReplace(stackableItem);

            Assert.AreEqual(1, list.Count);
            Assert.IsNull(junkedItem);
            Assert.AreEqual(count, list.CountOf(stackableItem.ItemType));

            junkedItem = list.AddOrReplace(stackableItem);
            Assert.AreEqual(1, list.Count);
            Assert.IsNull(junkedItem);
            Assert.AreEqual(count * 2, list.CountOf(stackableItem.ItemType));

            junkedItem = list.AddOrReplace(nonStackableItem);
            Assert.AreEqual(2, list.Count);
            Assert.IsNull(junkedItem);
            Assert.AreEqual(1, list.CountOf(nonStackableItem.ItemType));

            junkedItem = list.AddOrReplace(nonStackableItem);
            Assert.AreEqual(2, list.Count);
            Assert.AreEqual(nonStackableItem, junkedItem);
            Assert.AreEqual(1, list.CountOf(nonStackableItem.ItemType));

            // TODO: Test a non-stackable item replacing an inferior item
        }