public void UpdateEntry_Correct()
        {
            var service = new BasicFileUpdater <BasicItemFile>();
            var logger1 = new UpdateLogger();

            var oldEntry1 = new ItemEntry()
            {
                Name = new BaseEntry()
                {
                    Origin      = "NameOrigin",
                    Translation = "NameTranslation"
                },
                Tooltip = new BaseEntry()
                {
                    Origin      = "TooltipOrigin",
                    Translation = "TooltipTranslation"
                },
            };

            var newEntry1 = new ItemEntry()
            {
                Name = new BaseEntry()
                {
                    Origin      = "AnotherNameOrigin",
                    Translation = "AnotherNameTranslation"
                },
                Tooltip = new BaseEntry()
                {
                    Origin      = "AnotherTooltipOrigin",
                    Translation = "AnotherTooltipTranslation"
                },
            };

            service.UpdateEntry("Key", oldEntry1, newEntry1, logger1);

            logger1.Changed.Count.Should().Be(2);
            oldEntry1.Name.Origin.Should().Be("AnotherNameOrigin");
            oldEntry1.Name.Translation.Should().Be("NameTranslation");
            oldEntry1.Tooltip.Origin.Should().Be("AnotherTooltipOrigin");
            oldEntry1.Tooltip.Translation.Should().Be("TooltipTranslation");


            var logger2 = new UpdateLogger();

            var oldEntry2 = new ItemEntry()
            {
                Name = new BaseEntry()
                {
                    Origin      = "NameOrigin",
                    Translation = "NameTranslation"
                },
                Tooltip = new BaseEntry()
                {
                    Origin      = "TooltipOrigin",
                    Translation = "TooltipTranslation"
                },
            };

            var newEntry2 = new ItemEntry()
            {
                Name = new BaseEntry()
                {
                    Origin      = "NameOrigin",
                    Translation = "AnotherNameTranslation"
                },
                Tooltip = new BaseEntry()
                {
                    Origin      = "TooltipOrigin",
                    Translation = "AnotherTooltipTranslation"
                },
            };

            service.UpdateEntry("Key", oldEntry2, newEntry2, logger2);

            logger2.Changed.Count.Should().Be(0);
            oldEntry2.Name.Origin.Should().Be("NameOrigin");
            oldEntry2.Name.Translation.Should().Be("NameTranslation");
            oldEntry2.Tooltip.Origin.Should().Be("TooltipOrigin");
            oldEntry2.Tooltip.Translation.Should().Be("TooltipTranslation");
        }
        public void UpdateFile_Correct()
        {
            var service = new BasicFileUpdater <BasicItemFile>();

            var logger = new UpdateLogger();

            var oldFile = new BasicItemFile()
            {
                Items = new Dictionary <string, ItemEntry>()
                {
                    {
                        "Key1", new ItemEntry()
                        {
                            Name = new BaseEntry()
                            {
                                Origin      = "NameOrigin1",
                                Translation = "NameTranslation1"
                            },
                            Tooltip = new BaseEntry()
                            {
                                Origin      = "TooltipOrigin1",
                                Translation = "TooltipTranslation1"
                            },
                        }
                    },
                    {
                        "Key2", new ItemEntry()
                        {
                            Name = new BaseEntry()
                            {
                                Origin      = "NameOrigin2",
                                Translation = "NameTranslation2"
                            },
                            Tooltip = new BaseEntry()
                            {
                                Origin      = "TooltipOrigin2",
                                Translation = "TooltipTranslation2"
                            },
                        }
                    },
                    {
                        "Key3", new ItemEntry()
                        {
                            Name = new BaseEntry()
                            {
                                Origin      = "NameOrigin3",
                                Translation = "NameTranslation3"
                            },
                            Tooltip = new BaseEntry()
                            {
                                Origin      = "TooltipOrigin3",
                                Translation = "TooltipTranslation3"
                            },
                        }
                    },
                }
            };

            var newFile = new BasicItemFile()
            {
                Items = new Dictionary <string, ItemEntry>()
                {
                    {
                        "Key1", new ItemEntry()
                        {
                            Name = new BaseEntry()
                            {
                                Origin      = "AnotherNameOrigin1",
                                Translation = "AnotherNameTranslation1"
                            },
                            Tooltip = new BaseEntry()
                            {
                                Origin      = "AnotherTooltipOrigin1",
                                Translation = "AnotherTooltipTranslation1"
                            },
                        }
                    },
                    {
                        "Key3", new ItemEntry()
                        {
                            Name = new BaseEntry()
                            {
                                Origin      = "NameOrigin3",
                                Translation = "AnotherNameTranslation3"
                            },
                            Tooltip = new BaseEntry()
                            {
                                Origin      = "TooltipOrigin3",
                                Translation = "AnotherTooltipTranslation3"
                            },
                        }
                    },
                    {
                        "Key4", new ItemEntry()
                        {
                            Name = new BaseEntry()
                            {
                                Origin      = "NameOrigin4",
                                Translation = "NameTranslation4"
                            },
                            Tooltip = new BaseEntry()
                            {
                                Origin      = "TooltipOrigin4",
                                Translation = "TooltipTranslation4"
                            },
                        }
                    },
                }
            };

            service.Update(oldFile, newFile, logger);

            logger.Added.Count.Should().Be(1);
            logger.Changed.Count.Should().Be(2);
            logger.Removed.Count.Should().Be(1);

            oldFile.Items.Count.Should().Be(4);
            oldFile.Items["Key1"].Name.Origin.Should().Be("AnotherNameOrigin1");
            oldFile.Items["Key1"].Name.Translation.Should().Be("NameTranslation1");
            oldFile.Items["Key1"].Tooltip.Origin.Should().Be("AnotherTooltipOrigin1");
            oldFile.Items["Key1"].Tooltip.Translation.Should().Be("TooltipTranslation1");
            oldFile.Items["Key3"].Name.Origin.Should().Be("NameOrigin3");
            oldFile.Items["Key3"].Name.Translation.Should().Be("NameTranslation3");
            oldFile.Items["Key3"].Tooltip.Origin.Should().Be("TooltipOrigin3");
            oldFile.Items["Key3"].Tooltip.Translation.Should().Be("TooltipTranslation3");
            oldFile.Items["Key4"].Name.Origin.Should().Be("NameOrigin4");
            oldFile.Items["Key4"].Name.Translation.Should().Be("NameTranslation4");
            oldFile.Items["Key4"].Tooltip.Origin.Should().Be("TooltipOrigin4");
            oldFile.Items["Key4"].Tooltip.Translation.Should().Be("TooltipTranslation4");
        }