public void CanParse_difficulty_settings_shoul_be_true()
        {
            var args = new CanParseArgs()
            {
                File     = "common\\difficulty_settings\\test.txt",
                GameType = "HeartsofIronIV"
            };
            var parser = new Games.HOI4.KeyParser(new CodeParser(new Logger()), null);

            parser.CanParse(args).Should().BeTrue();
        }
        public void CanParse_should_be_false_then_true()
        {
            var args = new CanParseArgs()
            {
                File     = "common\\country\\test.txt",
                GameType = "HeartsofIronIV"
            };
            var parser = new Games.HOI4.KeyParser(new CodeParser(new Logger()), null);

            parser.CanParse(args).Should().BeFalse();
            args.File = "common\\bookmarks\\test.txt";
            parser.CanParse(args).Should().BeTrue();
        }
        public void Parse_difficulty_settings_should_yield_results()
        {
            DISetup.SetupContainer();

            var sb = new StringBuilder();

            sb.AppendLine(@"difficulty_settings = {");
            sb.AppendLine(@"	difficulty_setting = {");
            sb.AppendLine(@"		key = ""custom_diff_strong_ger""");
            sb.AppendLine(@"		modifier = diff_strong_ai_generic");
            sb.AppendLine(@"		countries = { GER }");
            sb.AppendLine(@"		multiplier = 2.0");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"	}");


            var args = new ParserArgs()
            {
                ContentSHA      = "sha",
                ModDependencies = new List <string> {
                    "1"
                },
                File    = "common\\difficulty_settings\\fake.txt",
                Lines   = sb.ToString().Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries),
                ModName = "fake"
            };
            var parser = new Games.HOI4.KeyParser(new CodeParser(new Logger()), null);
            var result = parser.Parse(args).ToList();

            result.Should().NotBeNullOrEmpty();
            result.Count.Should().Be(1);
            for (int i = 0; i < 1; i++)
            {
                result[i].ContentSHA.Should().Be("sha");
                result[i].Dependencies.First().Should().Be("1");
                result[i].File.Should().Be("common\\difficulty_settings\\fake.txt");
                switch (i)
                {
                case 0:
                    result[i].Id.Should().Be("custom_diff_strong_ger");
                    result[i].ValueType.Should().Be(ValueType.Object);
                    break;

                default:
                    break;
                }
                result[i].ModName.Should().Be("fake");
                result[i].Type.Should().Be("common\\difficulty_settings\\txt");
            }
        }
        public void Parse_should_yield_results()
        {
            DISetup.SetupContainer();

            var sb = new StringBuilder();

            sb.AppendLine(@"bookmarks = {");
            sb.AppendLine(@"	bookmark = {");
            sb.AppendLine(@"		name = ""GATHERING_STORM_NAME""");
            sb.AppendLine(@"		desc = ""GATHERING_STORM_DESC""");
            sb.AppendLine(@"		date = 1936.1.1.12");
            sb.AppendLine(@"	}");
            sb.AppendLine(@"}");


            var args = new ParserArgs()
            {
                ContentSHA      = "sha",
                ModDependencies = new List <string> {
                    "1"
                },
                File    = "common\\bookmarks\\fake.txt",
                Lines   = sb.ToString().Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries),
                ModName = "fake"
            };
            var parser = new Games.HOI4.KeyParser(new CodeParser(new Logger()), null);
            var result = parser.Parse(args).ToList();

            result.Should().NotBeNullOrEmpty();
            result.Count.Should().Be(1);
            for (int i = 0; i < 1; i++)
            {
                result[i].ContentSHA.Should().Be("sha");
                result[i].Dependencies.First().Should().Be("1");
                result[i].File.Should().Be("common\\bookmarks\\fake.txt");
                switch (i)
                {
                case 0:
                    result[i].Id.Should().Be("GATHERING_STORM_NAME");
                    result[i].ValueType.Should().Be(ValueType.Object);
                    break;

                default:
                    break;
                }
                result[i].ModName.Should().Be("fake");
                result[i].Type.Should().Be("common\\bookmarks\\txt");
            }
        }