Tests/Resolve-ElmColor.Tests.ps1
|
BeforeAll { . $PSScriptRoot/../Private/Style/Resolve-ElmColor.ps1 $esc = [char]27 } Describe 'Resolve-ElmColor' -Tag 'Unit', 'P2' { Context 'When given a hex color string' { It 'Should return truecolor fg sequence for #FF0000' { $result = Resolve-ElmColor -Color '#FF0000' -IsForeground $result | Should -Be "$($esc)[38;2;255;0;0m" } It 'Should return truecolor bg sequence for #FF0000' { $result = Resolve-ElmColor -Color '#FF0000' $result | Should -Be "$($esc)[48;2;255;0;0m" } It 'Should handle lowercase hex' { $result = Resolve-ElmColor -Color '#00ff00' -IsForeground $result | Should -Be "$($esc)[38;2;0;255;0m" } It 'Should parse all three RGB components correctly' { $result = Resolve-ElmColor -Color '#1A2B3C' -IsForeground $result | Should -Be "$($esc)[38;2;26;43;60m" } } Context 'When given a 256-index integer' { It 'Should return 256-color fg sequence for 196' { $result = Resolve-ElmColor -Color 196 -IsForeground $result | Should -Be "$($esc)[38;5;196m" } It 'Should return 256-color bg sequence for 196' { $result = Resolve-ElmColor -Color 196 $result | Should -Be "$($esc)[48;5;196m" } It 'Should return 256-color fg sequence for 0' { $result = Resolve-ElmColor -Color 0 -IsForeground $result | Should -Be "$($esc)[38;5;0m" } } Context 'When given a named color' { It 'Should return correct fg sequence for Red' { $result = Resolve-ElmColor -Color 'Red' -IsForeground $result | Should -Be "$($esc)[31m" } It 'Should return correct bg sequence for Blue' { $result = Resolve-ElmColor -Color 'Blue' $result | Should -Be "$($esc)[44m" } It 'Should return correct fg sequence for BrightGreen' { $result = Resolve-ElmColor -Color 'BrightGreen' -IsForeground $result | Should -Be "$($esc)[92m" } It 'Should return correct bg sequence for BrightWhite' { $result = Resolve-ElmColor -Color 'BrightWhite' $result | Should -Be "$($esc)[107m" } } Context 'When given an invalid color string' { It 'Should return an empty string' { $result = Resolve-ElmColor -Color 'NotAColor' -IsForeground -ErrorAction SilentlyContinue $result | Should -BeNullOrEmpty } It 'Should emit a non-terminating error' { { Resolve-ElmColor -Color 'NotAColor' -IsForeground -ErrorAction Stop } | Should -Throw } } } |