Esempio n. 1
0
        public void PermissionsRoNo()
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitStaticRefs = new System.Type[] { typeof(Decs) }
            };
            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                    <ComponentDec decName=""SimpleComponent"">
                        <type>SimpleComponent</type>
                    </ComponentDec>

                    <ComponentDec decName=""StringComponent"">
                        <type>StringComponent</type>
                    </ComponentDec>

                    <EntityDec decName=""EntityModel"">
                        <components>
                            <li>SimpleComponent</li>
                            <li>StringComponent</li>
                        </components>
                    </EntityDec>

                    <SystemDec decName=""TestSystem"">
                        <type>ComponentPermissionRoSystem</type>
                        <iterate>
                            <StringComponent>ReadWrite</StringComponent>
                        </iterate>
                    </SystemDec>

                    <ProcessDec decName=""TestProcess"">
                        <order>
                            <li>TestSystem</li>
                        </order>
                    </ProcessDec>
                </Decs>
            ");
            parser.Finish();

            Environment.Startup();

            Environment.Add(new Entity(Decs.EntityModel));
            Environment.Add(new Entity(Decs.EntityModel));

            ComponentPermissionRoSystem.Executions = 0;
            ExpectErrors(() => Environment.Process(Decs.TestProcess));
            Assert.AreEqual(2, ComponentPermissionRoSystem.Executions);
        }
Esempio n. 2
0
        public void Missing([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(StubDec) }, explicitStaticRefs = new Type[] { typeof(MissingDecs) }
            };

            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                </Decs>");
            ExpectErrors(() => parser.Finish());

            DoBehavior(mode, rewrite_expectParseErrors: true);
        }
Esempio n. 3
0
        public void LoadFile([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(IntDec) }
            };

            var parser = new Dec.Parser();

            parser.AddFile("data/Parser.LoadFile.xml");
            parser.Finish();

            DoBehavior(mode);

            Assert.AreEqual(55, Dec.Database <IntDec> .Get("TestDec").value);
        }
Esempio n. 4
0
        public void LoadFileError([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(IntDec) }
            };

            var parser = new Dec.Parser();

            parser.AddFile("data/Parser.LoadFileError.xml");
            ExpectErrors(() => parser.Finish(), str => str.Contains("Parser.LoadFileError"));

            DoBehavior(mode);

            Assert.IsNotNull(Dec.Database <IntDec> .Get("TestDec"));
        }
Esempio n. 5
0
File: Xml.cs Progetto: zorbathut/dec
        public void ProperStringName([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
            };

            var parser = new Dec.Parser();

            ExpectErrors(() => parser.AddString(@"
                <Decs>
                    <StubDec decName=""TestDecA"" />
                </Decs>", "TestStringName"), str => str.StartsWith("TestStringName"));
            parser.Finish();

            DoBehavior(mode);
        }
Esempio n. 6
0
        public void Basic()
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitStaticRefs = new System.Type[] { typeof(Decs) }
            };
            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                    <ComponentDec decName=""Component"">
                        <type>SimpleComponent</type>
                    </ComponentDec>

                    <EntityDec decName=""EntityModel"">
                        <components>
                            <li>Component</li>
                        </components>
                    </EntityDec>

                    <SystemDec decName=""TestSystem"">
                        <type>IterationSystem</type>
                        <iterate>
                            <Component>ReadWrite</Component>
                        </iterate>
                    </SystemDec>

                    <ProcessDec decName=""TestProcess"">
                        <order>
                            <li>TestSystem</li>
                        </order>
                    </ProcessDec>
                </Decs>
            ");
            parser.Finish();

            Environment.Startup();

            Environment.Add(new Entity(Decs.EntityModel));
            Environment.Add(new Entity(Decs.EntityModel));

            IterationSystem.Executions = 0;
            Environment.Process(Decs.TestProcess);
            Assert.AreEqual(2, IterationSystem.Executions);

            Entity[] entities = Environment.List.OrderBy(e => e.Component <SimpleComponent>().number).ToArray();
            Assert.AreEqual(1, entities[0].Component <SimpleComponent>().number);
            Assert.AreEqual(2, entities[1].Component <SimpleComponent>().number);
        }
Esempio n. 7
0
        public void Integration()
        {
            Directory.SetCurrentDirectory(new DirectoryInfo(TestContext.CurrentContext.TestDirectory).Parent.Parent.Parent.FullName);

            Dec.Config.UsingNamespaces = new string[] { "DecTestIntegration" };

            var parser = new Dec.Parser();

            parser.AddDirectory("data");
            parser.Finish();

            Assert.IsNotNull(Dec.Database <IntegrationDec> .Get("ItemAlpha"));
            Assert.IsNotNull(Dec.Database <IntegrationDec> .Get("ItemBeta"));

            Assert.AreSame(IntegrationDecs.ItemAlpha, Dec.Database <IntegrationDec> .Get("ItemAlpha"));
        }
Esempio n. 8
0
        public void MissingDecName([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(StubDec) }
            };

            var parser = new Dec.Parser();

            ExpectErrors(() => parser.AddString(@"
                <Decs>
                    <StubDec />
                </Decs>"));
            parser.Finish();

            DoBehavior(mode);
        }
Esempio n. 9
0
        public void RootPrimitive([Values] RecorderMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
            };

            var parser = new Dec.Parser();

            parser.Finish();

            int value = 4;

            // gonna be honest, this feels kind of like overkill
            var deserialized = DoRecorderRoundTrip(value, mode);

            Assert.AreEqual(value, deserialized);
        }
Esempio n. 10
0
        public void LoadDirectoryRecursive([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(IntDec) }
            };

            var parser = new Dec.Parser();

            parser.AddDirectory("data/Parser.LoadDirectoryRecursive");
            parser.Finish();

            DoBehavior(mode);

            Assert.AreEqual(40, Dec.Database <IntDec> .Get("TestDec1").value);
            Assert.AreEqual(80, Dec.Database <IntDec> .Get("TestDec2").value);
        }
Esempio n. 11
0
        public void RecursiveSquaredRoot([Values] RecorderMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
            };

            var parser = new Dec.Parser();

            parser.Finish();

            var root = new RecursiveSquaredRecorder();

            var a = new RecursiveSquaredRecorder();
            var b = new RecursiveSquaredRecorder();
            var c = new RecursiveSquaredRecorder();

            root.left  = a;
            root.right = a;

            a.left  = b;
            a.right = b;
            b.left  = c;
            b.right = c;
            c.left  = root;
            c.right = root;

            var deserialized = DoRecorderRoundTrip(root, mode);

            Assert.AreSame(deserialized.left, deserialized.right);
            Assert.AreSame(deserialized.left.left, deserialized.right.right);
            Assert.AreSame(deserialized.left.left.left, deserialized.right.right.right);
            Assert.AreSame(deserialized.left.left.left.left, deserialized.right.right.right.right);

            Assert.AreSame(deserialized, deserialized.right.right.right.right);

            Assert.AreNotSame(deserialized, deserialized.left);
            Assert.AreNotSame(deserialized, deserialized.left.left);
            Assert.AreNotSame(deserialized, deserialized.left.left.left);

            Assert.AreNotSame(deserialized.left, deserialized.left.left);
            Assert.AreNotSame(deserialized.left, deserialized.left.left.left);
            Assert.AreNotSame(deserialized.left, deserialized.left.left.left.left);

            Assert.AreNotSame(deserialized.left.left, deserialized.left.left.left);
            Assert.AreNotSame(deserialized.left.left.left, deserialized.left.left.left.left);

            Assert.AreNotSame(deserialized.left.left.left, deserialized.left.left.left.left);
        }
Esempio n. 12
0
        public void Clear()
        {
            ExpectWarnings(() => Assert.IsNull(Dec.Database <StubDec> .Get("TestDec")));
            // we don't test StubDecs.TestDec here because if we do, we'll kick off the detection

            {
                Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                    explicitTypes = new Type[] { typeof(StubDec) }, explicitStaticRefs = new Type[] { typeof(StubDecs) }
                };

                var parser = new Dec.Parser();
                parser.AddString(@"
                    <Decs>
                        <StubDec decName=""TestDec"" />
                    </Decs>");
                parser.Finish();
            }

            Assert.IsNotNull(Dec.Database <StubDec> .Get("TestDec"));
            Assert.AreEqual(StubDecs.TestDec, Dec.Database <StubDec> .Get("TestDec"));

            Dec.Database.Clear();

            ExpectWarnings(() => Assert.IsNull(Dec.Database <StubDec> .Get("TestDec")));
            Assert.IsNull(StubDecs.TestDec);

            {
                Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                    explicitTypes = new Type[] { typeof(StubDec) }, explicitStaticRefs = new Type[] { typeof(StubDecs) }
                };

                var parser = new Dec.Parser();
                parser.AddString(@"
                    <Decs>
                        <StubDec decName=""TestDec"" />
                    </Decs>");
                parser.Finish();
            }

            Assert.IsNotNull(Dec.Database <StubDec> .Get("TestDec"));
            Assert.AreEqual(StubDecs.TestDec, Dec.Database <StubDec> .Get("TestDec"));

            Dec.Database.Clear();

            ExpectWarnings(() => Assert.IsNull(Dec.Database <StubDec> .Get("TestDec")));
            Assert.IsNull(StubDecs.TestDec);
        }
Esempio n. 13
0
        public void Unicode([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(StubDec) }, explicitStaticRefs = new Type[] { typeof(UnicodeDecs) }
            };

            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                    <StubDec decName=""Brød"" />
                    <StubDec decName=""ขนมปัง"" />
                    <StubDec decName=""パン"" />
                    <StubDec decName=""餧"" />
                    <StubDec decName=""麵包"" />
                    <StubDec decName=""خبز"" />
                    <StubDec decName=""빵"" />
                    <StubDec decName=""לחם"" />
                    <StubDec decName=""ပေါင်မုန့်"" />
                    <StubDec decName=""ബ്രെഡ്"" />
                </Decs>");
            parser.Finish();

            DoBehavior(mode);

            Assert.IsNotNull(Dec.Database <StubDec> .Get("Brød"));
            Assert.IsNotNull(Dec.Database <StubDec> .Get("ขนมปัง"));
            Assert.IsNotNull(Dec.Database <StubDec> .Get("パン"));
            Assert.IsNotNull(Dec.Database <StubDec> .Get("餧"));
            Assert.IsNotNull(Dec.Database <StubDec> .Get("麵包"));
            Assert.IsNotNull(Dec.Database <StubDec> .Get("خبز"));
            Assert.IsNotNull(Dec.Database <StubDec> .Get("빵"));
            Assert.IsNotNull(Dec.Database <StubDec> .Get("לחם"));
            Assert.IsNotNull(Dec.Database <StubDec> .Get("ပေါင်မုန့်"));
            Assert.IsNotNull(Dec.Database <StubDec> .Get("ബ്രെഡ്"));

            Assert.AreSame(Dec.Database <StubDec> .Get("Brød"), UnicodeDecs.Brød);
            Assert.AreSame(Dec.Database <StubDec> .Get("ขนมปัง"), UnicodeDecs.ขนมปัง);
            Assert.AreSame(Dec.Database <StubDec> .Get("パン"), UnicodeDecs.パン);
            Assert.AreSame(Dec.Database <StubDec> .Get("餧"), UnicodeDecs.餧);
            Assert.AreSame(Dec.Database <StubDec> .Get("麵包"), UnicodeDecs.麵包);
            Assert.AreSame(Dec.Database <StubDec> .Get("خبز"), UnicodeDecs.خبز);
            Assert.AreSame(Dec.Database <StubDec> .Get("빵"), UnicodeDecs.빵);
            Assert.AreSame(Dec.Database <StubDec> .Get("לחם"), UnicodeDecs.לחם);
            Assert.AreSame(Dec.Database <StubDec> .Get("ပေါင်မုန့်"), UnicodeDecs.ပေါင်မုန့်);
            Assert.AreSame(Dec.Database <StubDec> .Get("ബ്രെഡ്"), UnicodeDecs.ബ്രെഡ്);
        }
Esempio n. 14
0
        public void LateTouch()
        {
            // We avoid BehaviorMode here because the StaticReference error event can happen at most once, which means that we can't run the test twice without the second (and later) tests failing.
            // This also means that test success would depend on test order run, which, no.
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(StubDec) }
            };

            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                </Decs>");
            parser.Finish();

            ExpectErrors(() => LateTouchDecs.TestDec = null);
        }
Esempio n. 15
0
        private static void Init()
        {
            // Configure Dec's error reporting
            Dec.Config.InfoHandler      = str => Dbg.Inf(str);
            Dec.Config.WarningHandler   = str => Dbg.Wrn(str);
            Dec.Config.ErrorHandler     = str => Dbg.Err(str);
            Dec.Config.ExceptionHandler = e => Dbg.Ex(e);

            // Configure Dec's namespaces
            Dec.Config.UsingNamespaces = new string[] { "Fuzzgen" };

            // In most cases, you'll just want to read all the XML files in your data directory, which is easy
            var parser = new Dec.Parser();

            parser.AddDirectory("data/dec");
            parser.Finish();
        }
Esempio n. 16
0
        public void Core()
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
            };

            var parser = new Dec.Parser();

            parser.Finish();

            var deserialized = Dec.Recorder.Read <int>(@"
                <Record>
                  <recordFormatVersion>1</recordFormatVersion>
                  <data>4</data>
                </Record>");

            Assert.AreEqual(deserialized, 4);
        }
Esempio n. 17
0
        public void HashSetReplace([Values] BehaviorMode mode, [Values] ParseModesToTest parseMode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(HashSetDec) }
            };

            var parser = new Dec.Parser();

            parser.AddString($@"
                <Decs>
                    <HashSetDec decName=""TestDec"">
                        <filled {GenerateParseModeTag(parseMode)}>
                            <li>4</li>
                            <li>5</li>
                            <li>6</li>
                            <li>7</li>
                        </filled>
                    </HashSetDec>
                </Decs>");

            if (parseMode == ParseModesToTest.Default || parseMode == ParseModesToTest.Replace || parseMode == ParseModesToTest.Patch)
            {
                parser.Finish();
            }
            else
            {
                ExpectErrors(() => parser.Finish());
            }

            DoBehavior(mode);

            Assert.IsNull(Dec.Database <HashSetDec> .Get("TestDec").empty);
            if (parseMode == ParseModesToTest.Append || parseMode == ParseModesToTest.Patch)
            {
                Assert.AreEqual(new HashSet <int> {
                    1, 2, 3, 4, 5, 6, 7
                }, Dec.Database <HashSetDec> .Get("TestDec").filled);
            }
            else
            {
                Assert.AreEqual(new HashSet <int> {
                    4, 5, 6, 7
                }, Dec.Database <HashSetDec> .Get("TestDec").filled);
            }
        }
Esempio n. 18
0
        public void DepthSingleLinked([ValuesExcept(RecorderMode.Validation)] RecorderMode mode)
        {
            // This test verifies that we can serialize and/or read an extremely deep structure without blowing the stack.
            // We use single links so we don't generate refs, we actually embed objects.
            const int depth = 10_000;

            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
            };

            var parser = new Dec.Parser();

            parser.Finish();

            var root = new DoubleLinkedRecorder();

            {
                var current = root;

                for (int i = 1; i < depth; ++i)
                {
                    var next = new DoubleLinkedRecorder();
                    current.a = next;
                    current   = next;
                }
            }

            var deserialized = DoRecorderRoundTrip(root, mode, testSerializedResult: serialized =>
            {
                // This verifies we haven't done an n^2 monstrosity by letting the depth get too far.
                // With 10_000 items, this generates a 300_000_000 byte file before depth controlling!
                Assert.Less(serialized.Length, 2_000_000);
            });

            {
                var seen    = new HashSet <DoubleLinkedRecorder>();
                var current = deserialized;
                while (current != null && !seen.Contains(current))
                {
                    seen.Add(current);
                    current = current.a;
                }

                Assert.AreEqual(depth, seen.Count);
            }
        }
Esempio n. 19
0
        public void Misparse([ValuesExcept(RecorderMode.Validation)] RecorderMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
            };

            var parser = new Dec.Parser();

            parser.Finish();

            var misparse = new MisparseRecordable();

            var deserialized = DoRecorderRoundTrip(misparse, mode, expectWriteErrors: true, expectReadErrors: true);

            Assert.IsNotNull(deserialized);

            // should just leave this alone
            Assert.IsNotNull(deserialized.unparseable);
        }
Esempio n. 20
0
        public void ConverterUnsupplied([ValuesExcept(RecorderMode.Validation)] RecorderMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitConverters = new Type[] { typeof(ConverterUnsuppliedConverter) }
            };

            var parser = new Dec.Parser();

            parser.Finish();

            var root = new ConverterUnsuppliedClass();

            root.x = 42;

            var deserialized = DoRecorderRoundTrip(root, mode, expectWriteErrors: true);

            Assert.IsNotNull(deserialized); // even if we don't know how to store it and deserialize it, we should at least be able to create it
        }
Esempio n. 21
0
        public void ExtraAttribute([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(StubDec) }
            };

            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                    <StubDec decName=""TestDec"" invalidAttribute=""hello"" />
                </Decs>");
            ExpectErrors(() => parser.Finish());

            DoBehavior(mode);

            Assert.IsNotNull(Dec.Database <StubDec> .Get("TestDec"));
        }
Esempio n. 22
0
        public void Internal([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(StubDec) }, explicitStaticRefs = new Type[] { typeof(InternalDecs) }
            };

            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                    <StubDec decName=""TestDec"" />
                </Decs>");
            parser.Finish();

            DoBehavior(mode);

            Assert.IsNotNull(InternalDecs.TestDec);
        }
Esempio n. 23
0
        public void LooseMatchCamelToSnake([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(LooseMatchDec) }
            };

            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                    <LooseMatchDec decName=""TestDec"">
                        <camel_case>words</camel_case>
                    </LooseMatchDec>
                </Decs>");
            ExpectErrors(() => parser.Finish(), err => err.Contains("camelCase"));

            DoBehavior(mode);
        }
Esempio n. 24
0
        public void TrivialEmptyParse([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(StubDec) }
            };

            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                    <StubDec decName=""TestDec"" />
                </Decs>");
            parser.Finish();

            DoBehavior(mode);

            Assert.IsNotNull(Dec.Database <StubDec> .Get("TestDec"));
        }
Esempio n. 25
0
        public void ConstructorTouch()
        {
            // We avoid BehaviorMode here because the StaticReference error event can happen at most once, which means that we can't run the test twice without the second (and later) tests failing.
            // This also means that test success would depend on test order run, which, no.
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(ConstructorTouchDec) }, explicitStaticRefs = new Type[] { typeof(ConstructorTouchDecs) }
            };

            var parser = new Dec.Parser();

            ExpectErrors(() => parser.AddString(@"
                <Decs>
                    <ConstructorTouchDec decName=""TestDec"" />
                </Decs>"));
            ExpectErrors(() => parser.Finish());

            Assert.IsNotNull(Dec.Database <StubDec> .Get("TestDec"));
        }
Esempio n. 26
0
File: Xml.cs Progetto: zorbathut/dec
        public void IncorrectRoot([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(StubDec) }
            };

            var parser = new Dec.Parser();

            ExpectWarnings(() => parser.AddString(@"
                <NotDecs>
                    <StubDec decName=""TestDec"" />
                </NotDecs>"));
            parser.Finish();

            DoBehavior(mode);

            Assert.IsNotNull(Dec.Database <StubDec> .Get("TestDec"));
        }
Esempio n. 27
0
        public void ConstructorParameter([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(ConstructorParameterDec) }
            };

            var parser = new Dec.Parser();

            ExpectErrors(() => parser.AddString(@"
                <Decs>
                    <ConstructorParameterDec decName=""TestDec"" />
                </Decs>"));
            parser.Finish();

            DoBehavior(mode);

            Assert.IsNull(Dec.Database <ConstructorParameterDec> .Get("TestDec"));
        }
Esempio n. 28
0
        public void BulkParse([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(BulkParseDec) }
            };

            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                    <BulkParseDec decName=""TestDec"">
                        <testIntA>35</testIntA>
                        <testIntB>-20</testIntB>
                        <testFloatA>0.1234</testFloatA>
                        <testFloatB>-8000000000000000</testFloatB>
                        <testStringA>Hello</testStringA>
                        <testStringB>Data, data, data</testStringB>
                        <testStringC>Forsooth</testStringC>
                        <testBoolA>true</testBoolA>
                        <testBoolB>false</testBoolB>
                    </BulkParseDec>
                </Decs>");
            parser.Finish();

            DoBehavior(mode);

            var result = Dec.Database <BulkParseDec> .Get("TestDec");

            Assert.IsNotNull(result);

            Assert.AreEqual(35, result.testIntA);
            Assert.AreEqual(-20, result.testIntB);
            Assert.AreEqual(3, result.testIntC);
            Assert.AreEqual(0.1234f, result.testFloatA);
            Assert.AreEqual(-8000000000000000f, result.testFloatB);
            Assert.AreEqual(3, result.testFloatC);
            Assert.AreEqual("Hello", result.testStringA);
            Assert.AreEqual("Data, data, data", result.testStringB);
            Assert.AreEqual("Forsooth", result.testStringC);
            Assert.AreEqual("four", result.testStringD);
            Assert.AreEqual(true, result.testBoolA);
            Assert.AreEqual(false, result.testBoolB);
            Assert.AreEqual(false, result.testBoolC);
        }
Esempio n. 29
0
        public void DictionaryReplace([Values] BehaviorMode mode, [Values] ParseModesToTest parseMode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(DictionaryDec) }
            };

            var parser = new Dec.Parser();

            parser.AddString($@"
                <Decs>
                    <DictionaryDec decName=""TestDec"">
                        <filled {GenerateParseModeTag(parseMode)}>
                            <three>-3</three>
                            <four>4</four>
                            <five>5</five>
                        </filled>
                    </DictionaryDec>
                </Decs>");

            if (parseMode == ParseModesToTest.Default || parseMode == ParseModesToTest.Replace || parseMode == ParseModesToTest.Patch)
            {
                parser.Finish();
            }
            else
            {
                ExpectErrors(() => parser.Finish());
            }

            DoBehavior(mode);

            Assert.IsNull(Dec.Database <DictionaryDec> .Get("TestDec").empty);
            if (parseMode == ParseModesToTest.Patch || parseMode == ParseModesToTest.Append)
            {
                Assert.AreEqual(new Dictionary <string, int> {
                    { "one", 1 }, { "two", 2 }, { "three", -3 }, { "four", 4 }, { "five", 5 }
                }, Dec.Database <DictionaryDec> .Get("TestDec").filled);
            }
            else
            {
                Assert.AreEqual(new Dictionary <string, int> {
                    { "three", -3 }, { "four", 4 }, { "five", 5 }
                }, Dec.Database <DictionaryDec> .Get("TestDec").filled);
            }
        }
Esempio n. 30
0
        public void FromNonAbstract([Values] BehaviorMode mode)
        {
            Dec.Config.TestParameters = new Dec.Config.UnitTestParameters {
                explicitTypes = new Type[] { typeof(SimpleDec) }
            };

            var parser = new Dec.Parser();

            parser.AddString(@"
                <Decs>
                    <SimpleDec decName=""Base"">
                        <defaulted>3</defaulted>
                        <overridden>42</overridden>
                        <subObject>
                            <defaulted>12</defaulted>
                            <overridden>80</overridden>
                        </subObject>
                    </SimpleDec>
  
                    <SimpleDec decName=""Thing"" parent=""Base"">
                        <overridden>60</overridden>
                        <subObject>
                            <overridden>90</overridden>
                        </subObject>
                    </SimpleDec>
                </Decs>");
            parser.Finish();

            DoBehavior(mode);

            var bas = Dec.Database <SimpleDec> .Get("Base");

            Assert.AreEqual(3, bas.defaulted);
            Assert.AreEqual(42, bas.overridden);
            Assert.AreEqual(12, bas.subObject.defaulted);
            Assert.AreEqual(80, bas.subObject.overridden);

            var thing = Dec.Database <SimpleDec> .Get("Thing");

            Assert.AreEqual(3, thing.defaulted);
            Assert.AreEqual(60, thing.overridden);
            Assert.AreEqual(12, thing.subObject.defaulted);
            Assert.AreEqual(90, thing.subObject.overridden);
        }