diff --git a/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs index 67809a01..ebea97cf 100644 --- a/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs @@ -112,7 +112,22 @@ namespace SabreTools.DatFiles.Test #region GetMachineForItem - // TODO: Add GetMachineForItem tests + [Fact] + public void GetMachineForItemTest() + { + Source source = new Source(0, source: null); + Machine machine = new Machine(); + DatItem item = new Rom(); + + var dict = new ItemDictionaryDB(); + long machineIndex = dict.AddMachine(machine); + long sourceIndex = dict.AddSource(source); + long itemIndex = dict.AddItem(item, machineIndex, sourceIndex); + + var actual = dict.GetMachineForItem(itemIndex); + Assert.Equal(0, actual.Key); + Assert.NotNull(actual.Value); + } #endregion @@ -134,7 +149,22 @@ namespace SabreTools.DatFiles.Test #region GetSourceForItem - // TODO: Add GetSourceForItem tests + [Fact] + public void GetSourceForItemTest() + { + Source source = new Source(0, source: null); + Machine machine = new Machine(); + DatItem item = new Rom(); + + var dict = new ItemDictionaryDB(); + long machineIndex = dict.AddMachine(machine); + long sourceIndex = dict.AddSource(source); + long itemIndex = dict.AddItem(item, machineIndex, sourceIndex); + + var actual = dict.GetSourceForItem(itemIndex); + Assert.Equal(0, actual.Key); + Assert.NotNull(actual.Value); + } #endregion diff --git a/SabreTools.DatFiles/ItemDictionaryDB.cs b/SabreTools.DatFiles/ItemDictionaryDB.cs index 144a9869..c0ed79aa 100644 --- a/SabreTools.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.DatFiles/ItemDictionaryDB.cs @@ -421,7 +421,6 @@ namespace SabreTools.DatFiles var machine = _machines[machineIndex]; return new KeyValuePair(machineIndex, machine); - #endif } @@ -446,6 +445,15 @@ namespace SabreTools.DatFiles /// public KeyValuePair GetSourceForItem(long itemIndex) { +#if NET40_OR_GREATER || NETCOREAPP + if (!_itemToSourceMapping.TryGetValue(itemIndex, out long sourceIndex)) + return new KeyValuePair(-1, null); + + if (!_sources.TryGetValue(sourceIndex, out var source)) + return new KeyValuePair(-1, null); + + return new KeyValuePair(sourceIndex, source); +#else if (!_itemToSourceMapping.ContainsKey(itemIndex)) return new KeyValuePair(-1, null); @@ -453,7 +461,9 @@ namespace SabreTools.DatFiles if (!_sources.ContainsKey(sourceIndex)) return new KeyValuePair(-1, null); - return new KeyValuePair(sourceIndex, _sources[sourceIndex]); + var source = _sources[sourceIndex]; + return new KeyValuePair(sourceIndex, source); +#endif } /// @@ -612,7 +622,7 @@ namespace SabreTools.DatFiles PerformItemBucketing(index, _bucketedBy, lower: true, norename: true); // Return the used index - return index - 1; + return index; } #endregion