mirror of https://github.com/dahall/Vanara.git
102 lines
2.9 KiB
C#
102 lines
2.9 KiB
C#
using NUnit.Framework;
|
|
using System.Linq;
|
|
using Vanara.PInvoke.Tests;
|
|
using static Vanara.PInvoke.SetupAPI;
|
|
|
|
namespace Vanara.Diagnostics.Tests
|
|
{
|
|
[TestFixture]
|
|
public class DeviceTests
|
|
{
|
|
[Test]
|
|
public void ClassNamesTest()
|
|
{
|
|
var coll = DeviceManager.LocalInstance.GetSetupClasses();
|
|
Assert.That(coll, Is.Not.Empty);
|
|
TestContext.Write(string.Join("\r\n", coll.Select(c => c.Description).OrderBy(s => s)));
|
|
}
|
|
|
|
[Test]
|
|
public void ClassPropsTest()
|
|
{
|
|
using var cl = new DeviceClass("DiskDrive");
|
|
cl.Guid.WriteValues();
|
|
cl.Name.WriteValues();
|
|
cl.Description.WriteValues();
|
|
cl.BitmapIndex.WriteValues();
|
|
cl.ImageIndex.WriteValues();
|
|
cl.NoDisplay.WriteValues();
|
|
cl.NoInstall.WriteValues();
|
|
foreach (var kv in cl.Properties)
|
|
TestContext.WriteLine($"{kv.Key.LookupName()} = {kv.Value.GetStringVal()}");
|
|
foreach (var kv in cl.RegistryProperties)
|
|
TestContext.WriteLine($"{kv.Key} = {kv.Value.GetStringVal()}");
|
|
}
|
|
|
|
[Test]
|
|
public void EnumDevicesTest()
|
|
{
|
|
using var coll = new DeviceCollection(GUID_DEVCLASS_DISKDRIVE);//, null, null, DIGCF.DIGCF_ALLCLASSES);
|
|
var devs = coll.ToArray();
|
|
Assert.That(devs, Is.Not.Empty);
|
|
TestContext.WriteLine($"Found {devs.Length} devices.");
|
|
TestContext.Write(string.Join("\r\n", devs.Select(c => c.Name).OrderBy(s => s)));
|
|
}
|
|
|
|
[Test]
|
|
public void PropsTest()
|
|
{
|
|
using var cl = new DeviceClass(GUID_DEVCLASS_DISKDRIVE);
|
|
var devs = cl.GetDevices().ToArray();
|
|
TestContext.WriteLine($"Found {devs.Length} devices.");
|
|
foreach (var dev in devs)
|
|
{
|
|
TestContext.WriteLine(new string('=', 20) + dev.Name + new string('=', 20));
|
|
dev.Description.WriteValues();
|
|
dev.DriverPath.WriteValues();
|
|
dev.InstallFlags.WriteValues();
|
|
dev.InstallFlagsEx.WriteValues();
|
|
dev.InstanceId.WriteValues();
|
|
foreach (var kv in dev.Properties)
|
|
TestContext.WriteLine($"{kv.Key.LookupName()} = {kv.Value.GetStringVal()}");
|
|
foreach (var kv in dev.RegistryProperties)
|
|
TestContext.WriteLine($"{kv.Key} = {kv.Value.GetStringVal()}");
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void SetClassPropTest()
|
|
{
|
|
using var cl = new DeviceClass(GUID_DEVCLASS_DISKDRIVE);
|
|
var val = cl.Properties[DEVPKEY_DeviceClass_Exclusive];
|
|
Assert.IsNull(val);
|
|
try
|
|
{
|
|
cl.Properties[DEVPKEY_DeviceClass_Exclusive] = false;
|
|
val = cl.Properties[DEVPKEY_DeviceClass_Exclusive];
|
|
Assert.IsFalse((bool)val);
|
|
}
|
|
finally
|
|
{
|
|
Assert.That(cl.Properties.Remove(DEVPKEY_DeviceClass_Exclusive), ResultIs.Successful);
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void SetClassRegPropTest()
|
|
{
|
|
using var cl = new DeviceClass(GUID_DEVCLASS_DISKDRIVE);
|
|
var val = cl.RegistryProperties[SPCRP.SPCRP_LOWERFILTERS];
|
|
try
|
|
{
|
|
cl.RegistryProperties[SPCRP.SPCRP_LOWERFILTERS] = new[] { "MyFilter" };
|
|
var newval = cl.RegistryProperties[SPCRP.SPCRP_LOWERFILTERS];
|
|
Assert.That(newval, Is.Not.EqualTo(val));
|
|
}
|
|
finally
|
|
{
|
|
cl.RegistryProperties[SPCRP.SPCRP_LOWERFILTERS] = val;
|
|
}
|
|
}
|
|
}
|
|
} |