From 21c4311935140aba3e552c2657b827eabae4f623 Mon Sep 17 00:00:00 2001 From: dahall Date: Thu, 18 Feb 2021 14:27:08 -0700 Subject: [PATCH] Added/updated tests for Kernel32 --- UnitTests/CSharpRunner/TestHelper.cs | 2 +- UnitTests/PInvoke/Kernel32/FileApiTests.cs | 6 +++--- UnitTests/PInvoke/Kernel32/IoApiSetTests.cs | 28 ++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/UnitTests/CSharpRunner/TestHelper.cs b/UnitTests/CSharpRunner/TestHelper.cs index 54e89933..f7854c75 100644 --- a/UnitTests/CSharpRunner/TestHelper.cs +++ b/UnitTests/CSharpRunner/TestHelper.cs @@ -33,7 +33,7 @@ namespace Vanara.PInvoke.Tests { var output = new List(); var attr = System.Reflection.TypeAttributes.SequentialLayout | System.Reflection.TypeAttributes.ExplicitLayout; - foreach (var t in typeof(AdvApi32).GetNestedTypes(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic). + foreach (var t in type.GetNestedTypes(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic). Where(t => t.IsValueType && !t.IsEnum && (t.Attributes & attr) != 0 && ((filters?.Length ?? 0) == 0 || filters.Any(s => t.Name.Contains(s))))) output.Add($"{t.Name} = {Marshal.SizeOf(t)}"); output.Sort(); diff --git a/UnitTests/PInvoke/Kernel32/FileApiTests.cs b/UnitTests/PInvoke/Kernel32/FileApiTests.cs index caceb082..a407f4cf 100644 --- a/UnitTests/PInvoke/Kernel32/FileApiTests.cs +++ b/UnitTests/PInvoke/Kernel32/FileApiTests.cs @@ -277,9 +277,9 @@ namespace Vanara.PInvoke.Tests [Test] public void GetLogicalDriveStringsTest() { - var sb = new StringBuilder(1024); - Assert.That(GetLogicalDriveStrings((uint)sb.Capacity, sb), Is.Not.Zero); - TestContext.WriteLine(sb); + var ie = Enumerable.Empty(); + Assert.That(ie = GetLogicalDriveStrings(), Is.Not.Empty); + ie.WriteValues(); } [Test] diff --git a/UnitTests/PInvoke/Kernel32/IoApiSetTests.cs b/UnitTests/PInvoke/Kernel32/IoApiSetTests.cs index 8fcb18de..157ec87b 100644 --- a/UnitTests/PInvoke/Kernel32/IoApiSetTests.cs +++ b/UnitTests/PInvoke/Kernel32/IoApiSetTests.cs @@ -11,5 +11,33 @@ namespace Vanara.PInvoke.Tests [TestFixture] public class IoApiSetTests { + [Test] + public void DeviceIoControlNoInOutTest() + { + using var hFile = CreateFile(@"\\.\C:", FileAccess.GENERIC_READ, System.IO.FileShare.Read, + default, System.IO.FileMode.Open, 0); + Assert.That(hFile, ResultIs.ValidHandle); + Assert.True(DeviceIoControl(hFile, IOControlCode.FSCTL_IS_VOLUME_MOUNTED)); + } + + [Test] + public void DeviceIoControlOutAndInTest() + { + using var hFile = CreateFile(TestCaseSources.WordDoc, FileAccess.GENERIC_READ | FileAccess.GENERIC_WRITE, + System.IO.FileShare.None, default, System.IO.FileMode.Open, 0); + Assert.That(hFile, ResultIs.ValidHandle); + + Assert.That(DeviceIoControl(hFile, IOControlCode.FSCTL_GET_COMPRESSION, out COMPRESSION_FORMAT compr), ResultIs.Successful); + Assert.That(DeviceIoControl(hFile, IOControlCode.FSCTL_SET_COMPRESSION, compr == COMPRESSION_FORMAT.COMPRESSION_FORMAT_NONE ? COMPRESSION_FORMAT.COMPRESSION_FORMAT_DEFAULT : COMPRESSION_FORMAT.COMPRESSION_FORMAT_NONE), ResultIs.Successful); + Assert.That(DeviceIoControl(hFile, IOControlCode.FSCTL_GET_COMPRESSION, out COMPRESSION_FORMAT newcompr), ResultIs.Successful); + Assert.That(compr, Is.Not.EqualTo(newcompr)); + Assert.That(DeviceIoControl(hFile, IOControlCode.FSCTL_SET_COMPRESSION, compr), ResultIs.Successful); + } + + [Test] + public void StructSizeTest() + { + TestHelper.GetNestedStructSizes(typeof(Kernel32)).WriteValues(); + } } } \ No newline at end of file