more tests for VersionComparator

This commit is contained in:
zab
2012-12-09 13:28:06 +00:00
parent 863a05b33d
commit d8417cbf71

View File

@ -3,45 +3,69 @@ package net.i2p.util
import org.scalatest.FunSpec import org.scalatest.FunSpec
import org.scalatest.matchers.ShouldMatchers import org.scalatest.matchers.ShouldMatchers
class VersionComparatorSpec extends FunSpec with ShouldMatchers { class VersionComparatorSpec extends FunSpec with ShouldMatchers {
val vc = new VersionComparator
private val vc = new VersionComparator
private def comp(desc : String, A : String, B : String, result : Int) = {
it("should find that " + A +" " + desc +" " + B) {
vc.compare(A,B) should equal (result)
}
}
private def less(A : String, B : String) =
comp("is less than", A, B, -1)
private def more(A : String, B : String) =
comp("is more than", A, B, 1)
private def same(A : String, B : String) =
comp("equals", A, B, 0)
private def invalid(A : String, B : String) = {
it("should throw IAE while comparing "+A+" and "+B) {
intercept[IllegalArgumentException] {
vc.compare(A,B)
}
}
}
describe("A VersionComparator") { describe("A VersionComparator") {
it("should find that 0.1.2 equals 0.1.2") { same("0.1.2","0.1.2")
vc.compare("0.1.2", "0.1.2") should equal (0) less("0.1.2","0.1.3")
} more("0.1.3","0.1.2")
it("should find that 0.1.2 is less than 0.1.3") { more("0.1.2.3.4", "0.1.2")
vc.compare("0.1.2", "0.1.3") should equal (-1) less("0.1.2", "0.1.2.3.4")
} more("0.1.3", "0.1.2.3.4")
it("should find that 0.1.3 is greater than 0.1.2") { same("0.1.2","0-1-2")
vc.compare("0.1.3", "0.1.2") should equal (1) same("0.1.2","0_1_2")
} same("0.1.2-foo", "0.1.2-bar")
it("should find that 0.1.2.3.4 is greater than 0.1.2") {
vc.compare("0.1.2.3.4", "0.1.2") should equal (1) // this should be the same, no? --zab
} less("0.1.2","0.1.2.0")
it("should find that 0.1.2 is less than 0.1.2.3.4") {
vc.compare("0.1.2", "0.1.2.3.4") should equal (-1) /*********
} I think everything below this line should be invalid --zab.
it("should find that 0.1.3 is greater than 0.1.2.3.4") { *********/
vc.compare("0.1.3", "0.1.2.3.4") should equal (1) same("",".")
} less("-0.1.2", "-0.1.3")
it("should find that 0.1.2 is equal to 0-1-2") { more("0..2", "0.1.2")
vc.compare("0.1.2", "0-1-2") should equal (0) less("0.1.2", "0..2")
} same("asdf","fdsa")
it("should find that 0.1.2 is equal to 0_1_2") { same("---","___")
vc.compare("0.1.2", "0_1_2") should equal (0) same("1.2.3","0001.0002.0003")
} more("as123$Aw4423-234","asdfq45#11--_")
it("should find that 0.1.2-foo is equal to 0.1.2-bar") {
vc.compare("0.1.2-foo", "0.1.2-bar") should equal (0) // non-ascii string
} val byteArray = new Array[Byte](10)
it("should find that -0.1.2 is less than -0.1.3") { byteArray(5) = 1
vc.compare("-0.1.2", "-0.1.3") should equal (-1) byteArray(6) = 10
} val nonAscii = new String(byteArray)
it("should find that 0..2 is greater than 0.1.2") { same(nonAscii,"")
vc.compare("0..2", "0.1.2") should equal (1)
} // huge value, can't fit in a long
it("should find that 0.1.2 is less than 0..2") { val huge = String.valueOf(Long.MaxValue)+"0000.0";
vc.compare("0.1.2", "0..2") should equal (-1) less(huge,"1.2")
}
} }
} }