public void Modnix3ActionMod() { MockApi.mockApiVersion = new Version(3, 1); PPDefMod.api = MockApi.Api; MockRepo repo = new MockRepo(); TestClass obj = new TestClass(); repo.AddDef("a", obj); ModDefinition mod = JsonToModDef("{flags:[\"Actions\"],guid:\"a\",field:\"boolValue\",value:true}"); new ModFile("ActionMod.Simple", repo, new MockLogger()).ApplyMod(mod); Assert.AreEqual(true, obj.boolValue); // Modified mod = JsonToModDef("{flags:[\"Actions\"],guid:\"a\",modletlist:[" + "{field:\"intValue\",value:1234}," + "{field:\"doubleValue\",value:12.34}," + "{field:\"boolValue\",value:false}," + "{field:\"stringValue\",value:\"foobar\"}]}"); new ModFile("ActionMod.Modlet", repo, new MockLogger()).ApplyMod(mod); Assert.AreEqual(1234, obj.intValue); Assert.AreEqual(12.34, obj.doubleValue); Assert.AreEqual(false, obj.boolValue); Assert.AreEqual("foobar", obj.stringValue); }
public void TestModletListWithMalformedSteps() { MockRepo repo = new MockRepo(); TestClass obj = new TestClass { intValue = 10, boolValue = false }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", modletlist = new List <ModletStep> { new ModletStep { field = "intValue", value = 20 }, new ModletStep { field = null, value = 20 }, new ModletStep { field = "NoValue", value = null }, new ModletStep { field = null, value = null }, new ModletStep { field = "boolValue", value = true } } }; ModFile f = new ModFile("ModlietListWithMalformedSteps", repo, new MockLogger()); f.ApplyMod(mod); Assert.AreEqual(obj.intValue, 20); Assert.IsTrue(obj.boolValue); }
public void TestMultiArrayValues() { MockRepo repo = new MockRepo(); ArrayTestClass obj = new ArrayTestClass { arr = new ArrayTestClass.Nested[3] { new ArrayTestClass.Nested { nestedValues = new double[2] { 7.0, 8.0 } }, new ArrayTestClass.Nested { nestedValues = new double[3] { 17.0, 18.0, 19.0 } }, new ArrayTestClass.Nested { nestedValues = new double[4] { 27.0, 28.0, 29.0, 30.0 } } } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "arr[0].nestedValues[1]", value = 10 }; new Mod("MultiArrayValues", mod, repo).Apply(); Assert.AreEqual(obj.arr[0].nestedValues[1], 10.0); }
public void TestLastArrayObject() { MockRepo repo = new MockRepo(); ArrayTestClass obj = new ArrayTestClass { arr = new ArrayTestClass.Nested[3] { new ArrayTestClass.Nested { value = 7 }, new ArrayTestClass.Nested { value = 8 }, new ArrayTestClass.Nested { value = 9 } } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "arr[2].value", value = 10 }; new Mod("LastArray", mod, repo).Apply(); Assert.AreEqual(obj.arr[0].value, 7); Assert.AreEqual(obj.arr[1].value, 8); Assert.AreEqual(obj.arr[2].value, 10); }
public void TestSimpleString() { MockRepo repo = new MockRepo(); TestClass obj = new TestClass { stringValue = "foo" }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "stringValue", value = "bar" }; new Mod("SimpleString", mod, repo).Apply(); Assert.AreEqual(obj.stringValue, "bar"); }
public void TestSimpleInt() { MockRepo repo = new MockRepo(); TestClass obj = new TestClass { intValue = 10 }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "intValue", value = 5 }; new Mod("SimpleInt", mod, repo).Apply(); Assert.AreEqual(obj.intValue, 5); }
public void TestStaticInt() { MockRepo repo = new MockRepo(); TestClass obj = new TestClass { }; TestClass.Nested.staticIntValue = 0; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { cls = "PPDefModifierTests.ApplyModTests+TestClass+Nested, PPDefModifierTests", field = "staticIntValue", value = 5 }; new Mod("StaticInt", mod, repo).Apply(); Assert.AreEqual(TestClass.Nested.staticIntValue, 5); }
public void TestSimpleDouble() { MockRepo repo = new MockRepo(); TestClass obj = new TestClass { doubleValue = 20.0 }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "doubleValue", value = 50.0 }; new Mod("SimpleDouble", mod, repo).Apply(); Assert.AreEqual(obj.doubleValue, 50.0); }
public void TestSimpleBool() { MockRepo repo = new MockRepo(); TestClass obj = new TestClass { boolValue = false }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "boolValue", value = 1 }; new Mod("SimpleBool", mod, repo).Apply(); Assert.IsTrue(obj.boolValue); }
public void TestNestedInt() { MockRepo repo = new MockRepo(); TestClass obj = new TestClass { nested = new TestClass.Nested { intValue = 0 } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "nested.intValue", value = 10 }; new Mod("NestedInt", mod, repo).Apply(); Assert.AreEqual(obj.nested.intValue, 10); }
public void TestStructMember() { MockRepo repo = new MockRepo(); NestedStruct obj = new NestedStruct { nested = new NestedStruct.Nested { Value = 0 } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "nested.Value", value = 10 }; new Mod("NestedStruct", mod, repo).Apply(); Assert.AreEqual(10, obj.nested.Value); }
public void SimulateMods <T>(T obj, string json) { string tempFile = Path.GetTempFileName(); try { MockApi.mockApiPath = tempFile; File.WriteAllText(tempFile, json); MockRepo repo = new MockRepo(); repo.AddDef("a", obj); new ModFile(tempFile, repo, new MockLogger()).ApplyMods(); } finally { File.Delete(tempFile); } }
public void TestWrongGuid() { MockRepo repo = new MockRepo(); TestClass obj = new TestClass { nested = new TestClass.Nested { anotherNest = new TestClass.Nested.AnotherNest { intValue = 0 } } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "b", field = "nested.anotherNest.intValue", value = 10 }; Assert.ThrowsException <ArgumentException>(() => new Mod("WrongGuid", mod, repo).Apply()); }
public void TestNonPrimitiveField() { MockRepo repo = new MockRepo(); TestClass obj = new TestClass { nested = new TestClass.Nested { anotherNest = new TestClass.Nested.AnotherNest { intValue = 0 } } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "nested", value = 10 }; Assert.ThrowsException <ModException>(() => new Mod("NonPrimitiveField", mod, repo).Apply()); }
public void TestLastArrayValue() { MockRepo repo = new MockRepo(); ArrayTestClass obj = new ArrayTestClass { values = new double[3] { 7.0, 8.0, 9.0 } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "values[2]", value = 10 }; new Mod("LastArrayValue", mod, repo).Apply(); Assert.AreEqual(obj.values[0], 7.0); Assert.AreEqual(obj.values[1], 8.0); Assert.AreEqual(obj.values[2], 10.0); }
public void TestStructInStruct() { MockRepo repo = new MockRepo(); NestedStruct obj = new NestedStruct { nested = new NestedStruct.Nested { further = new NestedStruct.Nested.Further { Value2 = 7 } } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "nested.further.Value2", value = 10 }; new Mod("StructInStruct", mod, repo).Apply(); Assert.AreEqual(10, obj.nested.further.Value2); }
public void TestOutOfBound() { MockRepo repo = new MockRepo(); ArrayTestClass obj = new ArrayTestClass { arr = new ArrayTestClass.Nested[3] { new ArrayTestClass.Nested { value = 7 }, new ArrayTestClass.Nested { value = 8 }, new ArrayTestClass.Nested { value = 9 } } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "arr[3].value", value = 10 }; Assert.ThrowsException <IndexOutOfRangeException> (() => new Mod("OutOfBound", mod, repo).Apply()); }
public void TestBadBracket() { MockRepo repo = new MockRepo(); ArrayTestClass obj = new ArrayTestClass { arr = new ArrayTestClass.Nested[3] { new ArrayTestClass.Nested { value = 7 }, new ArrayTestClass.Nested { value = 8 }, new ArrayTestClass.Nested { value = 9 } } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "arr[.value", value = 10 }; Assert.ThrowsException <ModException>(() => new Mod("BadBracket", mod, repo).Apply()); }
public void TestStructList() { MockRepo repo = new MockRepo(); NestedStruct obj = new NestedStruct { nestedList = new List <NestedStruct.Nested> { new NestedStruct.Nested { Value = 7 }, new NestedStruct.Nested { Value = 8 } } }; repo.AddDef("a", obj); ModDefinition mod = new ModDefinition { guid = "a", field = "nestedList[1].Value", value = 10 }; new Mod("NestedStructList", mod, repo).Apply(); Assert.AreEqual(7, obj.nestedList[0].Value); Assert.AreEqual(10, obj.nestedList[1].Value); }