tests/Set-ProcessRules.Tests.ps1


Describe "Set-ProcessRules" {
    BeforeEach{
        . "$(Split-Path $PSScriptRoot)\src\**\CpuCores.ps1"
        . "$(Split-Path $PSScriptRoot)\src\**\CpuPriorities.ps1"
        . "$(Split-Path $PSScriptRoot)\src\**\Set-ProcessRules.ps1"
        Function Get-ProcessRules{
            return @([PSCustomObject]@{
                Selector = "cmd"
                priority = [priority]::Idle
                affinity = [cores]::Core1
            })
        }
        
      $global:process = Start-Process (Get-ProcessRules).Selector -PassThru
    }

    AfterEach{
        $global:process | Stop-Process -Force
    }
    
    Context "functionality" {
        It "should_affect_given_process" {
            Get-ProcessRules | Set-ProcessRules -Verbose -ProcessId  $global:process.Id
            $global:process.PriorityClass | Should Be "Idle"
            $global:process.ProcessorAffinity | Should Be $([int][cores]::Core1)
        }
    }

    Context "functionality" {
        It "should_affect_processes" {
            Get-ProcessRules | Set-ProcessRules -Verbose
            $global:process.PriorityClass | Should Be "Idle"
            $global:process.ProcessorAffinity | Should Be $([int][cores]::Core1)
        }
    }
   
}