diff --git a/SabreTools.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.DatFiles.Test/DatFileTests.FromMetadata.cs index 64b707b4..494d3ed0 100644 --- a/SabreTools.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -18,8 +18,8 @@ namespace SabreTools.DatFiles.Test DatFile datFile = new Formats.Logiqx(null, deprecated: false); datFile.ConvertFromMetadata(item, "filename", indexId: 0, keep: true, statsOnly: false); - Assert.Equal(0, datFile.DatStatistics.TotalCount); - Assert.Empty(datFile.ItemsDB.GetItems()); + Assert.Equal(0, datFile.Items.DatStatistics.TotalCount); + Assert.Equal(0, datFile.ItemsDB.DatStatistics.TotalCount); } [Fact] @@ -30,8 +30,8 @@ namespace SabreTools.DatFiles.Test DatFile datFile = new Formats.Logiqx(null, deprecated: false); datFile.ConvertFromMetadata(item, "filename", indexId: 0, keep: true, statsOnly: false); - Assert.Equal(0, datFile.DatStatistics.TotalCount); - Assert.Empty(datFile.ItemsDB.GetItems()); + Assert.Equal(0, datFile.Items.DatStatistics.TotalCount); + Assert.Equal(0, datFile.ItemsDB.DatStatistics.TotalCount); } [Fact] diff --git a/SabreTools.DatFiles.Test/DatFileTests.cs b/SabreTools.DatFiles.Test/DatFileTests.cs index 8b16fa71..291bf0c4 100644 --- a/SabreTools.DatFiles.Test/DatFileTests.cs +++ b/SabreTools.DatFiles.Test/DatFileTests.cs @@ -19,20 +19,35 @@ namespace SabreTools.DatFiles.Test Assert.NotNull(created.Header); Assert.NotNull(created.Items); - Assert.Equal(0, created.DatStatistics.TotalCount); + Assert.Equal(0, created.Items.DatStatistics.TotalCount); Assert.NotNull(created.ItemsDB); - Assert.Empty(created.ItemsDB.GetItems()); + Assert.Equal(0, created.ItemsDB.DatStatistics.TotalCount); } [Fact] public void Constructor_NonNull() { + Source source = new Source(0, source: null); + + Machine machine = new Machine(); + machine.SetFieldValue(Models.Metadata.Machine.NameKey, "key"); + + DatItem rom = new Rom(); + rom.SetName("rom"); + rom.SetFieldValue(Models.Metadata.Rom.CRCKey, "deadbeef"); + rom.SetFieldValue(DatItem.SourceKey, source); + rom.SetFieldValue(DatItem.MachineKey, machine); + DatFile? datFile = new Formats.Logiqx(datFile: null, deprecated: false); datFile.Header.SetFieldValue(Models.Metadata.Header.NameKey, "name"); - datFile.Add("key", new Rom()); - datFile.AddItemDB(new Rom(), 0, 0, false); + datFile.AddItem(rom, statsOnly: false); + + long sourceIndex = datFile.AddSourceDB(source); + long machineIndex = datFile.AddMachineDB(machine); + datFile.AddItemDB(rom, machineIndex, sourceIndex, statsOnly: false); DatFile created = new Formats.Logiqx(datFile, deprecated: false); + created.BucketBy(ItemKey.Machine, DedupeType.None); Assert.NotNull(created.Header); Assert.Equal("name", created.Header.GetStringFieldValue(Models.Metadata.Header.NameKey)); @@ -42,7 +57,7 @@ namespace SabreTools.DatFiles.Test Assert.True(datItem is Rom); Assert.NotNull(created.ItemsDB); - KeyValuePair dbKvp = Assert.Single(created.ItemsDB.GetItems()); + KeyValuePair dbKvp = Assert.Single(created.GetItemsForBucketDB("key")); Assert.Equal(0, dbKvp.Key); Assert.True(dbKvp.Value is Rom); } @@ -187,9 +202,9 @@ namespace SabreTools.DatFiles.Test Assert.NotNull(datFile.Header); Assert.NotNull(datFile.Items); - Assert.Equal(0, datFile.DatStatistics.TotalCount); + Assert.Equal(0, datFile.Items.DatStatistics.TotalCount); Assert.NotNull(datFile.ItemsDB); - Assert.Empty(datFile.ItemsDB.GetItems()); + Assert.Equal(0, datFile.ItemsDB.DatStatistics.TotalCount); } #endregion diff --git a/SabreTools.DatFiles/ItemDictionary.cs b/SabreTools.DatFiles/ItemDictionary.cs index 4b5a86e7..2ff72d6b 100644 --- a/SabreTools.DatFiles/ItemDictionary.cs +++ b/SabreTools.DatFiles/ItemDictionary.cs @@ -350,10 +350,10 @@ namespace SabreTools.DatFiles { #if NET40_OR_GREATER || NETCOREAPP if (_items.TryGetValue(key, out var list) && list != null) - return list.Contains(value); + return list.Exists(i => i.Equals(value)); #else if (_items.ContainsKey(key) && _items[key] != null) - return _items[key]!.Contains(value); + return _items[key]!.Exists(i => i.Equals(value)); #endif } @@ -681,7 +681,10 @@ namespace SabreTools.DatFiles if (newkey != key) { Add(newkey, item); - Remove(key, item); + bool removed = Remove(key, item); + if (!removed) + break; + i--; // This make sure that the pointer stays on the correct since one was removed } }