33using BenchmarkDotNet . Columns ;
44using BenchmarkDotNet . Helpers ;
55using Perfolizer . Horology ;
6+ using static BenchmarkDotNet . Reports . SummaryTable . SummaryTableColumn ;
67
78// ReSharper disable MemberCanBePrivate.Global
89
910namespace BenchmarkDotNet . Reports
1011{
1112 public class SummaryStyle : IEquatable < SummaryStyle >
1213 {
13- public static readonly SummaryStyle Default = new SummaryStyle ( DefaultCultureInfo . Instance , printUnitsInHeader : false , printUnitsInContent : true , printZeroValuesInContent : false , sizeUnit : null , timeUnit : null ) ;
14+ public static readonly SummaryStyle Default = new SummaryStyle ( DefaultCultureInfo . Instance , printUnitsInHeader : false , printUnitsInContent : true ,
15+ printZeroValuesInContent : false , sizeUnit : null , timeUnit : null ) ;
16+
1417 internal const int DefaultMaxParameterColumnWidth = 15 + 5 ; // 5 is for postfix " [15]"
1518
1619 public bool PrintUnitsInHeader { get ; }
@@ -24,8 +27,12 @@ public class SummaryStyle : IEquatable<SummaryStyle>
2427
2528 public RatioStyle RatioStyle { get ; }
2629
30+ public TextJustification TextColumnJustification { get ; }
31+ public TextJustification NumericColumnJustification { get ; }
32+
2733 public SummaryStyle ( CultureInfo ? cultureInfo , bool printUnitsInHeader , SizeUnit sizeUnit , TimeUnit timeUnit , bool printUnitsInContent = true ,
28- bool printZeroValuesInContent = false , int maxParameterColumnWidth = DefaultMaxParameterColumnWidth , RatioStyle ratioStyle = RatioStyle . Value )
34+ bool printZeroValuesInContent = false , int maxParameterColumnWidth = DefaultMaxParameterColumnWidth , RatioStyle ratioStyle = RatioStyle . Value ,
35+ TextJustification textColumnJustification = TextJustification . Left , TextJustification numericColumnJustification = TextJustification . Right )
2936 {
3037 if ( maxParameterColumnWidth < DefaultMaxParameterColumnWidth )
3138 throw new ArgumentOutOfRangeException ( nameof ( maxParameterColumnWidth ) , $ "{ DefaultMaxParameterColumnWidth } is the minimum.") ;
@@ -35,29 +42,37 @@ public SummaryStyle(CultureInfo? cultureInfo, bool printUnitsInHeader, SizeUnit
3542 PrintUnitsInContent = printUnitsInContent ;
3643 SizeUnit = sizeUnit ;
3744 TimeUnit = timeUnit ;
38- PrintZeroValuesInContent = printZeroValuesInContent ;
3945 MaxParameterColumnWidth = maxParameterColumnWidth ;
4046 RatioStyle = ratioStyle ;
4147 CodeSizeUnit = SizeUnit . B ;
48+ PrintZeroValuesInContent = printZeroValuesInContent ;
49+ TextColumnJustification = textColumnJustification ;
50+ NumericColumnJustification = numericColumnJustification ;
4251 }
4352
4453 public SummaryStyle WithTimeUnit ( TimeUnit timeUnit )
45- => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , SizeUnit , timeUnit , PrintUnitsInContent , PrintZeroValuesInContent , MaxParameterColumnWidth , RatioStyle ) ;
54+ => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , SizeUnit , timeUnit , PrintUnitsInContent , PrintZeroValuesInContent , MaxParameterColumnWidth ,
55+ RatioStyle , TextColumnJustification , NumericColumnJustification ) ;
4656
4757 public SummaryStyle WithSizeUnit ( SizeUnit sizeUnit )
48- => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , sizeUnit , TimeUnit , PrintUnitsInContent , PrintZeroValuesInContent , MaxParameterColumnWidth , RatioStyle ) ;
58+ => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , sizeUnit , TimeUnit , PrintUnitsInContent , PrintZeroValuesInContent , MaxParameterColumnWidth ,
59+ RatioStyle , TextColumnJustification , NumericColumnJustification ) ;
4960
5061 public SummaryStyle WithZeroMetricValuesInContent ( )
51- => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , SizeUnit , TimeUnit , PrintUnitsInContent , printZeroValuesInContent : true , MaxParameterColumnWidth , RatioStyle ) ;
62+ => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , SizeUnit , TimeUnit , PrintUnitsInContent , printZeroValuesInContent : true ,
63+ MaxParameterColumnWidth , RatioStyle , TextColumnJustification , NumericColumnJustification ) ;
5264
5365 public SummaryStyle WithMaxParameterColumnWidth ( int maxParameterColumnWidth )
54- => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , SizeUnit , TimeUnit , PrintUnitsInContent , PrintZeroValuesInContent , maxParameterColumnWidth , RatioStyle ) ;
66+ => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , SizeUnit , TimeUnit , PrintUnitsInContent , PrintZeroValuesInContent , maxParameterColumnWidth ,
67+ RatioStyle , TextColumnJustification , NumericColumnJustification ) ;
5568
5669 public SummaryStyle WithCultureInfo ( CultureInfo cultureInfo )
57- => new SummaryStyle ( cultureInfo , PrintUnitsInHeader , SizeUnit , TimeUnit , PrintUnitsInContent , PrintZeroValuesInContent , MaxParameterColumnWidth , RatioStyle ) ;
70+ => new SummaryStyle ( cultureInfo , PrintUnitsInHeader , SizeUnit , TimeUnit , PrintUnitsInContent , PrintZeroValuesInContent , MaxParameterColumnWidth ,
71+ RatioStyle , TextColumnJustification , NumericColumnJustification ) ;
5872
5973 public SummaryStyle WithRatioStyle ( RatioStyle ratioStyle )
60- => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , SizeUnit , TimeUnit , PrintUnitsInContent , PrintZeroValuesInContent , MaxParameterColumnWidth , ratioStyle ) ;
74+ => new SummaryStyle ( CultureInfo , PrintUnitsInHeader , SizeUnit , TimeUnit , PrintUnitsInContent , PrintZeroValuesInContent , MaxParameterColumnWidth ,
75+ ratioStyle , TextColumnJustification , NumericColumnJustification ) ;
6176
6277 public bool Equals ( SummaryStyle other )
6378 {
@@ -73,7 +88,9 @@ public bool Equals(SummaryStyle other)
7388 && Equals ( CodeSizeUnit , other . CodeSizeUnit )
7489 && Equals ( TimeUnit , other . TimeUnit )
7590 && MaxParameterColumnWidth == other . MaxParameterColumnWidth
76- && RatioStyle == other . RatioStyle ;
91+ && RatioStyle == other . RatioStyle
92+ && TextColumnJustification == other . TextColumnJustification
93+ && NumericColumnJustification == other . NumericColumnJustification ;
7794 }
7895
7996 public override bool Equals ( object obj ) => obj is SummaryStyle summary && Equals ( summary ) ;
@@ -87,7 +104,9 @@ public override int GetHashCode() =>
87104 CodeSizeUnit ,
88105 TimeUnit ,
89106 MaxParameterColumnWidth ,
90- RatioStyle ) ;
107+ RatioStyle ,
108+ TextColumnJustification ,
109+ NumericColumnJustification ) ;
91110
92111 public static bool operator == ( SummaryStyle left , SummaryStyle right ) => Equals ( left , right ) ;
93112
0 commit comments