Team Ai
Datasetpublic

MegaBites-AI/Windows-powershell

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes372downloads
WildcardPattern.Tests.ps178 linesDownload Raw Back to engine
1# Copyright (c) Microsoft Corporation.2# Licensed under the MIT License.3 4Describe "WildcardPattern.ToRegex Tests" -Tags "CI" {5    It "Converts '<Pattern>' to regex pattern '<Expected>'" -TestCases @(6        @{ Pattern = '*.txt'; Expected = '\.txt$' }7        @{ Pattern = 'test?.log'; Expected = '^test.\.log$' }8        @{ Pattern = 'file[0-9].txt'; Expected = '^file[0-9]\.txt$' }9        @{ Pattern = 'test.log'; Expected = '^test\.log$' }10        @{ Pattern = '*test*file*.txt'; Expected = 'test.*file.*\.txt$' }11        @{ Pattern = 'file[0-9][a-z].txt'; Expected = '^file[0-9][a-z]\.txt$' }12        @{ Pattern = 'test*'; Expected = '^test' }13        @{ Pattern = '*test*'; Expected = 'test' }14    ) {15        param($Pattern, $Expected)16        $wildcardPattern = [System.Management.Automation.WildcardPattern]::new($Pattern)17        $regex = $wildcardPattern.ToRegex()18        $regex | Should -BeOfType ([regex])19        $regex.ToString() | Should -BeExactly $Expected20    }21 22    It "Converts '<Pattern>' with <OptionName> option" -TestCases @(23        @{ Pattern = 'TEST'; OptionName = 'IgnoreCase'; Option = [System.Management.Automation.WildcardOptions]::IgnoreCase; Expected = '^TEST$'; ExpectedRegexOptions = 'IgnoreCase, Singleline'; TestString = 'test'; ExpectedMatch = $true }24        @{ Pattern = 'test'; OptionName = 'CultureInvariant'; Option = [System.Management.Automation.WildcardOptions]::CultureInvariant; Expected = '^test$'; ExpectedRegexOptions = 'Singleline, CultureInvariant'; TestString = 'test'; ExpectedMatch = $true }25        @{ Pattern = 'test*'; OptionName = 'Compiled'; Option = [System.Management.Automation.WildcardOptions]::Compiled; Expected = '^test'; ExpectedRegexOptions = 'Compiled, Singleline'; TestString = 'testing'; ExpectedMatch = $true }26    ) {27        param($Pattern, $OptionName, $Option, $Expected, $ExpectedRegexOptions, $TestString, $ExpectedMatch)28        $wildcardPattern = [System.Management.Automation.WildcardPattern]::new($Pattern, $Option)29        $regex = $wildcardPattern.ToRegex()30        $regex | Should -BeOfType ([regex])31        $regex.ToString() | Should -BeExactly $Expected32        $regex.Options.ToString() | Should -BeExactly $ExpectedRegexOptions33        $regex.IsMatch($TestString) | Should -Be $ExpectedMatch34    }35 36    It "Regex from '<Pattern>' matches '<TestString>': <ShouldMatch>" -TestCases @(37        @{ Pattern = '*test*file*.txt'; TestString = 'mytestmyfile123.txt'; ShouldMatch = $true }38        @{ Pattern = 'file[0-9][a-z].txt'; TestString = 'file5a.txt'; ShouldMatch = $true }39        @{ Pattern = 'file[0-9][a-z].txt'; TestString = 'file55.txt'; ShouldMatch = $false }40    ) {41        param($Pattern, $TestString, $ShouldMatch)42        $regex = [System.Management.Automation.WildcardPattern]::new($Pattern).ToRegex()43        $regex.IsMatch($TestString) | Should -Be $ShouldMatch44    }45 46    Context "Edge cases" {47        It "Handles empty pattern" {48            $pattern = [System.Management.Automation.WildcardPattern]::new("")49            $regex = $pattern.ToRegex()50            $regex | Should -BeOfType ([regex])51            $regex.ToString() | Should -Be "^$"52        }53 54        It "Handles pattern with only asterisk" {55            $pattern = [System.Management.Automation.WildcardPattern]::new("*")56            $regex = $pattern.ToRegex()57            $regex | Should -BeOfType ([regex])58            $regex.ToString() | Should -BeExactly ""59            $regex.IsMatch("anything") | Should -BeTrue60            $regex.IsMatch("") | Should -BeTrue61        }62 63        It "Handles escaped '<Char>' wildcard character" -TestCases @(64            @{ Char = '*'; Pattern = 'file`*.txt'; Expected = '^file\*\.txt$' }65            @{ Char = '?'; Pattern = 'file`?.txt'; Expected = '^file\?\.txt$' }66            @{ Char = '['; Pattern = 'file`[.txt'; Expected = '^file\[\.txt$' }67            @{ Char = ']'; Pattern = 'file`].txt'; Expected = '^file]\.txt$' }68        ) {69            param($Char, $Pattern, $Expected)70            $wildcardPattern = [System.Management.Automation.WildcardPattern]::new($Pattern)71            $regex = $wildcardPattern.ToRegex()72            $regex | Should -BeOfType ([regex])73            $regex.ToString() | Should -BeExactly $Expected74        }75 76    }77}78