Add BooleanParameterDCR and Eventing Pester Test (#2031)
* Add BooleanParameterDCR and Eventing Pester Test * Correct describe for Eventing Pester Test * Add ProviderIntrinsics and Serialization Pester Test
This commit is contained in:
parent
d57530812e
commit
d59b322032
4 changed files with 208 additions and 0 deletions
52
test/powershell/enginecore/BooleanParameterDCR.Tests.ps1
Normal file
52
test/powershell/enginecore/BooleanParameterDCR.Tests.ps1
Normal file
|
@ -0,0 +1,52 @@
|
|||
Describe "BooleanParameterDCR Tests" -tags "CI" {
|
||||
BeforeAll {
|
||||
Function ParserTestSwitchCmdlet
|
||||
{
|
||||
[CmdletBinding()]
|
||||
param([switch]$switchParam)
|
||||
return $switchParam
|
||||
}
|
||||
|
||||
Function ParserTestBoolCmdlet2
|
||||
{
|
||||
[CmdletBinding()]
|
||||
param([bool]$First=$false)
|
||||
return $First
|
||||
}
|
||||
}
|
||||
|
||||
$tests = @(
|
||||
@{ inputTest = 0; expected = $false },
|
||||
@{ inputTest = 000; expected = $false },
|
||||
@{ inputTest = 0x00; expected = $false },
|
||||
@{ inputTest = 0.00; expected = $false }
|
||||
)
|
||||
It "Test that passing zero works as the value for a Switch parameter, inputTest:<inputTest>,expect:<expected>" -TestCases $tests {
|
||||
param ( $inputTest, $expected )
|
||||
[bool]$switchTestParam = $inputTest
|
||||
$result = ParserTestSwitchCmdlet -switchParam:$switchTestParam
|
||||
$result | should be $expected
|
||||
}
|
||||
|
||||
$tests = @(
|
||||
@{ inputTest = $(1 -eq 1); expected = $true },
|
||||
@{ inputTest = $true; expected = $true },
|
||||
@{ inputTest = $TRUE; expected = $true }
|
||||
)
|
||||
It "Test that $true is accepted as a true value for Switch parameters, inputTest:<inputTest>,expect:<expected>" -TestCases $tests {
|
||||
param ( $inputTest, $expected )
|
||||
[bool]$switchTestParam = $inputTest
|
||||
$result = ParserTestSwitchCmdlet -switchParam:$switchTestParam
|
||||
$result | should be $expected
|
||||
}
|
||||
|
||||
It "Test that a nullable boolean is accepted for a boolean parameter." {
|
||||
[System.Nullable[System.Int32]] $nullBoolVar = $false
|
||||
$result = ParserTestBoolCmdlet2 $nullBoolVar
|
||||
$result | should be $false
|
||||
$result = ParserTestBoolCmdlet2 -First:$nullBoolVar
|
||||
$result | should be $false
|
||||
$result = ParserTestBoolCmdlet2 -First $nullBoolVar
|
||||
$result | should be $false
|
||||
}
|
||||
}
|
36
test/powershell/enginecore/Eventing.Tests.ps1
Normal file
36
test/powershell/enginecore/Eventing.Tests.ps1
Normal file
|
@ -0,0 +1,36 @@
|
|||
Describe "Event Subscriber Tests" -tags "CI" {
|
||||
BeforeEach {
|
||||
Get-EventSubscriber | Unregister-Event
|
||||
}
|
||||
AfterEach {
|
||||
Get-EventSubscriber | Unregister-Event
|
||||
}
|
||||
|
||||
# can't let this case to work
|
||||
It "Register an event with no action, trigger it and wait for it to be raised." -Pending:$true{
|
||||
Get-EventSubscriber | should BeNullOrEmpty
|
||||
$messageData = new-object psobject
|
||||
$job = Start-Job { Start-Sleep -Seconds 5; 1..5 }
|
||||
$eventtest = Register-ObjectEvent $job -EventName StateChanged -SourceIdentifier EventSIDTest -Action {} -MessageData $messageData
|
||||
new-event EventSIDTest
|
||||
|
||||
wait-event EventSIDTest
|
||||
$eventdata = get-event EventSIDTest
|
||||
$eventdata.MessageData | should Be $messageData
|
||||
remove-event EventSIDTest
|
||||
Unregister-Event EventSIDTest
|
||||
Get-EventSubscriber | should BeNullOrEmpty
|
||||
}
|
||||
|
||||
It "Access a global variable from an event action." {
|
||||
Get-EventSubscriber | should BeNullOrEmpty
|
||||
set-variable incomingGlobal -scope global -value globVarValue
|
||||
$eventtest = register-engineevent -SourceIdentifier foo -Action {set-variable -scope global -name aglobalvariable -value $incomingGlobal}
|
||||
new-event foo
|
||||
$getvar = get-variable aglobalvariable -scope global
|
||||
$getvar.Name | should Be aglobalvariable
|
||||
$getvar.Value | should Be globVarValue
|
||||
Unregister-Event foo
|
||||
Get-EventSubscriber | should BeNullOrEmpty
|
||||
}
|
||||
}
|
21
test/powershell/enginecore/ProviderIntrinsics.Tests.ps1
Normal file
21
test/powershell/enginecore/ProviderIntrinsics.Tests.ps1
Normal file
|
@ -0,0 +1,21 @@
|
|||
Describe "ProviderIntrinsics Tests" -tags "CI" {
|
||||
BeforeAll {
|
||||
setup -d TestDir
|
||||
}
|
||||
It 'If a childitem exists, HasChild method returns $true' {
|
||||
$ExecutionContext.InvokeProvider.ChildItem.HasChild("$TESTDRIVE") | Should be $true
|
||||
}
|
||||
It 'If a childitem does not exist, HasChild method returns $false' {
|
||||
$ExecutionContext.InvokeProvider.ChildItem.HasChild("$TESTDRIVE/TestDir") | Should be $false
|
||||
}
|
||||
It 'If the path does not exist, HasChild throws an exception' {
|
||||
try {
|
||||
$ExecutionContext.InvokeProvider.ChildItem.HasChild("TESTDRIVE/ThisDirectoryDoesNotExist")
|
||||
throw "Execution OK"
|
||||
}
|
||||
catch {
|
||||
$_.fullyqualifiederrorid | should be "ItemNotFoundException"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
99
test/powershell/enginecore/Serialization.Tests.ps1
Normal file
99
test/powershell/enginecore/Serialization.Tests.ps1
Normal file
|
@ -0,0 +1,99 @@
|
|||
Describe "Serialization Tests" -tags "CI" {
|
||||
BeforeAll {
|
||||
$testfileName="SerializationTest.txt"
|
||||
$testPath = Join-Path $TestDrive $testfileName
|
||||
$testfile = New-Item $testPath -Force
|
||||
function SerializeAndDeserialize([PSObject]$inputObject)
|
||||
{
|
||||
$xmlSerializer = New-Object System.Xml.Serialization.XmlSerializer($inputObject.GetType())
|
||||
$stream = [System.IO.StreamWriter]$testPath
|
||||
$xmlWriter = [System.Xml.XmlWriter]::Create($stream)
|
||||
$xmlSerializer.Serialize($xmlWriter,$inputObject)
|
||||
$stream.Close()
|
||||
|
||||
$stream = [System.IO.StreamReader]$testPath
|
||||
$xmlReader = [System.Xml.XmlReader]::Create($stream)
|
||||
$outputObject = $xmlSerializer.Deserialize($xmlReader)
|
||||
$stream.Close()
|
||||
$xmlReader.Dispose()
|
||||
return $outputObject;
|
||||
}
|
||||
|
||||
enum MyColorFlag
|
||||
{
|
||||
RED
|
||||
BLUE
|
||||
}
|
||||
}
|
||||
AfterAll {
|
||||
Remove-Item $testPath -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
It 'Test DateTimeUtc serialize and deserialize work as expected.' {
|
||||
$inputObject = [System.DateTime]::UtcNow;
|
||||
SerializeAndDeserialize($inputObject) | Should be $inputObject
|
||||
}
|
||||
|
||||
It 'Test DateTime stamps serialize and deserialize work as expected.' {
|
||||
$objs = [System.DateTime]::MaxValue, [System.DateTime]::MinValue, [System.DateTime]::Today, (new-object System.DateTime), (new-object System.DateTime 123456789)
|
||||
foreach($inputObject in $objs)
|
||||
{
|
||||
SerializeAndDeserialize($inputObject) | Should be $inputObject
|
||||
}
|
||||
}
|
||||
|
||||
#pending because of "System.Uri cannot be serialized because it does not have a parameterless constructor."
|
||||
It 'Test system Uri objects serialize and deserialize work as expected.' -Pending:$true {
|
||||
$uristrings = "http://www.microsoft.com","http://www.microsoft.com:8000","http://www.microsoft.com/index.html","http://www.microsoft.com/default.asp","http://www.microsoft.com/Hello%20World.htm"
|
||||
foreach($uristring in $uristrings)
|
||||
{
|
||||
$inputObject = new-object System.Uri $uristring
|
||||
SerializeAndDeserialize($inputObject) | Should be $inputObject
|
||||
}
|
||||
}
|
||||
|
||||
It 'Test a byte array serialize and deserialize work as expected.' {
|
||||
$objs1 = [byte]0, [byte]1, [byte]2, [byte]3, [byte]255
|
||||
$objs2 = @()
|
||||
$objs3 = [byte]128
|
||||
$objs4 = @()
|
||||
for($i=0;$i -lt 256;$i++)
|
||||
{
|
||||
$objs4 += [byte]$i
|
||||
}
|
||||
$objsArray = New-Object System.Collections.ArrayList
|
||||
$objsArray.Add($objs1)
|
||||
$objsArray.Add($objs2)
|
||||
$objsArray.Add($objs3)
|
||||
$objsArray.Add($objs4)
|
||||
|
||||
foreach($inputObject in $objsArray )
|
||||
{
|
||||
$outputs = SerializeAndDeserialize($inputObject);
|
||||
for($i=0;$i -lt $inputObject.Length;$i++)
|
||||
{
|
||||
$outputs[$i] | Should be $inputObject[$i]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
It 'Test Enum serialize and deserialize work as expected.' {
|
||||
$inputObject = [MyColorFlag]::RED
|
||||
SerializeAndDeserialize($inputObject).ToString() | Should be $inputObject.ToString()
|
||||
}
|
||||
|
||||
It 'Test SecureString serialize and deserialize work as expected.' {
|
||||
$inputObject = Convertto-Securestring -String "PowerShellRocks!" -AsPlainText -Force
|
||||
SerializeAndDeserialize($inputObject).Length | Should be $inputObject.Length
|
||||
|
||||
}
|
||||
|
||||
It 'Test ScriptProperty object serialize and deserialize work as expected.' {
|
||||
$versionObject = New-Object PSObject
|
||||
$versionObject | Add-Member -MemberType NoteProperty -Name TestNote -Value "TestNote"
|
||||
$versionObject | Add-Member -MemberType ScriptProperty -Name TestScriptProperty -Value { ($this.TestNote) }
|
||||
|
||||
SerializeAndDeserialize($versionObject).TestScriptProperty | Should be $versionObject.TestScriptProperty
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in a new issue