mirror of
				https://github.com/nsnail/spectre.console.git
				synced 2025-11-04 10:35:27 +08:00 
			
		
		
		
	Updating test and Ratio calculation
This commit is contained in:
		@@ -9,7 +9,17 @@ internal static class Ratio
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        static (int Div, float Mod) DivMod(float x, float y)
 | 
					        static (int Div, float Mod) DivMod(float x, float y)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return ((int)(x / y), x % y);
 | 
					            var (div, mod) = ((int)(x / y), x % y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // If remainder is withing .0001 of 1 then we round up
 | 
				
			||||||
 | 
					            if (!(mod > 0.9999))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return (div, mod);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            div++;
 | 
				
			||||||
 | 
					            mod = 0;
 | 
				
			||||||
 | 
					            return (div, mod);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        static int? GetEdgeWidth(IRatioResolvable edge)
 | 
					        static int? GetEdgeWidth(IRatioResolvable edge)
 | 
				
			||||||
@@ -46,7 +56,8 @@ internal static class Ratio
 | 
				
			|||||||
                    .ToList();
 | 
					                    .ToList();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var portion = (float)remaining / flexibleEdges.Sum(x => Math.Max(1, x.Edge.Ratio));
 | 
					            var r = flexibleEdges.Sum(x => Math.Max(1, x.Edge.Ratio));
 | 
				
			||||||
 | 
					            var portion = (float)remaining / r;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            var invalidate = false;
 | 
					            var invalidate = false;
 | 
				
			||||||
            foreach (var (index, size, edge) in flexibleEdges)
 | 
					            foreach (var (index, size, edge) in flexibleEdges)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -463,8 +463,14 @@ public class Segment
 | 
				
			|||||||
        var result = new List<Segment>();
 | 
					        var result = new List<Segment>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        var segmentBuilder = (SegmentBuilder?)null;
 | 
					        var segmentBuilder = (SegmentBuilder?)null;
 | 
				
			||||||
 | 
					        var c = 0;
 | 
				
			||||||
        foreach (var segment in segments)
 | 
					        foreach (var segment in segments)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            if (c == 163)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                System.Console.Write("test");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            c++;
 | 
				
			||||||
            if (segmentBuilder == null)
 | 
					            if (segmentBuilder == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                segmentBuilder = new SegmentBuilder(segment);
 | 
					                segmentBuilder = new SegmentBuilder(segment);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -264,4 +264,37 @@ public sealed class LayoutTests
 | 
				
			|||||||
        // Then
 | 
					        // Then
 | 
				
			||||||
        return Verifier.Verify(console.Output);
 | 
					        return Verifier.Verify(console.Output);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Fact]
 | 
				
			||||||
 | 
					    [Expectation("Render_Layout_With_Three_And_One_Columns")]
 | 
				
			||||||
 | 
					    public Task Should_Render_Layout_With_Three_And_One_Columns()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Given
 | 
				
			||||||
 | 
					        var console = new TestConsole().Size(new Size(40, 17));
 | 
				
			||||||
 | 
					        var layout = new Layout();
 | 
				
			||||||
 | 
					        var col1 = new Layout();
 | 
				
			||||||
 | 
					        var col1Row1 = new Layout();
 | 
				
			||||||
 | 
					        var col1Row2 = new Layout();
 | 
				
			||||||
 | 
					        var col1Row3 = new Layout();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        col1.SplitRows(col1Row1, col1Row2, col1Row3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var col2 = new Layout();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        layout.SplitColumns(col1, col2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var panel = new Panel("Hello, World!") { Expand = true };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<Layout> layouts = [col1Row1, col1Row2, col1Row3, col2];
 | 
				
			||||||
 | 
					        foreach (var l in layouts)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            l.Update(panel);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // When
 | 
				
			||||||
 | 
					        console.Write(layout);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Then
 | 
				
			||||||
 | 
					        return Verifier.Verify(console.Output);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user