public void LoadOrderNoMatch(LinkCacheTestTypes cacheType) { var prototype = new SkyrimMod(TestConstants.PluginModKey, SkyrimRelease.SkyrimLE); prototype.Npcs.AddNew(); using var disp = ConvertMod(prototype, out var mod); var loadOrder = new LoadOrder <ISkyrimModGetter>(); loadOrder.Add(mod); var(style, package) = GetLinkCache(loadOrder, cacheType); // Test FormKey fails Assert.False(package.TryResolve(UnusedFormKey, out var _)); Assert.False(package.TryResolve(FormKey.Null, out var _)); Assert.False(package.TryResolve <IMajorRecordGetter>(UnusedFormKey, out var _)); Assert.False(package.TryResolve <IMajorRecordGetter>(FormKey.Null, out var _)); Assert.False(package.TryResolve <ISkyrimMajorRecordGetter>(UnusedFormKey, out var _)); Assert.False(package.TryResolve <ISkyrimMajorRecordGetter>(FormKey.Null, out var _)); // Test EditorID fails Assert.False(package.TryResolve(UnusedEditorID, out var _)); Assert.False(package.TryResolve(string.Empty, out var _)); Assert.False(package.TryResolve <IMajorRecordGetter>(UnusedEditorID, out var _)); Assert.False(package.TryResolve <IMajorRecordGetter>(string.Empty, out var _)); Assert.False(package.TryResolve <ISkyrimMajorRecordGetter>(UnusedEditorID, out var _)); Assert.False(package.TryResolve <ISkyrimMajorRecordGetter>(string.Empty, out var _)); }
public void LoadOrderSingle(LinkCacheTestTypes cacheType) { var prototype = new SkyrimMod(TestConstants.PluginModKey, SkyrimRelease.SkyrimLE); var objEffect1 = prototype.ObjectEffects.AddNew("EditorID1"); var objEffect2 = prototype.ObjectEffects.AddNew("EditorID2"); using var disp = ConvertMod(prototype, out var mod); var loadOrder = new LoadOrder <ISkyrimModGetter>(); loadOrder.Add(mod); var(style, package) = GetLinkCache(loadOrder, cacheType); // Test query successes // Do linked interfaces first, as this tests a specific edge case WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IEffectRecordGetter>(objEffect1.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IEffectRecordGetter>(objEffect1.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IEffectRecordGetter>(objEffect2.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IEffectRecordGetter>(objEffect2.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve(objEffect1.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve(objEffect1.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve(objEffect2.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve(objEffect2.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IMajorRecordGetter>(objEffect1.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IMajorRecordGetter>(objEffect1.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IMajorRecordGetter>(objEffect2.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IMajorRecordGetter>(objEffect2.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <ISkyrimMajorRecordGetter>(objEffect1.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <ISkyrimMajorRecordGetter>(objEffect1.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <ISkyrimMajorRecordGetter>(objEffect2.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <ISkyrimMajorRecordGetter>(objEffect2.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IObjectEffectGetter>(objEffect1.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IObjectEffectGetter>(objEffect1.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IObjectEffectGetter>(objEffect2.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IObjectEffectGetter>(objEffect2.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); if (ReadOnly) { WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <IEffectRecord>(objEffect1.FormKey, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <IEffectRecord>(objEffect2.FormKey, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <IObjectEffect>(objEffect1.FormKey, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <IObjectEffect>(objEffect2.FormKey, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <ObjectEffect>(objEffect1.FormKey, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <ObjectEffect>(objEffect2.FormKey, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <IEffectRecord>(objEffect1.EditorID, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <IEffectRecord>(objEffect2.EditorID, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <IObjectEffect>(objEffect1.EditorID, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <IObjectEffect>(objEffect2.EditorID, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <ObjectEffect>(objEffect1.EditorID, out var _)); }); WrapPotentialThrow(cacheType, style, () => { Assert.False(package.TryResolve <ObjectEffect>(objEffect2.EditorID, out var _)); }); } else { WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IEffectRecord>(objEffect1.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IEffectRecord>(objEffect1.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IEffectRecord>(objEffect2.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IEffectRecord>(objEffect2.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IObjectEffect>(objEffect1.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IObjectEffect>(objEffect1.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IObjectEffect>(objEffect2.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <IObjectEffect>(objEffect2.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <ObjectEffect>(objEffect1.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <ObjectEffect>(objEffect1.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect1.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <ObjectEffect>(objEffect2.FormKey, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); WrapPotentialThrow(cacheType, style, () => { Assert.True(package.TryResolve <ObjectEffect>(objEffect2.EditorID, out var rec)); Assert.Equal(rec.FormKey, objEffect2.FormKey); }); } }