示例#1
0
 def testStringKey(self):
     p=Parser('foo=42')
     self.assertTrue(p.kvpair())
     result = p.result
     self.assertTrue(isinstance(result, fern.ast.kvpair.KVPair))
     self.assertEqual(result.key, 'foo')
     self.assertEqual(result.value, 42)
示例#2
0
 def testAlone(self):
     p = Parser('42 goop {a=3} [5 4]')
     p.itemstream()
     result = p.result
     self.assertEqual(result[0], 42)
     self.assertEqual(result[1].name, 'goop')
     self.assertEqual(result[2].eval(), {'a':3})
     self.assertEqual(result[3].eval(), [5, 4])
示例#3
0
 def testInRootMap(self):
     p = Parser('''
         -- first comment
         foo = 23 -- 23 means nothing
         -- all done
     ''')
     m = p.parse()
     self.assertEqual(m['foo'], 23)
示例#4
0
文件: testLet.py 项目: andrewf/fern
 def setUp(self):
     p = Parser(
         '''let a=4 b='hey' in
             root_var = [a b]
         end
         
         list = [1 let x=4 in {f = x} end 'arg']
         
         var = let y='herp' in {saying=y} end
     ''')
     self.root = p.parse()
示例#5
0
 def setUp(self):
     p = Parser('''
         f = function()  {urk = 42} end
         person = function(name age) {
             name = name
             age = age
         } end
         oop = f()
         p = person('Joe' 42)
     ''')
     self.root = p.parse()
示例#6
0
class Basics(unittest.TestCase):
    def setUp(self):
        self.p = Parser("foo= 42@'bar' = 'ggg'")
        self.fdg = self.p.parse()
    def testIsMap(self):
        self.assertTrue(isinstance(self.fdg, fern.ast.Map))
    def testKeys(self):
        self.assertEqual(self.fdg['foo'], 42)
        self.assertEqual(self.fdg['bar'], 'ggg')
示例#7
0
 def testKVPairsIf(self):
     p = Parser('''
         var = true
         var2 = 'f'
         if var then
             foo = 3
             bar = 4
         elif var2 then
             foo = 4
             bar = 3
         else
             ggg = 5
         end
     ''')
     m = p.parse()
     self.assertEqual(m.eval(), {'var':True,'var2':'f','foo':3,'bar':4})
     m.set_key('var', False)
     self.assertEqual(m.eval(), {'var':False,'var2':'f','foo':4,'bar':3})
     m.set_key('var2', False)
     self.assertEqual(m.eval(), {'var':False,'var2':False,'ggg':5})
示例#8
0
 def testItemsIf(self):
     p = Parser('''
         var = true
         var2 = true
         list = [
             'first'
             if var then
                 1 'foo' {}
             elif var2 then
                 14 [] var
             else
                 'ack'
             end
             'last'
         ]
     ''')
     m = p.parse()
     self.assertEqual(m['list'], ['first', 1, 'foo', {}, 'last'])
     m.set_key('var', False)
     self.assertEqual(m['list'], ['first', 14, [], False, 'last'])
     m.set_key('var2', False)
     self.assertEqual(m['list'], ['first', 'ack', 'last'])
示例#9
0
 def setUp(self):
     self.p = Parser("foo= 42@'bar' = 'ggg'")
     self.fdg = self.p.parse()
示例#10
0
 def testItemIf(self):
     p = Parser('var = false foo = if var then 13 else 17 end')
     m = p.parse()
     self.assertEqual(m['foo'], 17)
     m.set_key('var', True)
     self.assertEqual(m['foo'], 13)
示例#11
0
 def testFalse(self):
     p=Parser('false')
     p.bool()
     self.assertEqual(p.result, False)
示例#12
0
 def testTrue(self):
     p=Parser('true')
     p.bool()
     self.assertEqual(p.result, True)
示例#13
0
 def testExpression(self):
     p=Parser('true')
     p.expression()
     self.assertEqual(p.result, True)
示例#14
0
 def testAcceptsFileLike(self):
     f = StringIO("foo=17 bar='ughu'")
     p = Parser(f)
     m = p.parse()
     self.assertEqual(m['foo'], 17)
     self.assertEqual(m['bar'], 'ughu')
示例#15
0
 def testStringToString(self):
     p=Parser("foo='bar'")
     self.assertTrue(p.kvpair())
     result = p.result
     self.assertEqual(result.key, 'foo')
     self.assertEqual(result.value, 'bar')
示例#16
0
 def testWithMaps(self):
     p=Parser('a={bar=42} b={foo=a}')
     m = p.parse()
     self.assertEqual(m.eval(), {'a':{'bar':42}, 'b':{'foo':{'bar':42}}})
示例#17
0
 def testBasic(self):
     p=Parser('a=3 b=a')
     m = p.parse()
     self.assertEqual(m['b'], 3)
     m.set_key('a', 5)
     self.assertEqual(m['b'], 5)
示例#18
0
 def testAlone(self):
     p=Parser('foo')
     self.assertTrue(p.nameref())
     self.assertEqual(p.result.name, 'foo')
示例#19
0
 def testParseMap(self):
     p=Parser("{a=42 b={foo='bar'} @'guh' =   [3 4]}")
     self.assertTrue(p.map())
     self.assertEqual({'a':42,'b':{'foo':'bar'}, 'guh':[3, 4]}, p.result.eval())
示例#20
0
 def testParseEmptyMap(self):
     p=Parser('{}')
     self.assertTrue(p.map())
     self.assertEqual({}, p.result.eval())
示例#21
0
 def testParseList(self):
     p=Parser("[1 2 'foo' ['hey' 5] 4]")
     self.assertTrue(p.list())
     result = p.result
     self.assertTrue(isinstance(result, fern.ast.List))
     self.assertEqual(result.eval(), [1, 2, 'foo', ['hey', 5], 4])
示例#22
0
 def testAtKey(self):
     p=Parser("@'foo'=42")
     self.assertTrue(p.kvpair())
     result = p.result
     self.assertEqual(result.key, 'foo')
     self.assertEqual(result.value, 42)
示例#23
0
 def testParseEmptyList(self):
     p=Parser("[]")
     self.assertTrue(p.list())
     self.assertEqual([], p.result.eval())