示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
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);
        }
示例#5
0
        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");
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
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);
        }
示例#10
0
        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);
        }
示例#11
0
        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);
        }
示例#12
0
        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);
            }
        }
示例#13
0
        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());
        }
示例#14
0
        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());
        }
示例#15
0
        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);
        }
示例#16
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);
        }
示例#17
0
        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());
        }
示例#18
0
        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());
        }
示例#19
0
        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);
        }