def test_no_http(self):
     url1 = '//ya.ru/abc/def/ind.php?b=3&a=2#Hh_1'
     url2 = 'ya.ru/abc/def/ind.php?b=3&a=2#Hh_1'
     url3 = 'ftp://ya.ru/abc/def/ind.php?b=3&a=2#Hh_1'
     res = ParseUrl(None, 'ya.ru', '/abc/def/ind.php',
                    (('a', '2'), ('b', '3')), 'Hh_1')
     self.assertEqual(parseurl(url1), res)
     self.assertEqual(parseurl(url2), res)
     self.assertRaises(AttributeError, parseurl, url3)
    def test_no_args_url(self):
        url = 'http://ya.ru/abc/def/#Hh_1'
        res = ParseUrl(False, 'ya.ru', '/abc/def/', (), 'Hh_1')
        self.assertEqual(parseurl(url), res)

        # unparse
        self.assertEqual(unparseurl(res), url)
    def test_one_arg_url(self):
        url = 'http://ya.ru/abc/def/?a=2#Hh_1'
        res = ParseUrl(False, 'ya.ru', '/abc/def/', (('a', '2'), ), 'Hh_1')
        self.assertEqual(parseurl(url), res)

        # unparse
        self.assertEqual(unparseurl(res), url)
    def test_full_url(self):
        url = 'http://ya.ru/abc/def/ind.php?b=3&a=2#Hh_1'
        res = ParseUrl(False, 'ya.ru', '/abc/def/ind.php',
                       (('a', '2'), ('b', '3')), 'Hh_1')
        self.assertEqual(parseurl(url), res)

        # unparse
        url = 'http://ya.ru/abc/def/ind.php?a=2&b=3#Hh_1'
        self.assertEqual(unparseurl(res), url)
    def test_no_path_url(self):
        url = 'http://ya.ru/#Hh_1'
        res = ParseUrl(False, 'ya.ru', '/', (), 'Hh_1')
        self.assertEqual(parseurl(url), res)
        self.assertFalse(res.args)

        # unparse
        self.assertEqual(unparseurl(res), url)

        url_unparse = 'http://ya.ru/'
        url = 'http://ya.ru/'
        res = ParseUrl(False, 'ya.ru', '/', (), '')
        self.assertEqual(parseurl(url), res)

        # unparse
        self.assertEqual(unparseurl(res), url_unparse)

        url = 'http://ya.ru'
        res = ParseUrl(False, 'ya.ru', '/', (), '')
        self.assertEqual(parseurl(url), res)

        # unparse
        self.assertEqual(unparseurl(res), url_unparse)
 def test_no_domain(self):
     url = '/abc/def/i.php'
     res = ParseUrl(None, '', '/abc/def/i.php', (), '')
     self.assertEqual(res, parseurl(url))
 def test_replace(self):
     base = 'http://example.com'
     url = '../a/b/c'
     self.assertEqual(parseurl('http://example.com/a/b/c'), join(base, url))