예제 #1
0
        public void StringSanitizeSerialize()
        {
            string str      = XMLFormat.To("Test test <<<:O<< Whaaa");
            var    restored = XMLFormat.From <string>(str);

            Assert.Equal(restored, "Test test <<<:O<< Whaaa");
        }
예제 #2
0
        public void ComplexTypeWithCustomDefaults()
        {
            string xml = XMLFormat.To(new CustomDefaultsComplex
            {
                Test      = TestEnum.A,
                Number    = 0,
                Bool      = false,
                Str       = "",
                Rect      = new Rectangle(),
                Transform = null,
                Array     = null,
                Inherited = null,
                Nullable  = null
            });
            var restored = XMLFormat.From <CustomDefaultsComplex>(xml);

            Assert.Equal(restored.Test, TestEnum.A);
            Assert.Equal(restored.Number, 0);
            Assert.Equal(restored.Bool, false);
            Assert.Equal(restored.Str, "");
            Assert.Equal(restored.Rect.X, 0);
            Assert.True(restored.Transform == null);
            Assert.True(restored.Array == null);
            Assert.True(restored.Inherited == null);
            Assert.True(restored.Nullable == null);
        }
예제 #3
0
        public void GenericsSerialize()
        {
            var generics = new GenericTypesContainer <Transform, Rectangle, string>
            {
                Stuff      = new Transform(100, 200, 300, 400, 500),
                StuffTwo   = new Rectangle(1, 2, 3, 4),
                StuffThree = "Dudeee"
            };

            string gen      = XMLFormat.To(generics);
            var    restored = XMLFormat.From <GenericTypesContainer <Transform, Rectangle, string> >(gen);

            Assert.Equal(restored.Stuff.X, 100);
            Assert.Equal(restored.Stuff.Y, 200);
            Assert.Equal(restored.Stuff.Z, 300);
            Assert.Equal(restored.Stuff.Width, 400);
            Assert.Equal(restored.Stuff.Height, 500);

            Assert.Equal(restored.StuffTwo.X, 1);
            Assert.Equal(restored.StuffTwo.Y, 2);
            Assert.Equal(restored.StuffTwo.Width, 3);
            Assert.Equal(restored.StuffTwo.Height, 4);

            Assert.Equal(restored.StuffThree, "Dudeee");
        }
예제 #4
0
        public void BasicValueType()
        {
            string v2       = XMLFormat.To(new Vector2(100, 100));
            var    restored = XMLFormat.From <Vector2>(v2);

            Assert.Equal(restored.X, 100);
            Assert.Equal(restored.Y, 100);
        }
예제 #5
0
        /// <summary>
        /// Save the save file to the asset store.
        /// </summary>
        public void Save()
        {
            string data = XMLFormat.To(Content);

            if (!Engine.AssetLoader.Save(Encoding.UTF8.GetBytes(data), Name))
            {
                Engine.Log.Warning($"Couldn't save file {Name}.", MessageSource.Other);
            }
        }
예제 #6
0
        public void BasicStringNull()
        {
            string str = XMLFormat.To(new StringContainer {
                Test = null
            });
            var restored = XMLFormat.From <StringContainer>(str);

            Assert.True(restored.Test == null);
        }
예제 #7
0
        public void BasicString()
        {
            string str = XMLFormat.To(new StringContainer {
                Test = "Hello"
            });
            var restored = XMLFormat.From <StringContainer>(str);

            Assert.Equal(restored.Test, "Hello");
        }
예제 #8
0
        public void ComplexType()
        {
            string p        = XMLFormat.To(new Positional(100, 200, 300));
            var    restored = XMLFormat.From <Positional>(p);

            Assert.Equal(restored.X, 100);
            Assert.Equal(restored.Y, 200);
            Assert.Equal(restored.Z, 300);
        }
예제 #9
0
        public void ComplexValueType()
        {
            string r        = XMLFormat.To(new Rectangle(100, 100, 200, 200));
            var    restored = XMLFormat.From <Rectangle>(r);

            Assert.Equal(restored.X, 100);
            Assert.Equal(restored.Y, 100);
            Assert.Equal(restored.Width, 200);
            Assert.Equal(restored.Height, 200);
        }
예제 #10
0
        /// <summary>
        /// Save the file to the asset store with the provided name.
        /// </summary>
        public bool SaveAs(string name, bool backup = true)
        {
            string data  = XMLFormat.To(Content);
            bool   saved = Engine.AssetLoader.Save(Encoding.UTF8.GetBytes(data), name, backup);

            if (!saved)
            {
                Engine.Log.Warning($"Couldn't save file {name}.", MessageSource.Other);
            }
            return(saved);
        }
예제 #11
0
        public void ComplexInheritedType()
        {
            string t        = XMLFormat.To(new Transform(100, 200, 300, 400, 500));
            var    restored = XMLFormat.From <Transform>(t);

            Assert.Equal(restored.X, 100);
            Assert.Equal(restored.Y, 200);
            Assert.Equal(restored.Z, 300);
            Assert.Equal(restored.Width, 400);
            Assert.Equal(restored.Height, 500);
        }
예제 #12
0
        public void EnumSerialize()
        {
            var enumContainer = new EnumContainer
            {
                Hello = TestEnum.Test
            };

            string enm      = XMLFormat.To(enumContainer);
            var    restored = XMLFormat.From <EnumContainer>(enm);

            Assert.Equal(restored.Hello, TestEnum.Test);
        }
예제 #13
0
        public void ComplexTypeExcludedProperties()
        {
            var classWithExcluded = new ClassWithExcluded {
                NotMe = true, Me = true
            };
            string ex = XMLFormat.To(classWithExcluded);

            var restored = XMLFormat.From <ClassWithExcluded>(ex);

            Assert.True(restored.Me);
            Assert.False(restored.NotMe);
        }
예제 #14
0
        public void NullableTrivialNull()
        {
            var nullableTrivial = new NullableTrivialContainer
            {
                Number = null
            };

            string nul      = XMLFormat.To(nullableTrivial);
            var    restored = XMLFormat.From <NullableTrivialContainer>(nul);

            Assert.True(restored.Number == null);
        }
예제 #15
0
        public void NullableComplex()
        {
            var nullableComplex = new NullableComplexContainer
            {
                Stuff = new ComplexNullableSubject
                {
                    Number = 1
                }
            };

            string nul      = XMLFormat.To(nullableComplex);
            var    restored = XMLFormat.From <NullableComplexContainer>(nul);

            Assert.True(restored.Stuff != null);
            // ReSharper disable once PossibleInvalidOperationException
            Assert.Equal(restored.Stuff.Value.Number, 1);

            nullableComplex = new NullableComplexContainer
            {
                Stuff = new ComplexNullableSubject
                {
                    Number = 0
                }
            };

            nul      = XMLFormat.To(nullableComplex);
            restored = XMLFormat.From <NullableComplexContainer>(nul);
            Assert.True(restored.Stuff != null);
            // ReSharper disable once PossibleInvalidOperationException
            Assert.Equal(restored.Stuff.Value.Number, 0);

            nullableComplex = new NullableComplexContainer
            {
                Stuff = new ComplexNullableSubject()
            };

            nul      = XMLFormat.To(nullableComplex);
            restored = XMLFormat.From <NullableComplexContainer>(nul);
            Assert.True(restored.Stuff != null);
            // ReSharper disable once PossibleInvalidOperationException
            Assert.Equal(restored.Stuff.Value.Number, 0);

            nullableComplex = new NullableComplexContainer
            {
                Stuff = null
            };

            nul      = XMLFormat.To(nullableComplex);
            restored = XMLFormat.From <NullableComplexContainer>(nul);
            Assert.True(restored.Stuff == null);
        }
예제 #16
0
        public void ComplexTypeRecursiveReferenceError()
        {
            var transformLink = new TransformRecursiveRef {
                X = 100
            };

            transformLink.Other = transformLink;
            string re = XMLFormat.To(transformLink);

            var restored = XMLFormat.From <TransformRecursiveRef>(re);

            Assert.Equal(restored.X, 100);
            Assert.True(restored.Other == null);
        }
예제 #17
0
        private void RenderSaveSection()
        {
            // Saving
            ImGui.InputText("Name", ref _saveName, 100);
            ImGui.SameLine();
            if (string.IsNullOrEmpty(_saveName))
            {
                ImGui.TextDisabled("Save");
                ImGui.SameLine();
                ImGui.TextDisabled("SaveToFile");
            }
            else
            {
                ImGui.SameLine();
                if (!ImGui.Button("SaveToFile"))
                {
                    return;
                }
                string saveName = _saveName;
                if (!saveName.Contains(".anim"))
                {
                    saveName += ".anim";
                }
                if (!saveName.Contains("Player/"))
                {
                    saveName = $"Player/{saveName}";
                }

                try
                {
                    string saveData;
                    // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression
                    if (_animController != null)
                    {
                        saveData = XMLFormat.To(_animController);
                    }
                    else
                    {
                        saveData = XMLFormat.To(_animation);
                    }

                    Engine.AssetLoader.Save(Encoding.UTF8.GetBytes(saveData), saveName);
                }
                catch (Exception ex)
                {
                    Engine.Log.Error(ex);
                }
            }
        }
예제 #18
0
        public void GenericSerialize()
        {
            var genericContainer = new GenericTypeContainer <Transform>
            {
                Stuff = new Transform(100, 200, 300, 400, 500)
            };

            string gen      = XMLFormat.To(genericContainer);
            var    restored = XMLFormat.From <GenericTypeContainer <Transform> >(gen);

            Assert.Equal(restored.Stuff.X, 100);
            Assert.Equal(restored.Stuff.Y, 200);
            Assert.Equal(restored.Stuff.Z, 300);
            Assert.Equal(restored.Stuff.Width, 400);
            Assert.Equal(restored.Stuff.Height, 500);
        }
예제 #19
0
        public void Exclusions()
        {
            string xml = XMLFormat.To(new TypeWithExcludedMembers
            {
                Num                    = 1,
                ParentNum              = 2,
                GrandparentNum         = 3,
                ExcludedDirectField    = "Hi",
                ExcludedInheritedField = "Hii",
                ExcludedDeepField      = "Hiii",
                NestedClassExclusion   = new TypeWithExcludedMembersDirectParent
                {
                    GrandparentNum    = 99,
                    ExcludedDeepField = "This one isn't excluded in this case",
                    GrandparentBool   = true
                },
                StructMember = new StructMemberWithExclusion()
                {
                    StructBool   = true,
                    StructInt    = 99,
                    StructString = "Only member not excluded"
                },
                GrandparentBool = true
            });
            var restored = XMLFormat.From <TypeWithExcludedMembers>(xml);

            // Non-excluded
            Assert.Equal(restored.Num, 1);
            Assert.Equal(restored.ParentNum, 2);
            Assert.Equal(restored.GrandparentNum, 3);
            Assert.Equal(restored.StructMember.StructString, "Only member not excluded");
            // Excluded by topmost class
            Assert.True(restored.ExcludedDirectField == null);
            Assert.True(restored.ExcludedInheritedField == null);
            Assert.True(restored.ExcludedDeepField == null);
            Assert.False(restored.StructMember.StructBool);
            // Excluded by StructMemberClass
            Assert.Equal(restored.StructMember.StructInt, 0);
            // Excluded by DirectParent
            Assert.False(restored.GrandparentBool);
            // Excluded by NestedClassExclusion field
            Assert.Equal(restored.NestedClassExclusion.GrandparentNum, 0);
            Assert.Equal(restored.NestedClassExclusion.ExcludedDeepField, "This one isn't excluded in this case");
            // Excluded by DirectParent class
            Assert.False(restored.NestedClassExclusion.GrandparentBool);
        }
예제 #20
0
        public void ArrayWithDefaultHoles()
        {
            var array = new[]
            {
                new Rectangle(1, 2, 3, 4),
                new Rectangle(),
                new Rectangle(5, 6, 7, 8)
            };

            string xml = XMLFormat.To(array);

            Rectangle[] restored = XMLFormat.From <Rectangle[]>(xml);
            Assert.Equal(restored.Length, 3);
            Assert.Equal(restored[0].Width, 3);
            Assert.Equal(restored[1].Width, 0);
            Assert.Equal(restored[2].Width, 7);
        }
예제 #21
0
        public void PrimitiveDictionary()
        {
            var primitiveDict = new Dictionary <string, int> {
                { "testOne", 1 }, { "testTwo", 2 }, { "", 4 }, { " ", 0 }
            };

            string xml      = XMLFormat.To(primitiveDict);
            var    restored = XMLFormat.From <Dictionary <string, int> >(xml);

            Assert.True(restored != null);
            // ReSharper disable once PossibleNullReferenceException
            Assert.Equal(restored.Count, 4);
            Assert.Equal(restored["testOne"], 1);
            Assert.Equal(restored["testTwo"], 2);
            Assert.Equal(restored[""], 4);
            Assert.Equal(restored[" "], 0);
        }
예제 #22
0
        public void ComplexDictionary()
        {
            var complexDict = new Dictionary <TestEnum, Transform> {
                { TestEnum.Test, new Transform(1, 2, 3, 4) }, { TestEnum.This, null }
            };

            string xml      = XMLFormat.To(complexDict);
            var    restored = XMLFormat.From <Dictionary <TestEnum, Transform> >(xml);

            Assert.True(restored != null);
            // ReSharper disable once PossibleNullReferenceException
            Assert.Equal(restored.Count, 2);
            Assert.Equal(restored[TestEnum.Test].X, 1);
            Assert.Equal(restored[TestEnum.Test].Y, 2);
            Assert.Equal(restored[TestEnum.Test].Z, 3);
            Assert.Equal(restored[TestEnum.Test].Width, 4);
            Assert.True(restored[TestEnum.This] == null);
        }
예제 #23
0
        public void ComplexTypeRecursiveTypeInherited()
        {
            string tld = XMLFormat.To(new TransformLink(100, 200, 300, 400, 500)
            {
                Left = new TransformInherited {
                    CoolStuff = true, Height = 1100
                }
            });
            var restored = XMLFormat.From <TransformLink>(tld);

            Assert.Equal(restored.X, 100);
            Assert.Equal(restored.Y, 200);
            Assert.Equal(restored.Z, 300);
            Assert.Equal(restored.Width, 400);
            Assert.Equal(restored.Height, 500);

            Assert.Equal(restored.Left.Height, 1100);
            Assert.True(((TransformInherited)restored.Left).CoolStuff);
        }
예제 #24
0
        public void GenericArraySerialize()
        {
            var genericContainers = new[]
            {
                new GenericTypeContainer <Transform>
                {
                    Stuff = new Transform(100, 200, 300, 400, 500)
                }
            };

            string gen = XMLFormat.To(genericContainers);

            GenericTypeContainer <Transform>[] restored = XMLFormat.From <GenericTypeContainer <Transform>[]>(gen);
            Assert.Equal(restored.Length, 1);
            Assert.Equal(restored[0].Stuff.X, 100);
            Assert.Equal(restored[0].Stuff.Y, 200);
            Assert.Equal(restored[0].Stuff.Z, 300);
            Assert.Equal(restored[0].Stuff.Width, 400);
            Assert.Equal(restored[0].Stuff.Height, 500);
        }
예제 #25
0
        public void NonOpaqueArrayWithDefaultHoles()
        {
            var array = new Rectangle?[]
            {
                new Rectangle(1, 2, 3, 4),
                new Rectangle(),
                null,
                new Rectangle(5, 6, 7, 8),
                null
            };

            string xml = XMLFormat.To(array);

            Rectangle?[] restored = XMLFormat.From <Rectangle?[]>(xml);
            Assert.Equal(restored.Length, 5);
            Assert.Equal(restored[0].Value.Width, 3);
            Assert.Equal(restored[1].Value.Width, 0);
            Assert.True(restored[2] == null);
            Assert.Equal(restored[3].Value.Width, 7);
            Assert.True(restored[4] == null);
        }
예제 #26
0
        public void NullableTrivial()
        {
            var nullableTrivial = new NullableTrivialContainer
            {
                Number = default(int) // This is intentionally the default value of int.
            };

            string nul      = XMLFormat.To(nullableTrivial);
            var    restored = XMLFormat.From <NullableTrivialContainer>(nul);

            Assert.Equal(restored.Number, 0);

            nullableTrivial = new NullableTrivialContainer
            {
                Number = 11 // This is intentionally the default value of int.
            };

            nul      = XMLFormat.To(nullableTrivial);
            restored = XMLFormat.From <NullableTrivialContainer>(nul);
            Assert.Equal(restored.Number, 11);
        }
예제 #27
0
        public void ComplexTypeRecursiveType()
        {
            string tl = XMLFormat.To(new TransformLink(100, 200, 300, 400, 500)
            {
                Left = new Transform(600, 700, 800, 900, 1000)
            });
            var restored = XMLFormat.From <TransformLink>(tl);

            Assert.Equal(restored.X, 100);
            Assert.Equal(restored.Y, 200);
            Assert.Equal(restored.Z, 300);
            Assert.Equal(restored.Width, 400);
            Assert.Equal(restored.Height, 500);

            Assert.Equal(restored.Left.X, 600);
            Assert.Equal(restored.Left.Y, 700);
            Assert.Equal(restored.Left.Z, 800);
            Assert.Equal(restored.Left.Width, 900);
            Assert.Equal(restored.Left.Height, 1000);

            Assert.True(restored.Right == null);
        }
예제 #28
0
        public void ComplexTypeRecursiveListWitInherited()
        {
            string tldl = XMLFormat.To(new TransformListHolder
            {
                X        = 100,
                Children = new List <Transform>
                {
                    new Transform(1, 2, 3, 4, 5),
                    new TransformInherited
                    {
                        Width     = 6,
                        CoolStuff = true
                    }
                }
            });

            var restored = XMLFormat.From <TransformListHolder>(tldl);

            Assert.Equal(restored.X, 100);
            Assert.True(restored.Children != null);
            Assert.Equal(restored.Children.Count, 2);

            {
                Transform child = restored.Children[0];
                Assert.True(child != null);
                Assert.Equal(child.X, 1);
                Assert.Equal(child.Y, 2);
                Assert.Equal(child.Z, 3);
                Assert.Equal(child.Width, 4);
                Assert.Equal(child.Height, 5);
            }

            {
                Transform child = restored.Children[1];
                Assert.True(child != null);
                Assert.Equal(child.Width, 6);
                Assert.True(((TransformInherited)child).CoolStuff);
            }
        }
예제 #29
0
        public void ComplexTypeExcluded()
        {
            var excludedContainer = new ContainingExcludedClass
            {
                NotMe = new ExcludedClass {
                    Hello = true
                },
                JustMe = true
            };

            string ex       = XMLFormat.To(excludedContainer);
            var    restored = XMLFormat.From <ContainingExcludedClass>(ex);

            Assert.True(restored.JustMe);
            Assert.True(restored.NotMe == null);

            string exTwo = XMLFormat.To(new ExcludedClass {
                Hello = true
            });
            var restoredTwo = XMLFormat.From <ExcludedClass>(exTwo);

            Assert.True(restoredTwo == null);
        }
예제 #30
0
        public void ComplexTypeRecursiveReferenceArrayError()
        {
            var transformLink = new TransformRecursiveRefArray {
                X = 100
            };

            transformLink.Others = new[] { transformLink };
            string re = XMLFormat.To(transformLink);

            var restored = XMLFormat.From <TransformRecursiveRefArray>(re);

            Assert.Equal(restored.X, 100);
            Assert.True(restored.Others != null);
            Assert.True(restored.Others.Length == 0);

            var transformLinkNull = new TransformRecursiveRefArray {
                X = 100
            };
            string reTwo = XMLFormat.To(transformLinkNull);

            restored = XMLFormat.From <TransformRecursiveRefArray>(reTwo);
            Assert.Equal(restored.X, 100);
            Assert.True(restored.Others == null);
        }