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(""); } } }
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)); });
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(); });
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); });
// 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); }); }
public void ItRendersOneLineIndicatingNoValue() { var rendering = ExampleRenderer.Render(new object[] { }); rendering.Should().ContainSingle().Subject.Should().Be("(no value)"); }