uri_test.cc 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #include <config.h>
  2. #include <apt-pkg/strutl.h>
  3. #include <string>
  4. #include "assert.h"
  5. int main() {
  6. // Basic stuff
  7. {
  8. URI U("http://www.debian.org:90/temp/test");
  9. equals("http", U.Access);
  10. equals("", U.User);
  11. equals("", U.Password);
  12. equals(90, U.Port);
  13. equals("www.debian.org", U.Host);
  14. equals("/temp/test", U.Path);
  15. } {
  16. URI U("http://jgg:foo@ualberta.ca/blah");
  17. equals("http", U.Access);
  18. equals("jgg", U.User);
  19. equals("foo", U.Password);
  20. equals(0, U.Port);
  21. equals("ualberta.ca", U.Host);
  22. equals("/blah", U.Path);
  23. } {
  24. URI U("file:/usr/bin/foo");
  25. equals("file", U.Access);
  26. equals("", U.User);
  27. equals("", U.Password);
  28. equals(0, U.Port);
  29. equals("", U.Host);
  30. equals("/usr/bin/foo", U.Path);
  31. } {
  32. URI U("cdrom:Moo Cow Rom:/debian");
  33. equals("cdrom", U.Access);
  34. equals("", U.User);
  35. equals("", U.Password);
  36. equals(0, U.Port);
  37. equals("Moo Cow Rom", U.Host);
  38. equals("/debian", U.Path);
  39. } {
  40. URI U("gzip:./bar/cow");
  41. equals("gzip", U.Access);
  42. equals("", U.User);
  43. equals("", U.Password);
  44. equals(0, U.Port);
  45. equals(".", U.Host);
  46. equals("/bar/cow", U.Path);
  47. } {
  48. URI U("ftp:ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb");
  49. equals("ftp", U.Access);
  50. equals("", U.User);
  51. equals("", U.Password);
  52. equals(0, U.Port);
  53. equals("ftp.fr.debian.org", U.Host);
  54. equals("/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", U.Path);
  55. }
  56. // RFC 2732 stuff
  57. {
  58. URI U("http://[1080::8:800:200C:417A]/foo");
  59. equals("http", U.Access);
  60. equals("", U.User);
  61. equals("", U.Password);
  62. equals(0, U.Port);
  63. equals("1080::8:800:200C:417A", U.Host);
  64. equals("/foo", U.Path);
  65. } {
  66. URI U("http://[::FFFF:129.144.52.38]:80/index.html");
  67. equals("http", U.Access);
  68. equals("", U.User);
  69. equals("", U.Password);
  70. equals(80, U.Port);
  71. equals("::FFFF:129.144.52.38", U.Host);
  72. equals("/index.html", U.Path);
  73. } {
  74. URI U("http://[::FFFF:129.144.52.38:]:80/index.html");
  75. equals("http", U.Access);
  76. equals("", U.User);
  77. equals("", U.Password);
  78. equals(80, U.Port);
  79. equals("::FFFF:129.144.52.38:", U.Host);
  80. equals("/index.html", U.Path);
  81. } {
  82. URI U("http://[::FFFF:129.144.52.38:]/index.html");
  83. equals("http", U.Access);
  84. equals("", U.User);
  85. equals("", U.Password);
  86. equals(0, U.Port);
  87. equals("::FFFF:129.144.52.38:", U.Host);
  88. equals("/index.html", U.Path);
  89. }
  90. /* My Evil Corruption of RFC 2732 to handle CDROM names! Fun for
  91. the whole family! */
  92. {
  93. URI U("cdrom:[The Debian 1.2 disk, 1/2 R1:6]/debian/");
  94. equals("cdrom", U.Access);
  95. equals("", U.User);
  96. equals("", U.Password);
  97. equals(0, U.Port);
  98. equals("The Debian 1.2 disk, 1/2 R1:6", U.Host);
  99. equals("/debian/", U.Path);
  100. } {
  101. URI U("cdrom:Foo Bar Cow/debian/");
  102. equals("cdrom", U.Access);
  103. equals("", U.User);
  104. equals("", U.Password);
  105. equals(0, U.Port);
  106. equals("Foo Bar Cow", U.Host);
  107. equals("/debian/", U.Path);
  108. }
  109. // Percent-encoding.
  110. {
  111. URI U("ftp://foo:b%40r@example.org");
  112. equals("foo", U.User);
  113. equals("b@r", U.Password);
  114. equals("ftp://foo:b%40r@example.org/", (std::string) U);
  115. }
  116. return 0;
  117. }