blob: e56438358d217c5953e2f85264befe78d0343be7 [file] [log] [blame]
Jeremy Hylton6102e292000-08-31 15:48:10 +00001# Minimal test of the quote function
Marc-André Lemburg36619082001-01-17 19:11:13 +00002from test_support import verify, verbose
Jeremy Hylton6102e292000-08-31 15:48:10 +00003import urllib
4
5chars = 'abcdefghijklmnopqrstuvwxyz'\
6 '\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356' \
7 '\357\360\361\362\363\364\365\366\370\371\372\373\374\375\376\377' \
8 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' \
9 '\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317' \
10 '\320\321\322\323\324\325\326\330\331\332\333\334\335\336'
11
Tim Peterscc583632001-01-19 07:00:08 +000012expected = 'abcdefghijklmnopqrstuvwxyz' \
13 '%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE' \
14 '%EF%F0%F1%F2%F3%F4%F5%F6%F8%F9%FA%FB%FC%FD%FE%FF' \
15 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' \
16 '%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF' \
17 '%D0%D1%D2%D3%D4%D5%D6%D8%D9%DA%DB%DC%DD%DE'
Jeremy Hylton6102e292000-08-31 15:48:10 +000018
19test = urllib.quote(chars)
Tim Peters1a8a53d2001-01-19 06:06:37 +000020verify(test == expected, "urllib.quote problem 1")
Jeremy Hylton7ae51bf2000-09-14 16:59:07 +000021test2 = urllib.unquote(expected)
Marc-André Lemburg36619082001-01-17 19:11:13 +000022verify(test2 == chars)
Jeremy Hylton7ae51bf2000-09-14 16:59:07 +000023
24in1 = "abc/def"
25out1_1 = "abc/def"
Tim Peterscc583632001-01-19 07:00:08 +000026out1_2 = "abc%2Fdef"
Jeremy Hylton7ae51bf2000-09-14 16:59:07 +000027
Tim Peters1a8a53d2001-01-19 06:06:37 +000028verify(urllib.quote(in1) == out1_1, "urllib.quote problem 2")
29verify(urllib.quote(in1, '') == out1_2, "urllib.quote problem 3")
Jeremy Hylton7ae51bf2000-09-14 16:59:07 +000030
31in2 = "abc?def"
Tim Peterscc583632001-01-19 07:00:08 +000032out2_1 = "abc%3Fdef"
Jeremy Hylton7ae51bf2000-09-14 16:59:07 +000033out2_2 = "abc?def"
34
Tim Peters1a8a53d2001-01-19 06:06:37 +000035verify(urllib.quote(in2) == out2_1, "urllib.quote problem 4")
36verify(urllib.quote(in2, '?') == out2_2, "urllib.quote problem 5")
Skip Montanaroe78b92a2001-01-20 20:22:30 +000037
Skip Montanaro080c9972001-01-28 21:12:22 +000038
39
Skip Montanaroe78b92a2001-01-20 20:22:30 +000040in3 = {"p1":"v1","p2":"v2"}
Skip Montanaro080c9972001-01-28 21:12:22 +000041in3list = [("p1", "v1"), ("p2","v2")]
Skip Montanaroe78b92a2001-01-20 20:22:30 +000042exp3_1 = "p2=v2&p1=v1"
43exp3_2 = "p1=v1&p2=v2"
Skip Montanaro080c9972001-01-28 21:12:22 +000044# dict input, only string values
Skip Montanaroe78b92a2001-01-20 20:22:30 +000045act3 = urllib.urlencode(in3)
Skip Montanaro080c9972001-01-28 21:12:22 +000046verify(act3==exp3_1 or act3==exp3_2, "urllib.urlencode problem 1 dict")
47# list input, only string values
48act3list = urllib.urlencode(in3list)
49verify(act3list==exp3_2, "urllib.urlencode problem 1 list")
50
Skip Montanaroe78b92a2001-01-20 20:22:30 +000051
52in4 = {"p1":["v1","v2"]}
Skip Montanaro080c9972001-01-28 21:12:22 +000053in4list = [("p1", ["v1","v2"])]
Skip Montanaroe78b92a2001-01-20 20:22:30 +000054exp4 = "p1=v1&p1=v2"
Skip Montanaro080c9972001-01-28 21:12:22 +000055# dict input, list values, doseq==1
Skip Montanaroe78b92a2001-01-20 20:22:30 +000056act4 = urllib.urlencode(in4,doseq=1)
Skip Montanaro080c9972001-01-28 21:12:22 +000057verify(act4==exp4, "urllib.urlencode problem 2 dict")
58# list input, list values, doseq==1
59act4list = urllib.urlencode(in4,doseq=1)
60verify(act4list==exp4, "urllib.urlencode problem 2 list")
61
Skip Montanaroe78b92a2001-01-20 20:22:30 +000062
63in5 = in4
Skip Montanaro080c9972001-01-28 21:12:22 +000064in5list = in4list
Skip Montanaroe78b92a2001-01-20 20:22:30 +000065exp5 = "p1=%5B%27v1%27%2C+%27v2%27%5D"
Skip Montanaro080c9972001-01-28 21:12:22 +000066exp5list = "p1=%5B%27v1%27%2C+%27v2%27%5D"
67# dict input, list variables, doseq=0
Skip Montanaroe78b92a2001-01-20 20:22:30 +000068act5 = urllib.urlencode(in5)
Skip Montanaro080c9972001-01-28 21:12:22 +000069verify(act5==exp5, "urllib.urlencode problem 3 dict")
70# list input, list variables, doseq=0
71act5list = urllib.urlencode(in5list)
72verify(act5list==exp5list, "urllib.urlencode problem 3 list")
73
74
75in6 = {"p1":"v1","p2":"v2"}
76in6list = [("p1", "v1"), ("p2","v2")]
77exp6_1 = "p2=v2&p1=v1"
78exp6_2 = "p1=v1&p2=v2"
79# dict input, only string values, doseq==1
80act6 = urllib.urlencode(in6,doseq=1)
81verify(act6==exp6_1 or act6==exp6_2, "urllib.urlencode problem 4 dict")
82# list input, only string values
83act6list = urllib.urlencode(in6list,doseq=1)
84verify(act6list==exp6_2, "urllib.urlencode problem 4 list")
85
86
87in7 = "p1=v1&p2=v2"
88try:
89 act7 = urllib.urlencode(in7)
90 print "urllib.urlencode problem 5 string"
91except TypeError:
92 pass
93
94
95import UserDict
96in8 = UserDict.UserDict()
97in8["p1"] = "v1"
98in8["p2"] = ["v1", "v2"]
99exp8_1 = "p1=v1&p2=v1&p2=v2"
100exp8_2 = "p2=v1&p2=v2&p1=v1"
101act8 = urllib.urlencode(in8,doseq=1)
102verify(act8==exp8_1 or act8==exp8_2, "urllib.urlencode problem 6 UserDict")
103
104
105import UserString
106in9 = UserString.UserString("")
107exp9 = ""
108act9 = urllib.urlencode(in9,doseq=1)
109verify(act9==exp9, "urllib.urlencode problem 7 UserString")