diff --git a/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs index 407d0bbb..7529e710 100644 --- a/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs @@ -90,12 +90,107 @@ namespace SabreTools.DatFiles.Test #region GetItemsForBucket - // TODO: Add GetItemsForBucket tests - // - Null/empty bucket name - // - Invalid bucket - // - Removed items with filter - // - Removed items without filter - // - Normal items + [Fact] + public void GetItemsForBucket_NullBucketName() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + + var dict = new ItemDictionaryDB(); + long sourceIndex = dict.AddSource(source); + long machineIndex = dict.AddMachine(machine); + _ = dict.AddItem(item, machineIndex, sourceIndex, statsOnly: false); + + var actual = dict.GetItemsForBucket(null, filter: false); + + Assert.Empty(actual); + } + + [Fact] + public void GetItemsForBucket_InvalidBucketName() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + + var dict = new ItemDictionaryDB(); + long sourceIndex = dict.AddSource(source); + long machineIndex = dict.AddMachine(machine); + _ = dict.AddItem(item, machineIndex, sourceIndex, statsOnly: false); + + var actual = dict.GetItemsForBucket("INVALID", filter: false); + + Assert.Empty(actual); + } + + [Fact] + public void GetItemsForBucket_RemovedFilter() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + item.SetFieldValue(DatItem.RemoveKey, true); + + var dict = new ItemDictionaryDB(); + long sourceIndex = dict.AddSource(source); + long machineIndex = dict.AddMachine(machine); + _ = dict.AddItem(item, machineIndex, sourceIndex, statsOnly: false); + + var actual = dict.GetItemsForBucket("machine", filter: true); + + Assert.Empty(actual); + } + + [Fact] + public void GetItemsForBucket_RemovedNoFilter() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + item.SetFieldValue(DatItem.RemoveKey, true); + + var dict = new ItemDictionaryDB(); + long sourceIndex = dict.AddSource(source); + long machineIndex = dict.AddMachine(machine); + _ = dict.AddItem(item, machineIndex, sourceIndex, statsOnly: false); + + var actual = dict.GetItemsForBucket("machine", filter: false); + + Assert.Single(actual); + } + + [Fact] + public void GetItemsForBucket_Standard() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + + var dict = new ItemDictionaryDB(); + long sourceIndex = dict.AddSource(source); + long machineIndex = dict.AddMachine(machine); + _ = dict.AddItem(item, machineIndex, sourceIndex, statsOnly: false); + + var actual = dict.GetItemsForBucket("machine", filter: false); + + Assert.Single(actual); + } #endregion diff --git a/SabreTools.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.DatFiles.Test/ItemDictionaryTests.cs index f71e37c4..ebd2cdd7 100644 --- a/SabreTools.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.DatFiles.Test/ItemDictionaryTests.cs @@ -57,12 +57,107 @@ namespace SabreTools.DatFiles.Test #region GetItemsForBucket - // TODO: Add GetItemsForBucket tests - // - Null/empty bucket name - // - Invalid bucket - // - Removed items with filter - // - Removed items without filter - // - Normal items + [Fact] + public void GetItemsForBucket_NullBucketName() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + item.SetFieldValue(DatItem.SourceKey, source); + item.SetFieldValue(DatItem.MachineKey, machine); + + var dict = new ItemDictionary(); + _ = dict.AddItem(item, statsOnly: false); + + var actual = dict.GetItemsForBucket(null, filter: false); + + Assert.Empty(actual); + } + + [Fact] + public void GetItemsForBucket_InvalidBucketName() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + item.SetFieldValue(DatItem.SourceKey, source); + item.SetFieldValue(DatItem.MachineKey, machine); + + var dict = new ItemDictionary(); + _ = dict.AddItem(item, statsOnly: false); + + var actual = dict.GetItemsForBucket("INVALID", filter: false); + + Assert.Empty(actual); + } + + [Fact] + public void GetItemsForBucket_RemovedFilter() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + item.SetFieldValue(DatItem.RemoveKey, true); + item.SetFieldValue(DatItem.SourceKey, source); + item.SetFieldValue(DatItem.MachineKey, machine); + + var dict = new ItemDictionary(); + _ = dict.AddItem(item, statsOnly: false); + + var actual = dict.GetItemsForBucket("machine", filter: true); + + Assert.Empty(actual); + } + + [Fact] + public void GetItemsForBucket_RemovedNoFilter() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + item.SetFieldValue(DatItem.RemoveKey, true); + item.SetFieldValue(DatItem.SourceKey, source); + item.SetFieldValue(DatItem.MachineKey, machine); + + var dict = new ItemDictionary(); + _ = dict.AddItem(item, statsOnly: false); + + var actual = dict.GetItemsForBucket("machine", filter: false); + + Assert.Single(actual); + } + + [Fact] + public void GetItemsForBucket_Standard() + { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "machine"); + + DatItem item = new Rom(); + item.SetFieldValue(DatItem.SourceKey, source); + item.SetFieldValue(DatItem.MachineKey, machine); + + var dict = new ItemDictionary(); + _ = dict.AddItem(item, statsOnly: false); + + var actual = dict.GetItemsForBucket("machine", filter: false); + + Assert.Single(actual); + } #endregion @@ -222,7 +317,7 @@ namespace SabreTools.DatFiles.Test } #endregion - + #region RecalculateStats // TODO: Add RecalculateStats tests