Write GetItemsForBucket tests

This commit is contained in:
Matt Nadareski
2025-01-16 15:51:16 -05:00
parent 9c1c063b79
commit 09ef53d844
2 changed files with 203 additions and 13 deletions

View File

@@ -90,12 +90,107 @@ namespace SabreTools.DatFiles.Test
#region GetItemsForBucket #region GetItemsForBucket
// TODO: Add GetItemsForBucket tests [Fact]
// - Null/empty bucket name public void GetItemsForBucket_NullBucketName()
// - Invalid bucket {
// - Removed items with filter Source source = new Source(0, source: null);
// - Removed items without filter
// - Normal items Machine machine = new Machine();
machine.SetFieldValue<string?>(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<string?>(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<string?>(Models.Metadata.Machine.NameKey, "machine");
DatItem item = new Rom();
item.SetFieldValue<bool?>(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<string?>(Models.Metadata.Machine.NameKey, "machine");
DatItem item = new Rom();
item.SetFieldValue<bool?>(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<string?>(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 #endregion

View File

@@ -57,12 +57,107 @@ namespace SabreTools.DatFiles.Test
#region GetItemsForBucket #region GetItemsForBucket
// TODO: Add GetItemsForBucket tests [Fact]
// - Null/empty bucket name public void GetItemsForBucket_NullBucketName()
// - Invalid bucket {
// - Removed items with filter Source source = new Source(0, source: null);
// - Removed items without filter
// - Normal items Machine machine = new Machine();
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, "machine");
DatItem item = new Rom();
item.SetFieldValue<Source?>(DatItem.SourceKey, source);
item.SetFieldValue<Machine?>(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<string?>(Models.Metadata.Machine.NameKey, "machine");
DatItem item = new Rom();
item.SetFieldValue<Source?>(DatItem.SourceKey, source);
item.SetFieldValue<Machine?>(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<string?>(Models.Metadata.Machine.NameKey, "machine");
DatItem item = new Rom();
item.SetFieldValue<bool?>(DatItem.RemoveKey, true);
item.SetFieldValue<Source?>(DatItem.SourceKey, source);
item.SetFieldValue<Machine?>(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<string?>(Models.Metadata.Machine.NameKey, "machine");
DatItem item = new Rom();
item.SetFieldValue<bool?>(DatItem.RemoveKey, true);
item.SetFieldValue<Source?>(DatItem.SourceKey, source);
item.SetFieldValue<Machine?>(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<string?>(Models.Metadata.Machine.NameKey, "machine");
DatItem item = new Rom();
item.SetFieldValue<Source?>(DatItem.SourceKey, source);
item.SetFieldValue<Machine?>(DatItem.MachineKey, machine);
var dict = new ItemDictionary();
_ = dict.AddItem(item, statsOnly: false);
var actual = dict.GetItemsForBucket("machine", filter: false);
Assert.Single(actual);
}
#endregion #endregion
@@ -222,7 +317,7 @@ namespace SabreTools.DatFiles.Test
} }
#endregion #endregion
#region RecalculateStats #region RecalculateStats
// TODO: Add RecalculateStats tests // TODO: Add RecalculateStats tests