From 273b1abd5dd8d3515412e4c895ca5d3e90580b55 Mon Sep 17 00:00:00 2001 From: Jared Goodwin Date: Thu, 21 Jul 2022 18:44:59 -0700 Subject: [PATCH] Add stream extensions test. --- Remotely.sln | 15 ++++++++++ Server.Installer/Services/ServerInstaller.cs | 4 +-- Tests/Shared.Tests/Shared.Tests.csproj | 26 +++++++++++++++++ Tests/Shared.Tests/StreamExtensionsTests.cs | 30 ++++++++++++++++++++ Tests/Shared.Tests/Usings.cs | 1 + 5 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 Tests/Shared.Tests/Shared.Tests.csproj create mode 100644 Tests/Shared.Tests/StreamExtensionsTests.cs create mode 100644 Tests/Shared.Tests/Usings.cs diff --git a/Remotely.sln b/Remotely.sln index 2c433d93..b762e834 100644 --- a/Remotely.sln +++ b/Remotely.sln @@ -53,6 +53,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Desktop.Win.Tests", "Tests\ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{0754E195-7080-4AAC-B5A3-A9923B1283CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.Tests", "Tests\Shared.Tests\Shared.Tests.csproj", "{B6C1030D-1F74-4143-BB70-FC79C0274653}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -195,6 +197,18 @@ Global {162C54FB-FEEC-490B-9105-103AD30A10F7}.Release|x64.Build.0 = Release|Any CPU {162C54FB-FEEC-490B-9105-103AD30A10F7}.Release|x86.ActiveCfg = Release|Any CPU {162C54FB-FEEC-490B-9105-103AD30A10F7}.Release|x86.Build.0 = Release|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|x64.ActiveCfg = Debug|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|x64.Build.0 = Debug|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|x86.ActiveCfg = Debug|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Debug|x86.Build.0 = Debug|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|Any CPU.Build.0 = Release|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|x64.ActiveCfg = Release|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|x64.Build.0 = Release|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|x86.ActiveCfg = Release|Any CPU + {B6C1030D-1F74-4143-BB70-FC79C0274653}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -203,6 +217,7 @@ Global {48D9D0E6-5781-44A9-84C0-56F56C2A1193} = {0754E195-7080-4AAC-B5A3-A9923B1283CE} {6C25240C-613D-4A86-A04E-784BA6726094} = {0754E195-7080-4AAC-B5A3-A9923B1283CE} {162C54FB-FEEC-490B-9105-103AD30A10F7} = {0754E195-7080-4AAC-B5A3-A9923B1283CE} + {B6C1030D-1F74-4143-BB70-FC79C0274653} = {0754E195-7080-4AAC-B5A3-A9923B1283CE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EAE10B28-119B-437C-9E68-06F0EE3F968A} diff --git a/Server.Installer/Services/ServerInstaller.cs b/Server.Installer/Services/ServerInstaller.cs index 46c0c7b4..4a875f89 100644 --- a/Server.Installer/Services/ServerInstaller.cs +++ b/Server.Installer/Services/ServerInstaller.cs @@ -43,7 +43,7 @@ namespace Server.Installer.Services using var httpClient = new HttpClient(); var response = await httpClient.GetAsync(releaseFile); - var contentLength = (double?)response.Content.Headers.ContentLength; + var contentLength = response.Content.Headers.ContentLength; using var webStream = await response.Content.ReadAsStreamAsync(); using var fileStream = new FileStream(zipPath, FileMode.Create); @@ -59,7 +59,7 @@ namespace Server.Installer.Services } - var newProgress = bytesRead / contentLength * 100; + var newProgress = (double)bytesRead / contentLength * 100; if (newProgress == 100 || newProgress - progress > 5) diff --git a/Tests/Shared.Tests/Shared.Tests.csproj b/Tests/Shared.Tests/Shared.Tests.csproj new file mode 100644 index 00000000..4d2bac6f --- /dev/null +++ b/Tests/Shared.Tests/Shared.Tests.csproj @@ -0,0 +1,26 @@ + + + + net6.0 + enable + enable + + false + + Remotely.Shared.Tests + + Remotely.Shared.Tests + + + + + + + + + + + + + + diff --git a/Tests/Shared.Tests/StreamExtensionsTests.cs b/Tests/Shared.Tests/StreamExtensionsTests.cs new file mode 100644 index 00000000..3b2559ce --- /dev/null +++ b/Tests/Shared.Tests/StreamExtensionsTests.cs @@ -0,0 +1,30 @@ +using System.Security.Cryptography; +using Remotely.Shared.Extensions; + +namespace Remotely.Shared.Tests +{ + [TestClass] + public class StreamExtensionsTests + { + [TestMethod] + public async Task CopyToAsyncTest() + { + var bufferSize = 500_000; + var srcBuffer = new byte[bufferSize]; + RandomNumberGenerator.Fill(srcBuffer); + + using var src = new MemoryStream(srcBuffer); + using var dst = new MemoryStream(); + + var amounts = new List(); + + await src.CopyToAsync(dst, bytesRead => + { + amounts.Add(bytesRead); + }); + + Assert.IsTrue(amounts.Any()); + Assert.AreEqual(bufferSize, amounts.Last()); + } + } +} \ No newline at end of file diff --git a/Tests/Shared.Tests/Usings.cs b/Tests/Shared.Tests/Usings.cs new file mode 100644 index 00000000..ab67c7ea --- /dev/null +++ b/Tests/Shared.Tests/Usings.cs @@ -0,0 +1 @@ +global using Microsoft.VisualStudio.TestTools.UnitTesting; \ No newline at end of file