tests/DiskSmartAttributeDescription.tests.ps1
BeforeAll { Remove-Module -Name DiskSmartInfo -Force -ErrorAction SilentlyContinue Import-Module -Name "$PSScriptRoot\..\DiskSmartInfo.psd1" } Describe "Get-DiskSmartAttributeDescription" { Context "Without parameters" { BeforeAll { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription } It "Has 82 attributes" { $diskSmartAttributeDescription | Should -HaveCount 82 } It "Has correct attributes" { $diskSmartAttributeDescription[0].AttributeID | Should -Be 1 $diskSmartAttributeDescription[38].AttributeIDHex | Should -BeExactly 'C2' $diskSmartAttributeDescription[2].AttributeName | Should -BeExactly 'Spin-Up Time' $diskSmartAttributeDescription[81].Description | Should -BeExactly 'Free Fall Protection S.M.A.R.T. parameter indicates a number of free fall events detected by the accelerometer sensor.' } } Context "-AttributeID" { BeforeAll { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription -AttributeID 190 } It "Has correct attribute" { $diskSmartAttributeDescription.AttributeName | Should -BeExactly 'Airflow Temperature Celsius' } } Context "-AttributeID without parameter name" { BeforeAll { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription 190 } It "Has correct attribute" { $diskSmartAttributeDescription.AttributeName | Should -BeExactly 'Airflow Temperature Celsius' } } Context "-AttributeIDHex" { BeforeAll { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription -AttributeIDHex C1 } It "Has correct attribute" { $diskSmartAttributeDescription.AttributeName | Should -BeExactly 'Load Cycle Count' } } Context "-AttributeName" { BeforeAll { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription -AttributeName 'Power-On Hours' } It "Has correct attribute" { $diskSmartAttributeDescription.AttributeName | Should -BeExactly 'Power-On Hours' } } Context "AttributeName wildcards" { It "Has correct attribute" { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription -AttributeName '*put*' $diskSmartAttributeDescription | Should -HaveCount 1 $diskSmartAttributeDescription.AttributeName | Should -BeExactly 'Throughput Performance' } It "Has correct attributes" { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription -AttributeName 'r*' $diskSmartAttributeDescription | Should -HaveCount 9 $diskSmartAttributeDescription[0].AttributeName | Should -BeExactly 'Raw Read Error Rate' $diskSmartAttributeDescription[8].AttributeName | Should -BeExactly 'Read Error Retry Rate' } } Context "Nonexistent attributes" { BeforeAll { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription -AttributeName '*SomeNonexistentAttribute*' } It "Has empty result" { $diskSmartAttributeDescription | Should -BeNullOrEmpty } } Context "-AttributeID -AttributeIDHex -AttributeName" { BeforeAll { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription -AttributeID 1, 2 -AttributeIDHex 'A', 'C8' -AttributeName 'Soft ECC correction', 'Offline Seek Performance' } It "Has correct results count" { $diskSmartAttributeDescription | Should -HaveCount 6 } It "Has correct attributes" { $diskSmartAttributeDescription[0].AttributeName | Should -BeExactly 'Raw Read Error Rate' $diskSmartAttributeDescription[1].AttributeName | Should -BeExactly 'Throughput Performance' $diskSmartAttributeDescription[2].AttributeName | Should -BeExactly 'Spin Retry Count' $diskSmartAttributeDescription[3].AttributeName | Should -BeExactly 'Multi-Zone Error Rate' $diskSmartAttributeDescription[4].AttributeName | Should -BeExactly 'Soft ECC correction' $diskSmartAttributeDescription[5].AttributeName | Should -BeExactly 'Offline Seek Performance' } } Context "-AttributeID -AttributeIDHex -AttributeName without parameter names" { BeforeAll { $diskSmartAttributeDescription = Get-DiskSmartAttributeDescription 1, 2 'A', 'C8' 'Soft ECC correction', 'Offline Seek Performance' } It "Has correct results count" { $diskSmartAttributeDescription | Should -HaveCount 6 } It "Has correct attributes" { $diskSmartAttributeDescription[0].AttributeName | Should -BeExactly 'Raw Read Error Rate' $diskSmartAttributeDescription[1].AttributeName | Should -BeExactly 'Throughput Performance' $diskSmartAttributeDescription[2].AttributeName | Should -BeExactly 'Spin Retry Count' $diskSmartAttributeDescription[3].AttributeName | Should -BeExactly 'Multi-Zone Error Rate' $diskSmartAttributeDescription[4].AttributeName | Should -BeExactly 'Soft ECC correction' $diskSmartAttributeDescription[5].AttributeName | Should -BeExactly 'Offline Seek Performance' } } } |