100_Dpkg_Version.t 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # -*- mode: cperl;-*-
  2. use Test::More;
  3. use warnings;
  4. use strict;
  5. # Default cmp '>'
  6. my @versions = ({a => '1.0-1',
  7. b => '2.0-2',
  8. result => -1,
  9. relation => 'lt',
  10. },
  11. {a => '2.2~rc-4',
  12. b => '2.2-1',
  13. result => -1,
  14. relation => 'lt',
  15. },
  16. {a => '2.2-1',
  17. b => '2.2~rc-4',
  18. result => 1,
  19. relation => 'gt',
  20. },
  21. {a => '1.0000-1',
  22. b => '1.0-1',
  23. result => 0,
  24. relation => 'eq',
  25. },
  26. {a => '1.0000-1',
  27. b => '1.0-1',
  28. result => 0,
  29. relation => 'ge',
  30. },
  31. {a => '1',
  32. b => '0:1',
  33. result => 0,
  34. relation => 'eq',
  35. },
  36. {a => '2:2.5',
  37. b => '1:7.5',
  38. result => 1,
  39. relation => 'gt',
  40. },
  41. );
  42. my @test_failure = ({a => '1.0-1',
  43. b => '2.0-2',
  44. relation => 'gt',
  45. },
  46. {a => '2.2~rc-4',
  47. b => '2.2-1',
  48. relation => 'eq',
  49. },
  50. );
  51. plan tests => @versions * 3 + @test_failure * 2 + 1;
  52. sub dpkg_vercmp{
  53. my ($a,$b,$cmp) = @_;
  54. $cmp = 'gt' if not defined $cmp;
  55. return system('dpkg','--compare-versions',$a,$cmp,$b) == 0;
  56. }
  57. use_ok('Dpkg::Version');
  58. for my $version_cmp (@versions) {
  59. ok(Dpkg::Version::vercmp($$version_cmp{a},$$version_cmp{b}) == $$version_cmp{result},
  60. "vercmp: Version $$version_cmp{a} $$version_cmp{relation} $$version_cmp{b} ok");
  61. ok(Dpkg::Version::compare_versions($$version_cmp{a},$$version_cmp{relation},$$version_cmp{b}),
  62. "compare_versions: Version $$version_cmp{a} $$version_cmp{relation} $$version_cmp{b} ok");
  63. ok(dpkg_vercmp($$version_cmp{a},$$version_cmp{b},$$version_cmp{relation}),
  64. "Dpkg concures: Version $$version_cmp{a} $$version_cmp{relation} $$version_cmp{b}");
  65. }
  66. for my $version_cmp (@test_failure) {
  67. ok(!Dpkg::Version::compare_versions($$version_cmp{a},$$version_cmp{relation},$$version_cmp{b}),
  68. "compare_versions: Version $$version_cmp{a} $$version_cmp{relation} $$version_cmp{b} false");
  69. ok(!dpkg_vercmp($$version_cmp{a},$$version_cmp{b},$$version_cmp{relation}),
  70. "Dpkg concures: Version $$version_cmp{a} $$version_cmp{relation} $$version_cmp{b}");
  71. }