MegaBites-AI/Windows-powershell
0372
1// Copyright (c) Microsoft Corporation.2// Licensed under the MIT License.3 4using System;5using System.Management.Automation.Language;6using Xunit;7 8namespace PSTests.Parallel9{10 using System.Linq;11 using System.Management.Automation;12 using System.Management.Automation.Runspaces;13 using System.Xml;14 15 using Microsoft.Management.Infrastructure;16 17 public static class PSObjectTests18 {19 [Fact]20 public static void TestEmptyObjectHasNoProperty()21 {22 var pso = new PSObject();23 var actual = pso.GetFirstPropertyOrDefault(name => true);24 Assert.Null(actual);25 }26 27 [Fact]28 public static void TestWrappedDateTimeHasReflectedMember()29 {30 var pso = new PSObject(DateTime.Now);31 var member = pso.GetFirstPropertyOrDefault(name => name == "DayOfWeek");32 Assert.NotNull(member);33 Assert.Equal("DayOfWeek", member.Name);34 }35 36 [Fact]37 public static void TestAdaptedMember()38 {39 var pso = new PSObject(DateTime.Now);40 pso.Members.Add(new PSNoteProperty("NewMember", "AValue"));41 var member = pso.GetFirstPropertyOrDefault(name => name == "NewMember");42 Assert.NotNull(member);43 Assert.Equal("NewMember", member.Name);44 }45 46 [Fact]47 public static void TestShadowedMember()48 {49 var pso = new PSObject(DateTime.Now);50 pso.Members.Add(new PSNoteProperty("DayOfWeek", "AValue"));51 var member = pso.GetFirstPropertyOrDefault(name => name == "DayOfWeek");52 Assert.NotNull(member);53 Assert.Equal("DayOfWeek", member.Name);54 Assert.Equal("AValue", member.Value);55 }56 57 [Fact]58 public static void TestMemberSetIsNotProperty()59 {60 var pso = new PSObject(DateTime.Now);61 var psNoteProperty = new PSNoteProperty("NewMember", "AValue");62 pso.Members.Add(psNoteProperty);63 pso.Members.Add(new PSMemberSet("NewMemberSet", new[] { psNoteProperty }));64 65 var member = pso.GetFirstPropertyOrDefault(name => name == "NewMemberSet");66 Assert.Null(member);67 }68 69 [Fact]70 public static void TestMemberSet()71 {72 var pso = new PSObject(DateTime.Now);73 var psNoteProperty = new PSNoteProperty("NewMember", "AValue");74 pso.Members.Add(psNoteProperty);75 pso.Members.Add(new PSMemberSet("NewMemberSet", new[] { psNoteProperty }));76 77 var member = pso.Members.FirstOrDefault(name => name == "NewMemberSet");78 Assert.NotNull(member);79 Assert.Equal("NewMemberSet", member.Name);80 }81 82 [Fact]83 public static void TextXmlElementMember()84 {85 var doc = new XmlDocument();86 var root = doc.CreateElement("root");87 doc.AppendChild(root);88 var firstChild = doc.CreateElement("elem1");89 root.AppendChild(firstChild);90 root.InsertAfter(doc.CreateElement("elem2"), firstChild);91 92 var pso = new PSObject(root);93 var member = pso.GetFirstPropertyOrDefault(name => name.StartsWith("elem"));94 Assert.Equal("elem1", member.Name);95 }96 97 [Fact]98 public static void TextXmlAttributeMember()99 {100 var doc = new XmlDocument();101 var root = doc.CreateElement("root");102 doc.AppendChild(root);103 root.SetAttribute("attr", "value");104 root.AppendChild(doc.CreateElement("elem"));105 106 var pso = new PSObject(root);107 var member = pso.GetFirstPropertyOrDefault(name => name.StartsWith("attr"));108 Assert.Equal("attr", member.Name);109 }110 111 [SkippableFact]112 public static void TestCimInstanceProperty()113 {114 Skip.IfNot(Platform.IsWindows);115 var iss = InitialSessionState.CreateDefault2();116 iss.Commands.Add(new SessionStateCmdletEntry("Get-CimInstance", typeof(Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand), null));117 using (var ps = PowerShell.Create(iss))118 {119 ps.AddCommand("Get-CimInstance").AddParameter("ClassName", "Win32_BIOS");120 var res = ps.Invoke().FirstOrDefault();121 Assert.NotNull(res);122 var member = res.GetFirstPropertyOrDefault(name => name == "Name");123 Assert.NotNull(member);124 }125 }126 }127}128 