Example #1
0
        internal static void Print(
            IReadOnlyList <object?[]> presentationalValues,
            int discards,
            Action <string>?stdout)
        {
            stdout ??= Console.WriteLine;

            stdout($"Sampled {presentationalValues.Count} values ({discards} discarded):");
            stdout("");

            for (var i = 0; i < presentationalValues.Count; i++)
            {
                var presentationalValue = presentationalValues[i];
                var lines = ExampleRenderer.Render(presentationalValue).ToList();

                if (lines.Count == 1)
                {
                    stdout($"Sample[{i}]: {lines.Single()}");
                }
                else
                {
                    foreach (var line in FormatMultiaryLines(i, lines))
                    {
                        stdout(line);
                    }
                    stdout("");
                }
            }
        }
Example #2
0
        public IGen <Test> ItRendersDateUsingTheCurrentCulture() =>
        from value in Gen.DateTime()
        select Property.ForThese(() =>
        {
            var rendering = ExampleRenderer.Render(new object[] { value }).Single();

            rendering.Should().Be(value.ToString(CultureInfo.CurrentCulture));
        });
Example #3
0
        public IGen <Test> ItRendersOneLine() =>
        from value in Gen.Choose(DomainGen.Any(), DomainGen.AnyList())
        select Property.ForThese(() =>
        {
            var rendering = ExampleRenderer.Render(new object[] { value });

            rendering.Should().ContainSingle();
        });
Example #4
0
        public void ItCanHandleCircularReferences()
        {
            // Xunit theories cannot, apparently - so this needs to be its own Fact.
            var obj = new CircularlyReferencingRecord();

            var rendering = ExampleRenderer.Render(new object[] { obj }).Single();

            rendering.Should().Be("{ Self = <Circular reference> }");
        }
        public IGen <Test> ItRendersLikeUnary() =>
        from values in DomainGen.AnyList().WithCountGreaterThan(1)
        select Property.ForThese(() =>
        {
            var unaryRenderings = values.SelectMany((value, index) => ExampleRenderer
                                                    .Render(new object[] { value })
                                                    .Select(line => $"[{index}] = {line}"));

            var multiaryRendering = ExampleRenderer.Render(values.ToArray());

            multiaryRendering.Should().BeEquivalentTo(unaryRenderings);
        });
Example #6
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.Run(async(context) =>
            {
                var output = ExampleRenderer.Index(o => FF.PropertiesFor(o).Render().ToString());
                await context.Response.WriteAsync(output);
            });
        }
Example #7
0
        public void ItRendersOneLineIndicatingNoValue()
        {
            var rendering = ExampleRenderer.Render(new object[] { });

            rendering.Should().ContainSingle().Subject.Should().Be("(no value)");
        }