Created
March 1, 2011 15:14
-
-
Save RhysC/849264 to your computer and use it in GitHub Desktop.
Tests is versions are greater
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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