Tests/Convert-Number.Tests.ps1

#cd C:\Users\Tore\Dropbox\SourceTreeRepros\Numbers -ErrorAction SilentlyContinue
$here = Split-Path -Parent $MyInvocation.MyCommand.Path | split-path -parent
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
#. "$here\functions\$sut"
import-module "$here\Numbers.psd1"

$PSBoundParameters.clear()

Describe "Convert-Number" {
    Context "Parameter validation" {
        It "No parameters should NOT throw" {
                { Convert-Number } | Should not throw
        }

        It "String input should throw" {
            { Convert-Number -Number bla } | Should throw
        }
    }

    Context "Logic validation" {
        $value = 16
        $expected = [PSCustomobject]@{
            Hex = "0x0010"
            Binary = "10000"
            Int = 16
            Bytes = @(16,0,0,0,0,0,0,0)
            OddNumber = $False
        }
        $Actual = Convert-Number -Number $value
        It "Should return a PSCustomobject" {
            $Actual | should BeOfType PSCustomobject
        }

        It "Should have an int value of $value" {
            $Actual.Int | should be $value
        }

        It "Should have an hex value of $($Expected.Hex)" {
            $Actual.Hex | Should be $Expected.Hex
        }

        It "Should have an bin value of $($Expected.Bin)" {
            $Actual.Bin | Should be $Expected.Bin
        }

        It "Should have an OddNumber value of $($Expected.OddNumber)" {
            $Actual.OddNumber | Should be $Expected.OddNumber
        }

        It "Should have an bytes value of $($Expected.Bytes)" {
            $Actual.Bytes | Should be $Expected.Bytes
        }
    }

    Context "Logic validation using pipeline" {
        $value = 16
        $expected = [PSCustomobject]@{
            Hex = "0x0010"
            Binary = "10000"
            Int = 16
            Bytes = @(16,0,0,0,0,0,0,0)
            OddNumber = $False
        }
        $Actual = $value | Convert-Number
        It "Should return a PSCustomobject" {
            $Actual | should BeOfType PSCustomobject
        }

        It "Should have an int value of $value" {
            $Actual.Int | should be $value
        }

        It "Should have an hex value of $($Expected.Hex)" {
            $Actual.Hex | Should be $Expected.Hex
        }

        It "Should have an bin value of $($Expected.Bin)" {
            $Actual.Bin | Should be $Expected.Bin
        }

        It "Should have an OddNumber value of $($Expected.OddNumber)" {
            $Actual.OddNumber | Should be $Expected.OddNumber
        }

        It "Should have an bytes value of $($Expected.Bytes)" {
            $Actual.Bytes | Should be $Expected.Bytes
        }
    }
}

Remove-module Numbers