Skip to content

Instantly share code, notes, and snippets.

@RhysC
Created March 1, 2011 15:14
Show Gist options
  • Save RhysC/849264 to your computer and use it in GitHub Desktop.
Save RhysC/849264 to your computer and use it in GitHub Desktop.
Tests is versions are greater
#Version checks
#Version type
function Test-VersionIsGreaterThanOrEqualTo()
{
param ([string] $versionA, [string] $versionB)
"versionA $versionA"
"versionB $versionB"
$version1 = New-Version $versionA
$version2 = New-Version $versionb
if($version1.Major -lt $version2.Major)
{
Write-Verbose "Major is less than ($version1 vs $version2)"
return $false
}
if($version1.Minor -lt $version2.Minor)
{
Write-Verbose "Minor is less than ($version1 vs $version2)"
return $false
}
if($version1.Release -lt $version2.Release)
{
Write-Verbose "Release is less than ($version1 vs $version2)"
return $false
}
if($version1.Build -lt $version2.Build)
{
Write-Verbose "Build is less than ($version1 vs $version2)"
return $false
}
Write-Verbose "All are equal or greater than"
return $true
}
function Test-VersionIsEqualTo()
{
param ([string] $versionA, [string] $versionB)
"versionA $versionA"
"versionB $versionB"
$version1 = New-Version $versionA
$version2 = New-Version $versionb
if($version1.Major -ne $version2.Major)
{
Write-Verbose "Major is not equal ($version1 vs $version2)"
return $false
}
if($version1.Minor -ne $version2.Minor)
{
Write-Verbose "Minor is not equal ($version1 vs $version2)"
return $false
}
if($version1.Release -ne $version2.Release)
{
Write-Verbose "Release is not equal ($version1 vs $version2)"
return $false
}
if($version1.Build -ne $version2.Build)
{
Write-Verbose "Build is not equal ($version1 vs $version2)"
return $false
}
Write-Verbose "All properties are equal"
return $true
}
function New-Version()
{
param ([string] $version)
$versionArray = $version.Replace("v","").Split(".")
if($versionArray.Count -lt 1)
{
throw "Version should be in the format [Major].[Minor].[Release].[Build] eg 1.2.3.123 (input provided was : $version)"
}
if($versionArray.Count -ne 4)
{
Write-Warning "Version should be in the format [Major].[Minor].[Release].[Build] eg 1.2.3.123 (input provided was : $version)"
if($versionArray.Count -lt 4)
{
$newArray = @(0,0,0,0)
$index = 0
while($index -lt $versionArray.Count)
{
$newArray[$index] = $versionArray[$index];
$index = $index+1;
}
$versionArray = $newArray;
}
}
$Major = [int]$versionArray[0]
$Minor = [int]$versionArray[1]
$Release = [int]$versionArray[2]
$Build = [int]$versionArray[3]
$versionObj = New-Object PSObject
$versionObj | add-member Noteproperty Major $Major
$versionObj | add-member Noteproperty Minor $Minor
$versionObj | add-member Noteproperty Release $Release
$versionObj | add-member Noteproperty Build $Build
return $versionObj;
}
#Tests
if((Test-VersionIsGreaterThanOrEqualTo "0.0.0.1" "0.0.0.0") -eq $false)
{
throw "fail"
}
if((Test-VersionIsGreaterThanOrEqualTo "1.0.0.0" "1.0.0.0") -eq $false)
{
throw "fail"
}
if((Test-VersionIsGreaterThanOrEqualTo "1.0.0.1" "1.0.0.0") -eq $false)
{
throw "fail"
}
if((Test-VersionIsGreaterThanOrEqualTo "1.0.1.0" "1.0.0.0") -eq $false)
{
throw "fail"
}
if((Test-VersionIsGreaterThanOrEqualTo "1.1.0.0" "1.0.0.0") -eq $false)
{
throw "fail"
}
if((Test-VersionIsGreaterThanOrEqualTo "1.0.0.0" "1.0.0.1") -eq $true)
{
throw "fail"
}
if((Test-VersionIsGreaterThanOrEqualTo "1.0.0.0" "1.0.1.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsGreaterThanOrEqualTo "1.0.0.0" "1.1.0.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsGreaterThanOrEqualTo "0.0.0.0" "1.0.0.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.0.0.0" "1.0.0.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.0.0.0" "0.1.0.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.0.0.0" "0.0.1.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.0.0.0" "0.0.0.1") -eq $true)
{
throw "fail"
}
if((Test-VersionIsEqualTo "1.0.0.0" "0.0.0.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.1.0.0" "0.0.0.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.0.1.0" "0.0.0.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.0.0.1" "0.0.0.0") -eq $true)
{
throw "fail"
}
if((Test-VersionIsEqualTo "1.0.0.0" "1.0.0.0") -eq $false)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.1.0.0" "0.1.0.0") -eq $false)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.0.1.0" "0.0.1.0") -eq $false)
{
throw "fail"
}
if((Test-VersionIsEqualTo "0.0.0.1" "0.0.0.1") -eq $false)
{
throw "fail"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment