예제 #1
0
 public static void Verify(IExecutableQuery query)
 {
     Verify(
         WriterFactory.CreateTextWriter(query.GetQuery()),
         GetDefaultNamer(),
         new ExecutableQueryFailure(query, GetReporter()));
 }
예제 #2
0
        public void PacketsDocumentation()
        {
            var builder = new StringBuilder();

            builder.AppendLine("# NosCore.Packets's Documentation");
            builder.AppendLine("## ClientPackets :");
            foreach (IGrouping <string, Type> packetGroup in GetPacketsWithinNamespace("ClientPackets"))
            {
                builder.AppendLine();
                builder.AppendLine($"### {packetGroup.Key}");
                foreach (Type packet in GetPackets(packetGroup))
                {
                    builder.AppendLine($"- [{packet.GetCustomAttribute<PacketHeaderAttribute>()!.Identification}](src/NosCore.Packets/ClientPackets/{packetGroup.Key}/{packet}.cs)");
                }
            }

            builder.AppendLine();
            builder.AppendLine("## ServerPackets :");
            foreach (IGrouping <string, Type> packetGroup in GetPacketsWithinNamespace("ServerPackets"))
            {
                builder.AppendLine();
                builder.AppendLine($"### {packetGroup.Key}");
                foreach (Type packet in GetPackets(packetGroup))
                {
                    builder.AppendLine($"- [{packet.GetCustomAttribute<PacketHeaderAttribute>()!.Identification}](src/NosCore.Packets/ServerPackets/{packetGroup.Key}/{packet}.cs)");
                }
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(builder.ToString(), "md"));
        }
예제 #3
0
        public static void VerifyScrubbed(MailMessage email, Func <string, string> scrubber)
        {
            var emailText = CreateEmail(email);

            emailText = scrubber.Invoke(emailText);

            Approvals.Verify(WriterFactory.CreateTextWriter(emailText, "eml"));
        }
예제 #4
0
 public void TemplateHasCorrectSymbols()
 {
     using (ApprovalResults.ForScenario(Suffix))
     {
         var text = Decompiler.Decompile(afterAssemblyPath, "Costura.AssemblyLoader");
         Approvals.Verify(WriterFactory.CreateTextWriter(text), new CustomNamer(), Approvals.GetReporter());
     }
 }
예제 #5
0
 public static void Verify(string text, Func <string, string> scrubber = null)
 {
     if (scrubber == null)
     {
         scrubber = ScrubberUtils.NO_SCRUBBER;
     }
     Verify(WriterFactory.CreateTextWriter(scrubber(text)));
 }
        public void CustomNamerShouldNotDependOnSetCallerTest()
        {
            var approvalText = "CustomNamerShouldBeSubstitutable";

            var writer   = WriterFactory.CreateTextWriter(approvalText);
            var namer    = new CustomNamer();
            var reporter = new MethodLevelReporter();

            Approvals.Verify(writer, namer, reporter);
        }
예제 #7
0
        public static void VerifyScrubbed(MailMessage email, params Func <string, string>[] scrubbers)
        {
            var emailText = CreateEmail(email);

            foreach (var scrubber in scrubbers)
            {
                emailText = scrubber.Invoke(emailText);
            }
            Approvals.Verify(WriterFactory.CreateTextWriter(emailText, "eml"));
        }
예제 #8
0
        /// <summary>
        ///     Throws exception if Xml is incorrectly formatted
        /// </summary>
        public static void VerifyText(string text, string fileExtensionWithoutDot = "xml", bool safely = false, Func <string, string> scrubber = null)
        {
            if (scrubber == null)
            {
                scrubber = ScrubberUtils.NO_SCRUBBER;
            }

            text = XmlUtils.FormatXml(scrubber.Invoke(text), safe: safely);
            Approvals.Verify(WriterFactory.CreateTextWriter(text, fileExtensionWithoutDot));
        }
예제 #9
0
        public static void VerifyWithExtension(string text, string fileExtensionWithDot, Func <string, string> scrubber = null)
        {
            if (scrubber == null)
            {
                scrubber = ScrubberUtils.NO_SCRUBBER;
            }

            var fileExtensionWithoutDot = fileExtensionWithDot.TrimStart('.');

            Verify(WriterFactory.CreateTextWriter(scrubber(text), fileExtensionWithoutDot));
        }
예제 #10
0
        public static void VerifyOrderedXml(string text, Func <string, string> scrubber = null)
        {
            if (scrubber == null)
            {
                scrubber = ScrubberUtils.NO_SCRUBBER;
            }

            text = XmlUtils.FormatXmlWithOrderedAttributes(scrubber.Invoke(text));

            Approvals.Verify(WriterFactory.CreateTextWriter(text, "xml"));
        }
예제 #11
0
        // ReSharper disable once UnusedParameter.Local
        static void MyApprove(string text, object IGNORE_PAST_THIS = null, [CallerFilePath] string filepath = null, [CallerMemberName] string membername = null)
        {
            var writer   = WriterFactory.CreateTextWriter(text);
            var filename = Path.GetFileNameWithoutExtension(filepath);
            var filedir  = Path.GetDirectoryName(filepath);
            var namer    = new SaneNamer {
                Name = filename + "." + membername, SourcePath = filedir
            };
            var reporter = new DiffReporter();

            Approver.Verify(new FileApprover(writer, namer, true), reporter);
        }
예제 #12
0
        public static void VerifyXml(string text, [CallerFilePath] string filepath = null, [CallerMemberName] string membername = null)
        {
            var writer   = WriterFactory.CreateTextWriter(text, ".xml");
            var filename = Path.GetFileNameWithoutExtension(filepath);
            var filedir  = Path.Combine(Path.GetDirectoryName(filepath), "Result");
            var namer    = new SaneNamer {
                Name = filename + "." + membername, SourcePath = filedir
            };
            var reporter = new DiffReporter();

            Approver.Verify(new FileApprover(writer, namer, true), reporter);
        }
예제 #13
0
        public void SpeedDocumentation()
        {
            var speedService = new SpeedService.SpeedService();

            var resultBuilder = new StringBuilder("# Speed Table");

            resultBuilder.AppendLine();
            foreach (var @class in Enum.GetValues(typeof(CharacterClassType)).Cast <CharacterClassType>())
            {
                resultBuilder.AppendLine($"- {@class} : {speedService.GetSpeed(@class)}");
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #14
0
        public void HeroExperienceDocumentation()
        {
            var heroExperienceService = new HeroExperienceService.HeroExperienceService();

            var resultBuilder = new StringBuilder("# Hero Experience Table");

            resultBuilder.AppendLine();

            for (byte level = 1; level < 61; level++)
            {
                resultBuilder.AppendLine(
                    $"- Level {level,2} - XP: {heroExperienceService.GetHeroExperience(level)}");
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #15
0
        public void FairyExperienceDocumentation()
        {
            var experienceService = new FairyExperienceService.FairyExperienceService();

            var resultBuilder = new StringBuilder("# Fairy Experience Table");

            resultBuilder.AppendLine();

            for (byte level = 0; level < 80; level++)
            {
                resultBuilder.AppendLine(
                    $"- {level,2}% -> {level + 1,2}% - XP: {experienceService.GetFairyExperience(level)}");
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #16
0
        public void DignityDocumentation()
        {
            var dignityService = new DignityService.DignityService();

            var resultBuilder = new StringBuilder("# Dignity Table");

            resultBuilder.AppendLine();
            foreach (var dignity in Enum.GetValues(typeof(DignityType)).Cast <DignityType>())
            {
                var result = dignityService.GetDignity(dignity);
                resultBuilder.AppendLine($"- {(byte)dignity,2} {dignity.ToString().PadRight(11)} - Max: {result.Item1} Min: {result.Item2}");
                Assert.AreEqual(dignity, dignityService.GetLevelFromDignity(result.Item1));
                Assert.AreEqual(dignity, dignityService.GetLevelFromDignity(result.Item2));
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #17
0
        public void DamageDocumentation()
        {
            var damageService = new DamageService.DamageService();

            var resultBuilder = new StringBuilder("# Damage Table");

            foreach (var @class in Enum.GetValues(typeof(CharacterClassType)).Cast <CharacterClassType>())
            {
                resultBuilder.AppendLine();
                resultBuilder.AppendLine($"## Class {@class}");
                for (byte level = 1; level < 100; level++)
                {
                    resultBuilder.AppendLine(
                        $"- Level {level,2} - Damage Min: {damageService.GetMinDamage(@class, level)} Damage Max: {damageService.GetMaxDamage(@class, level)}");
                }
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #18
0
        public void SecondaryHitRateDocumentation()
        {
            var secondaryHitRateService = new SecondaryHitRateService.SecondaryHitRateService();

            var resultBuilder = new StringBuilder("# Secondary HitRate Table");

            foreach (var @class in Enum.GetValues(typeof(CharacterClassType)).Cast <CharacterClassType>())
            {
                resultBuilder.AppendLine();
                resultBuilder.AppendLine($"## Class {@class}");
                for (byte level = 1; level < 100; level++)
                {
                    resultBuilder.AppendLine(
                        $"- Level {level,2} - HitRate: {secondaryHitRateService.GetSecondaryHitRate(@class, level)}");
                }
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #19
0
        public void JobExperienceDocumentation()
        {
            var jobExperienceService = new JobExperienceService.JobExperienceService();

            var resultBuilder = new StringBuilder("# Job Experience Table");

            foreach (var @class in Enum.GetValues(typeof(CharacterClassType)).Cast <CharacterClassType>())
            {
                resultBuilder.AppendLine();
                resultBuilder.AppendLine($"## Class {@class}");
                for (byte level = 1; level < (@class == CharacterClassType.Adventurer ? 21 : 81); level++)
                {
                    resultBuilder.AppendLine(
                        $"- Level {level,2} - XP: {jobExperienceService.GetJobExperience(@class, level)}");
                }
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #20
0
        public void SpExperienceDocumentation()
        {
            var experienceService = new SpExperienceService.SpExperienceService();

            var resultBuilder = new StringBuilder("# SP Experience Table");


            for (var i = 0; i < 2; i++)
            {
                resultBuilder.AppendLine();
                resultBuilder.AppendLine($"## {(i == 0 ? "Primary" : "Secondary")} SP");
                for (byte level = 1; level < 100; level++)
                {
                    resultBuilder.AppendLine(
                        $"- Level {level,2} - XP: {experienceService.GetSpExperience(level, i == 1)}");
                }
            }
            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #21
0
        public void HpDocumentation()
        {
            var experienceService = new HpService.HpService();

            var resultBuilder = new StringBuilder("# HP Table");

            foreach (var @class in Enum.GetValues(typeof(CharacterClassType)).Cast <CharacterClassType>())
            {
                resultBuilder.AppendLine();
                resultBuilder.AppendLine($"## Class {@class}");
                for (byte level = 1; level < 100; level++)
                {
                    resultBuilder.AppendLine(
                        $"- Level {level,2} - HP: {experienceService.GetHp(@class, level)}");
                }
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #22
0
        public void ApproveApi(string frameworkVersion)
        {
            string     codeBase            = Assembly.GetExecutingAssembly().CodeBase !;
            UriBuilder uri                 = new UriBuilder(new Uri(codeBase));
            string     assemblyPath        = Uri.UnescapeDataString(uri.Path);
            var        containingDirectory = Path.GetDirectoryName(assemblyPath);
            var        configurationName   = new DirectoryInfo(containingDirectory).Parent.Name;
            var        assemblyFile        = Path.GetFullPath(
                Path.Combine(
                    GetSourceDirectory(),
                    $"../../src/{ProjectName}/bin/{configurationName}/{frameworkVersion}/{ProjectName}.dll"));

            var assembly  = Assembly.LoadFile(Path.GetFullPath(assemblyFile));
            var publicApi = ApiGenerator.GeneratePublicApi(assembly, options: null);

            Approvals.Verify(
                WriterFactory.CreateTextWriter(publicApi),
                new ApprovalNamer(ProjectName, frameworkVersion),
                Approvals.GetReporter());
        }
예제 #23
0
        public void ReputationDocumentation()
        {
            var reputationService = new ReputationService.ReputationService();

            var resultBuilder = new StringBuilder("# Reputation Table");

            resultBuilder.AppendLine();
            foreach (var reput in Enum.GetValues(typeof(ReputationType)).Cast <ReputationType>())
            {
                var result = reputationService.GetReputation(reput);
                resultBuilder.AppendLine($"- {(byte)reput,2} {reput.ToString().PadRight(16)} - Min: {result.Item1} Max: {result.Item2}");
                if (reput < ReputationType.GreenLegend)
                {
                    Assert.AreEqual(reput, reputationService.GetLevelFromReputation(result.Item1));
                    Assert.AreEqual(reput, reputationService.GetLevelFromReputation(result.Item2));
                }
            }

            Approvals.Verify(WriterFactory.CreateTextWriter(resultBuilder.ToString(), "md"));
        }
예제 #24
0
        public static void VerifyFile(string linearPathfinderPng, Bitmap bitmap, List <Color> listPixel, string desc)
        {
            var filepath = Path.GetFullPath($"../../../../../documentation/{linearPathfinderPng}");

            bitmap.Save(filepath, ImageFormat.Png);

            var builder = new StringBuilder();

            builder.AppendLine("# NosCore.Pathfinder's Documentation");
            builder.AppendLine($"## {desc}");
            builder.AppendLine($"- Filename: {linearPathfinderPng}");
            var pixels = string.Join("", listPixel.SelectMany(s => s.Name));

            var checksum =
                string.Join("", SHA256.Create()
                            .ComputeHash(Encoding.UTF8.GetBytes(pixels)).Select(s => s.ToString("x2")));

            builder.AppendLine($"- Checksum: {checksum}");
            builder.AppendLine($"![brushfire](./{linearPathfinderPng})");
            Approvals.Verify(WriterFactory.CreateTextWriter(builder.ToString(), "md"));
        }
예제 #25
0
 public static void Verify(object text)
 {
     Verify(WriterFactory.CreateTextWriter("" + text));
 }
예제 #26
0
 public static void VerifyJson(string json)
 {
     Verify(WriterFactory.CreateTextWriter(json.FormatJson(), "json"));
 }
예제 #27
0
 public static void Verify(string text)
 {
     Verify(WriterFactory.CreateTextWriter(text));
 }
예제 #28
0
 public static void Verify(object text)
 {
     Verify(WriterFactory.CreateTextWriter(text.ToString()));
 }
예제 #29
0
 protected void Verify(string name, string value)
 {
     Approvals.Verify(WriterFactory.CreateTextWriter(value), new Namer(name), Approvals.GetReporter());
 }
예제 #30
0
 public static void Verify(string text, Func <string, string> scrubber)
 {
     Verify(WriterFactory.CreateTextWriter(scrubber(text)));
 }