示例#1
0
 def roundtrip(self, stringed, prefix, *path, **kwargs):
     """
         This abstracted test checks that we have proper round trips for various kinds of URL
     """
     self.assertEqual(stringed, repr(urlambda(stringed)))
     self.assertEqual(stringed, repr(urlambda(prefix, *path, **kwargs)))
     self.assertEqual(urlambda(stringed).path, urlambda(prefix, *path, **kwargs).path)
示例#2
0
    def test_processing(self):
        url = urlambda('http://www.example.com/')
        self.assertEqual(urlambda(url.prefix, *url.path, **url.state), url)
        url.path += ['another']
        self.assertEqual(urlambda(url.prefix, *url.path, **url.state), url)

        url = urlambda(u'http://urquell-fn.appspot.com/lib/echo')
        url.path.append('h')
        self.assertEqual(repr(url), 'http://urquell-fn.appspot.com/lib/echo/h')
示例#3
0
def call_trace(f, *path, **kwargs):
    """
        <p>Execute a function and return all of the debugging information.</p>
    """
    from urquell.invocation import ErrorTrace, execute
    url = urlambda(f, *path, **kwargs)
    return execute(repr(url))
示例#4
0
 def test_query(self):
     self.assertEqual(urlambda('http://www.example.com/').state, {})
     self.assertEqual(urlambda('http://www.example.com/?k=').state, {'k':''})
     self.assertEqual(urlambda('http://www.example.com/?k=v').state, {'k':'v'})
     self.assertEqual(urlambda('http://www.example.com/?k=v&t=34').state, {'k':'v', 't':34})
     self.assertEqual(urlambda('http://www.example.com/?k=&k=v').state, {'k':['', 'v']})
     self.assertEqual(urlambda('http://www.example.com/?k=&v=k&k=v&k=v').state, {'k':['', 'v', 'v'], 'v':'k'})
     self.assertEqual(urlambda('http://www.example.com/?k=&v=k&k=v&k=p').state, {'k':['', 'v', 'p'], 'v':'k'})
示例#5
0
def bind(f, *path, **kwargs):
    """
        <p>Binds an argument list to a function. Optionally, values can also be
        bound to those arguments using the query string. When the argument list
        is left unbound, values can later be applied using functions such as
        lib/call and lib/combinator/K.</p>
    """
    if f and len(path):
        final = urlambda(f)
        for p in path:
            if kwargs.has_key(p):
                final.path.append(kwargs[p])
            else:
                final.path.append(p)
        return repr(final)
    elif f:
        return f
    else:
        return None
示例#6
0
def fn(server, *path, **kw):
    """
        <p>Constructs a function from a server name and a path.</p>
    """
    return repr(urlambda("http://%s/" % server, *path, **kw))
示例#7
0
 def test_prefix(self):
     self.assertEqual(urlambda('http://www.example.com/').prefix, 'http://www.example.com/')
     self.assertEqual(urlambda('http://www.example.com/path').prefix, 'http://www.example.com/')
     self.assertEqual(urlambda('http://www.example.com:456/').prefix, 'http://www.example.com:456/')
示例#8
0
 def test_query_addin(self):
     self.assertEqual(urlambda('http://www.example.com/', k=3).state, {'k':3})
     self.assertEqual(urlambda('http://www.example.com/?k=', k=None, v='s').state, {'k':None, 'v':'s'})
     self.assertEqual(urlambda('http://www.example.com/?k=v', k=4).state, {'k':4})
     self.assertEqual(urlambda('http://www.example.com/?k=v&t=34', x=4, t=[]).state, {'k':'v', 't':[], 'x':4})
示例#9
0
 def test_path_longer(self):
     self.assertEqual(urlambda('http://www.example.com/', 'earlier', 'end').path, ['earlier', 'end'])
     self.assertEqual(urlambda('http://www.example.com/path', 'earlier', 'end').path, ['path', 'earlier', 'end'])
     self.assertEqual(urlambda('http://www.example.com:456//', 'earlier', 'end').path, ['', '', 'earlier', 'end'])
     self.assertEqual(urlambda('http://www.example.com:456//one', 'earlier', 'end').path, ['', 'one', 'earlier', 'end'])
     self.assertEqual(urlambda('http://www.example.com:456//one/', 'earlier', 'end').path, ['', 'one', '', 'earlier', 'end'])
示例#10
0
 def test_path(self):
     self.assertEqual(urlambda('http://www.example.com/').path, [])
     self.assertEqual(urlambda('http://www.example.com/path').path, ['path'])
     self.assertEqual(urlambda('http://www.example.com:456//').path, ['', ''])
     self.assertEqual(urlambda('http://www.example.com:456//one').path, ['', 'one'])
     self.assertEqual(urlambda('http://www.example.com:456//one/').path, ['', 'one', ''])