Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

converting sizeBefore and sizeAfter to correct binary multi-byte units #1143

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Common/RepoConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public class RepoConfiguration

public bool CompressWiki { get; set; }

public int? MinKBReduced { get; set; } = 10;
public int? MinKiBReduced { get; set; } = 10;

public string PrTitle { get; set; }

Expand Down
14 changes: 7 additions & 7 deletions CompressImagesFunction/CommitMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public static string Create(CompressionResult[] optimizedImages)

var commitMessage = new StringBuilder();

var totalOrigKb = 0.0;
var totalOptKb = 0.0;
var totalOrigKiB = 0.0;
var totalOptKiB = 0.0;
commitMessage.AppendLine(KnownGitHubs.CommitMessageTitle);
commitMessage.AppendLine();

Expand All @@ -29,17 +29,17 @@ public static string Create(CompressionResult[] optimizedImages)
imageLog.Append(optimizedImage);
imageLog.AppendLine();

totalOrigKb += optimizedImage.SizeBefore;
totalOptKb += optimizedImage.SizeAfter;
totalOrigKiB += optimizedImage.SizeBefore;
totalOptKiB += optimizedImage.SizeAfter;
}

if (optimizedImages.Length > 1)
{
var totalCompression = new CompressionResult
{
Title = "*Total",
SizeBefore = totalOrigKb,
SizeAfter = totalOptKb,
SizeBefore = totalOrigKiB,
SizeAfter = totalOptKiB,
};

commitMessage.Append(totalCompression);
Expand Down Expand Up @@ -76,7 +76,7 @@ public static CompressionResult[] Parse(string commitBody)
continue;
}

var pattern = @"\*?(.*) -- (.*)kb -> (.*)kb \((.*)%\)";
var pattern = @"\*?(.*) -- (.*)KiB -> (.*)KiB \((.*)%\)";
var capture = Regex.Matches(commitLines[i], pattern)[0];

compressionResults.Add(new CompressionResult
Expand Down
31 changes: 29 additions & 2 deletions CompressImagesFunction/CompressionResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,34 @@ public partial class CompressionResult

public double PercentSaved => (1 - (SizeAfter / SizeBefore)) * 100d;

public override string ToString() =>
$"{Title.Replace('\\', '/')} -- {SizeBefore:N2}kb -> {SizeAfter:N2}kb ({PercentSaved:0.##}%)";
public override string ToString()
{
string unitBefore = "KiB", unitAfter = "KiB";
double convSizeBefore = SizeBefore, convSizeAfter = SizeAfter;
if (SizeBefore / 1048576d >= 1d)
{
unitBefore = "GiB";
convSizeBefore = SizeBefore / 1048576d;
}
else if (SizeBefore / 1024d >= 1d)
{
unitBefore = "MiB";
convSizeBefore = SizeBefore / 1024d;
}

if (SizeAfter / 1048576d >= 1d)
{
unitAfter = "GiB";
convSizeAfter = SizeAfter / 1048576d;
}
else if (SizeAfter / 1024d >= 1d)
{
unitAfter = "MiB";
convSizeAfter = SizeAfter / 1024d;
}


return $"{Title.Replace('\\', '/')} -- {convSizeBefore:N2}{unitBefore} -> {convSizeAfter:N2}{unitAfter} ({PercentSaved:0.##}%)";
}
}
}
8 changes: 4 additions & 4 deletions CompressImagesFunction/Threshold.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ public class Threshold
/// <returns>True when the images are compressed enough to warrant a PR.</returns>
public static bool MeetsThreshold(RepoConfiguration repoConfiguration, CompressionResult[] compressionResults)
{
if (repoConfiguration.MinKBReduced == null || repoConfiguration.MinKBReduced <= 0)
if (repoConfiguration.MinKiBReduced == null || repoConfiguration.MinKiBReduced <= 0)
{
// no threshold specified - let's continue
return true;
}

// determine total KB reduced
var totalKBReduced = compressionResults.Sum(x => x.SizeBefore - x.SizeAfter);
return repoConfiguration.MinKBReduced <= totalKBReduced;
// determine total KiB reduced
var totalKiBReduced = compressionResults.Sum(x => x.SizeBefore - x.SizeAfter);
return repoConfiguration.MinKiBReduced <= totalKiBReduced;
}
}
}
4 changes: 2 additions & 2 deletions OpenPrFunction/ImageStat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ public class ImageStat

public double Percent { get; set; }

// before/after are in the form 1,283.30kb (string)
// before/after are in the form 1,283.30KiB (string)
// this function will convert to 1283.30 (double)
public static double ToDouble(string value)
{
return Convert.ToDouble(value.Split(new[] { "kb" }, StringSplitOptions.None)[0]);
return Convert.ToDouble(value.Split(new[] { "KiB", "MiB", "GiB" }, StringSplitOptions.None)[0]);
}
}
}
8 changes: 4 additions & 4 deletions OpenPrFunction/Stats.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ public static partial class Stats
*
* [ImgBot] Optimize images

*Total -- 854.23kb -> 308.28kb (63.91%)
*Total -- 854.23KiB -> 308.28KiB (63.91%)

/featurecard.png -- 542.34kb -> 86.13kb (84.12%)
/graph.png -- 148.78kb -> 88.71kb (40.38%)
/featured-marketplace.png -- 163.11kb -> 133.44kb (18.19%)
/featurecard.png -- 542.34KiB -> 86.13KiB (84.12%)
/graph.png -- 148.78KiB -> 88.71KiB (40.38%)
/featured-marketplace.png -- 163.11KiB -> 133.44KiB (18.19%)
*
*/
public static ImageStat[] ParseStats(string commitBody)
Expand Down
37 changes: 22 additions & 15 deletions Test/CommitMessageTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,26 @@ public void GivenImages_ShouldReportEach()
new CompressionResult
{
Title = "path/to/image2.png",
SizeBefore = 500.3234,
SizeAfter = 360.1321987
SizeBefore = 1400.3234,
SizeAfter = 603.1321987
},
new CompressionResult
{
Title = "path/to/image3.png",
SizeBefore = 2621440.06,
SizeAfter = 2228224.051
},
};

var message = CommitMessage.Create(images);

var expectedMessage = KnownGitHubs.CommitMessageTitle + Environment.NewLine +
Environment.NewLine +
"*Total -- 600.69kb -> 455.92kb (24.1%)" + Environment.NewLine +
"*Total -- 2.50GiB -> 2.13GiB (15.02%)" + Environment.NewLine +
Environment.NewLine +
"path/to/image2.png -- 500.32kb -> 360.13kb (28.02%)" + Environment.NewLine +
"path/to/image.png -- 100.37kb -> 95.79kb (4.56%)" + Environment.NewLine +
"path/to/image2.png -- 1.37MiB -> 603.13KiB (56.93%)" + Environment.NewLine +
"path/to/image3.png -- 2.50GiB -> 2.13GiB (15%)" + Environment.NewLine +
"path/to/image.png -- 100.37KiB -> 95.79KiB (4.56%)" + Environment.NewLine +
Environment.NewLine +
"Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>" + Environment.NewLine;

Expand All @@ -59,7 +66,7 @@ public void GivenOneImage_ShouldReportSingleImageNoTotal()

var expectedMessage = KnownGitHubs.CommitMessageTitle + Environment.NewLine +
Environment.NewLine +
"path/to/image.png -- 100.30kb -> 95.70kb (4.59%)" + Environment.NewLine +
"path/to/image.png -- 100.30KiB -> 95.70KiB (4.59%)" + Environment.NewLine +
Environment.NewLine +
"Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>" + Environment.NewLine;

Expand Down Expand Up @@ -89,10 +96,10 @@ public void GivenBackslashes_ShouldRenderForwardSlashes()

var expectedMessage = KnownGitHubs.CommitMessageTitle + Environment.NewLine +
Environment.NewLine +
"*Total -- 501.89kb -> 455.68kb (9.21%)" + Environment.NewLine +
"*Total -- 501.89KiB -> 455.68KiB (9.21%)" + Environment.NewLine +
Environment.NewLine +
"path/to/image2.png -- 300.92kb -> 260.56kb (13.41%)" + Environment.NewLine +
"path/to/image.png -- 200.97kb -> 195.12kb (2.91%)" + Environment.NewLine +
"path/to/image2.png -- 300.92KiB -> 260.56KiB (13.41%)" + Environment.NewLine +
"path/to/image.png -- 200.97KiB -> 195.12KiB (2.91%)" + Environment.NewLine +
Environment.NewLine +
"Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>" + Environment.NewLine;

Expand Down Expand Up @@ -122,10 +129,10 @@ public void GivenUnderscorePrefix_ShouldRenderUnderscore()

var expectedMessage = KnownGitHubs.CommitMessageTitle + Environment.NewLine +
Environment.NewLine +
"*Total -- 501.89kb -> 455.68kb (9.21%)" + Environment.NewLine
"*Total -- 501.89KiB -> 455.68KiB (9.21%)" + Environment.NewLine
+ Environment.NewLine +
"path/to/image2.png -- 300.92kb -> 260.56kb (13.41%)" + Environment.NewLine +
"path/to/_image.png -- 200.97kb -> 195.12kb (2.91%)" + Environment.NewLine +
"path/to/image2.png -- 300.92KiB -> 260.56KiB (13.41%)" + Environment.NewLine +
"path/to/_image.png -- 200.97KiB -> 195.12KiB (2.91%)" + Environment.NewLine +
Environment.NewLine +
"Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>" + Environment.NewLine;

Expand Down Expand Up @@ -269,10 +276,10 @@ public void GivenACommitMessage_ShouldCorrectlyParse()
{
var commitMessage = KnownGitHubs.CommitMessageTitle + Environment.NewLine +
Environment.NewLine +
"*Total -- 501.89kb -> 455.68kb (9.21%)" + Environment.NewLine
"*Total -- 501.89KiB -> 455.68KiB (9.21%)" + Environment.NewLine
+ Environment.NewLine +
"path/to/image.png -- 200.97kb -> 195.12kb (2.91%)" + Environment.NewLine +
"path/to/image2.png -- 300.92kb -> 260.56kb (13.41%)" + Environment.NewLine +
"path/to/image.png -- 200.97KiB -> 195.12KiB (2.91%)" + Environment.NewLine +
"path/to/image2.png -- 300.92KiB -> 260.56KiB (13.41%)" + Environment.NewLine +
Environment.NewLine +
"Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>" + Environment.NewLine;

Expand Down
10 changes: 5 additions & 5 deletions Test/ImageStatTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ public class ImageStatTests
[TestMethod]
public void ShouldConvertToDouble()
{
Assert.AreEqual(1283.3, ImageStat.ToDouble("1,283.30kb"));
Assert.AreEqual(283.3, ImageStat.ToDouble("283.30kb"));
Assert.AreEqual(283.0, ImageStat.ToDouble("283kb"));
Assert.AreEqual(1283.0, ImageStat.ToDouble("1,283kb"));
Assert.AreEqual(0.0, ImageStat.ToDouble("0kb"));
Assert.AreEqual(1283.3, ImageStat.ToDouble("1,283.30KiB"));
Assert.AreEqual(283.3, ImageStat.ToDouble("283.30KiB"));
Assert.AreEqual(283.0, ImageStat.ToDouble("283KiB"));
Assert.AreEqual(1283.0, ImageStat.ToDouble("1283KiB"));
Assert.AreEqual(0.0, ImageStat.ToDouble("0KiB"));
}
}
}
Loading