|
#Requires -Module Pester |
|
#Requires -Version 3.0 |
|
|
|
# see https://d-fens.ch/2015/06/28/bug-powershell-import-clixml-incorrectly-creates-hashtables-with-duplicate-keys/ for further explanation |
|
|
|
$here = Split-Path -Parent $MyInvocation.MyCommand.Path |
|
$ImportCliXmlDuplicateKeys = "{0}.xml" -f $MyInvocation.MyCommand.Name.Replace('.Tests.ps1', ''); |
|
|
|
Describe -Tags "Test-ImportCliXml" "Test-ImportCliXml" { |
|
|
|
$ImportCliXmlDuplicateKeysPathAndFileName = Join-Path -Path $here -ChildPath $ImportCliXmlDuplicateKeys; |
|
|
|
Context "Test-ImportCliXmlWithDuplicateKeys" { |
|
|
|
It 'ShouldThrow-OnImportWithDuplicateKeys' { |
|
{ Import-CliXml $ImportCliXmlDuplicateKeysPathAndFileName } | Should Throw; |
|
} |
|
It 'ShouldNotBe-TypeHashtable' { |
|
$hashtable = Import-CliXml $ImportCliXmlDuplicateKeysPathAndFileName; |
|
$hashtable -is [hashtable] | Should Not Be $True; |
|
} |
|
It 'ShouldNot-Contain2Keys' { |
|
$hashtable = Import-CliXml $ImportCliXmlDuplicateKeysPathAndFileName; |
|
$hashtable.Count | Should Not Be 2; |
|
} |
|
It 'ShouldNotThrow-ExceptionWhenAdding' { |
|
$hashtable = Import-CliXml $ImportCliXmlDuplicateKeysPathAndFileName; |
|
$hashtableTemp = @{}; |
|
{ |
|
foreach($i in $hashtable.GetEnumerator()) |
|
{ |
|
$hashtableTemp.Add($i.Name, $i.Value); |
|
} |
|
} | Should Not Throw; |
|
} |
|
It 'ShouldBe-TrueAndFindKey' { |
|
$hashtable = Import-CliXml $ImportCliXmlDuplicateKeysPathAndFileName; |
|
foreach($i in $hashtable.Keys) |
|
{ |
|
$keyName = '{0}' -f $i; |
|
break; |
|
} |
|
$hashtable.ContainsKey($keyName) | Should Be $true; |
|
} |
|
It 'ShouldBe-TrueAndFindValues' { |
|
$hashtable = Import-CliXml $ImportCliXmlDuplicateKeysPathAndFileName; |
|
$hashtable.ContainsValue('some other arbitrary value') | Should Be $true; |
|
$hashtable.ContainsValue('arbitrary value') | Should Be $true; |
|
} |
|
} |
|
} |
|
|
|
# |
|
# Copyright 2015 Ronald Rink, d-fens GmbH |
|
# |
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
# you may not use this file except in compliance with the License. |
|
# You may obtain a copy of the License at |
|
# |
|
# http://www.apache.org/licenses/LICENSE-2.0 |
|
# |
|
# Unless required by applicable law or agreed to in writing, software |
|
# distributed under the License is distributed on an "AS IS" BASIS, |
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
# See the License for the specific language governing permissions and |
|
# limitations under the License. |
|
# |