示例#1
0
 def test_multiple_memoizations(self):
     f = Foobar()
     m1 = f.memoize(f.one())
     m2 = f.memoize(f.two())
     self.assertNodeOutput("$put(v0,$one())", m1)
     self.assertNodeOutput("$put(v0,$two())", m2)
     self.assertNodeOutput("$put(v0,$one())", m1)
     self.assertNodeOutput("$put(v0,$two())", m2)
     self.assertNodeOutput("$foo($put(v0,$one()),$bar($get(v0),$put(v1,$two())),$get(v1))",
                           f.foo(m1, f.bar(m1, m2), m2))
示例#2
0
文件: test_math.py 项目: ycros/fbtf
 def test_mul(self):
     f = Foobar()
     self.assertNodeOutput("$mul($one(),3)", f.one() * 3)
示例#3
0
文件: test_math.py 项目: ycros/fbtf
 def test_add(self):
     f = Foobar()
     self.assertNodeOutput("$add($one(),3)", f.one() + 3)
示例#4
0
 def test_memoization(self):
     f = Foobar()
     memoized = f.memoize(f.expensive())
     self.assertNodeOutput("$put(v0,$expensive())", memoized)
     self.assertNodeOutput("$put(v0,$expensive())", memoized)
     self.assertNodeOutput("$moo($put(v0,$expensive()),$get(v0))", f.moo(memoized, memoized))
示例#5
0
 def test_nested(self):
     f = Foobar()
     self.assertNodeOutput("$foo(2,$bar('blah'),7)", f.foo(2, f.bar('blah'), 7))
示例#6
0
 def test_trailing_underscore(self):
     f = Foobar()
     self.assertNodeOutput("$if('a','b','c')", f.if_('a', 'b', 'c'))
示例#7
0
 def test_string_arg(self):
     f = Foobar()
     self.assertNodeOutput("$len('meep')", f.len("meep"))
示例#8
0
 def test_blank(self):
     f = Foobar()
     self.assertNodeOutput("$len()", f.len())
示例#9
0
 def test_chaining(self):
     f = Foobar()
     self.assertNodeOutput("$left(%path%,2)", f['path'].left(2))
示例#10
0
 def test_chaining2(self):
     f = Foobar()
     self.assertNodeOutput("$right($left(%path%,$len(%path%)),2)",
                           f['path'].left(f['path'].len()).right(2))
示例#11
0
 def test_trailing_underscore(self):
     f = Foobar()
     self.assertNodeOutput("$if('a','b','c')", f.if_('a', 'b', 'c'))
示例#12
0
 def test_keyword_args(self):
     f = Foobar()
     with self.assertRaises(FoobarException):
         f.foo(bar=5)
示例#13
0
 def test_nested(self):
     f = Foobar()
     self.assertNodeOutput("$foo(2,$bar('blah'),7)",
                           f.foo(2, f.bar('blah'), 7))
示例#14
0
 def test_multi_arg(self):
     f = Foobar()
     self.assertNodeOutput("$moo('awesome',3,4)", f.moo('awesome', 3, 4))
示例#15
0
 def test_fn(self):
     self.assertEqualIncludingHash(Foobar().foo(), Foobar().foo())
     self.assertNotEqualIncludingHash(Foobar().foo(), Foobar().bar())
示例#16
0
 def test_different_nodes(self):
     self.assertNotEqualIncludingHash(Foobar.val('a'), Foobar.var('a'))
示例#17
0
 def test_val_num(self):
     self.assertEqualIncludingHash(Foobar.val(1), Foobar.val(1))
     self.assertNotEqualIncludingHash(Foobar.val(1), Foobar.val(2))
示例#18
0
 def test_multi_arg(self):
     f = Foobar()
     self.assertNodeOutput("$moo('awesome',3,4)", f.moo('awesome', 3, 4))
示例#19
0
 def test_val_float(self):
     self.assertEqualIncludingHash(Foobar.val(1.1), Foobar.val(1.1))
     self.assertNotEqualIncludingHash(Foobar.val(1.1), Foobar.val(2.2))
示例#20
0
 def test_keyword_args(self):
     f = Foobar()
     with self.assertRaises(FoobarException):
         f.foo(bar=5)
示例#21
0
 def test_val_string(self):
     self.assertEqualIncludingHash(Foobar.val('hi'), Foobar.val('hi'))
     self.assertNotEqualIncludingHash(Foobar.val('hi'), Foobar.val('ho'))
示例#22
0
 def test_string_arg(self):
     f = Foobar()
     self.assertNodeOutput("$len('meep')", f.len("meep"))
示例#23
0
 def test_memoize(self):
     f = Foobar()
     self.assertEqualIncludingHash(f.memoize(f.foo()), f.memoize(f.foo()))
     self.assertNotEqualIncludingHash(f.memoize(f.foo()), f.memoize(f.bar()))
示例#24
0
 def test_nesting(self):
     f = Foobar()
     m1 = f.memoize(f.hmm())
     m2 = f.memoize(m1.hmm(m1))
     self.assertNodeOutput("$put(v0,$hmm($put(v1,$hmm()),$get(v1)))", m2)
示例#25
0
 def test_id(self):
     self.assertEqualIncludingHash(Foobar.id('hi'), Foobar.id('hi'))
     self.assertNotEqualIncludingHash(Foobar.id('hi'), Foobar.id('ho'))
示例#26
0
from fbtf import output, Foobar

f = Foobar()

path = f['path']

start_with_http = path.left(7).stricmp('http://')
strip_http = path.right(path.len() - 7)

# get rid ef leading http://, then get rid of any port number
domain = strip_http.left(strip_http.strchr('/') - 1)
domain_no_port = domain.left(domain.strchr(':') - 1)

# helpers
domain_no_port_first_dot = domain_no_port.strchr('.')
domain_no_port_last_dot = domain_no_port.strrchr('.')
domain_right_part = domain_no_port.right(domain_no_port.len() - domain_no_port_last_dot)

# TODO: the domain shortening logic is a huge hack, could be better
# only shorten domain if the right most part isn't a TLD (at a guess)
shortened_domain = f.ifequal(domain_right_part.len(), 2,
                             domain_no_port,
                             domain_no_port.right(domain_no_port.len() - domain_no_port_first_dot))

# try to shorten the domain to get rid of subdomains
shortened_if_domain = f.ifequal(domain_no_port_last_dot, domain_no_port_first_dot,
                                domain_no_port,
                                shortened_domain)

# main body
script = f.if_(start_with_http, shortened_if_domain, path)
示例#27
0
 def test_not_node(self):
     with self.assertRaises(FoobarException):
         Foobar.val(1) == 2
示例#28
0
文件: test_math.py 项目: ycros/fbtf
 def test_div(self):
     f = Foobar()
     self.assertNodeOutput("$div($one(),3)", f.one() / 3)
示例#29
0
 def test_same_node(self):
     v = Foobar.val('moo')
     self.assertEqualIncludingHash(v, v)
示例#30
0
文件: test_math.py 项目: ycros/fbtf
 def test_subtract(self):
     f = Foobar()
     self.assertNodeOutput("$sub($one(),3)", f.one() - 3)
示例#31
0
 def test_blank(self):
     f = Foobar()
     self.assertNodeOutput("$len()", f.len())