900_Dpkg_Version.t 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # -*- mode: cperl;-*-
  2. use Test::More;
  3. use strict;
  4. use warnings;
  5. my @tests = <DATA>;
  6. my @ops = ("<", "<<", "lt",
  7. "<=", "le",
  8. "=", "eq",
  9. ">=", "ge",
  10. ">", ">>", "gt");
  11. plan tests => scalar(@tests) * (scalar(@ops) + 1) + 1;
  12. use_ok('Dpkg::Version', qw(vercmp compare_versions));
  13. my $truth = {
  14. "-1" => {
  15. "<" => 1, "<<" => 1, "lt" => 1,
  16. "<=" => 1, "le" => 1,
  17. "=" => 0, "eq" => 0,
  18. ">=" => 0, "ge" => 0,
  19. ">" => 0, ">>" => 0, "gt" => 0,
  20. },
  21. "0" => {
  22. "<" => 0, "<<" => 0, "lt" => 0,
  23. "<=" => 1, "le" => 1,
  24. "=" => 1, "eq" => 1,
  25. ">=" => 1, "ge" => 1,
  26. ">" => 0, ">>" => 0, "gt" => 0,
  27. },
  28. "1" => {
  29. "<" => 0, "<<" => 0, "lt" => 0,
  30. "<=" => 0, "le" => 0,
  31. "=" => 0, "eq" => 0,
  32. ">=" => 1, "ge" => 1,
  33. ">" => 1, ">>" => 1, "gt" => 1,
  34. },
  35. };
  36. foreach my $case (@tests) {
  37. my ($a, $b, $res) = split " ", $case;
  38. is(vercmp($a, $b), $res, "$a cmp $b => $res");
  39. foreach my $op (@ops) {
  40. if ($truth->{$res}{$op}) {
  41. ok(compare_versions($a, $op, $b), "$a $op $b => true");
  42. } else {
  43. ok(!compare_versions($a, $op, $b), "$a $op $b => false");
  44. }
  45. }
  46. }
  47. __DATA__
  48. 1:foo foo 1
  49. 0:foo foo 0
  50. foo foo 0
  51. foo- foo 0
  52. foo fo 1
  53. foo- foo+ -1
  54. foo~1 foo -1
  55. foo~foo+Bar foo~foo+bar -1
  56. foo~~ foo~ -1
  57. 12345+that-really-is-some-ver-0 12345+that-really-is-some-ver-10 -1
  58. foo-0 foo-01 -1
  59. foo.bar foobar 1
  60. foo.bar foo1bar 1
  61. foo.bar foo0bar 1
  62. 1foo-1 foo-1 -1
  63. foo2.0 foo2 1
  64. foo2.0.0 foo2.10.0 -1
  65. foo2.0 foo2.0.0 -1
  66. foo2.0 foo2.10 -1
  67. foo2.1 foo2.10 -1
  68. 1.09 1.9 0
  69. 1.0.8+nmu1 1.0.8 1
  70. 3.11 3.10+nmu1 1
  71. 0.9j-20080306-4 0.9i-20070324-2 1
  72. 1.2.0~b7-1 1.2.0~b6-1 1
  73. 1.011-1 1.06-2 1
  74. 0.0.9+dfsg1-1 0.0.8+dfsg1-3 1
  75. 4.6.99+svn6582-1 4.6.99+svn6496-1 1
  76. 53 52 1
  77. 0.9.9~pre122-1 0.9.9~pre111-1 1
  78. 2:2.3.2-2+lenny2 2:2.3.2-2 1
  79. 1:3.8.1-1 3.8.GA-1 1
  80. 1.0.1+gpl-1 1.0.1-2 1