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)
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])
def testInRootMap(self): p = Parser(''' -- first comment foo = 23 -- 23 means nothing -- all done ''') m = p.parse() self.assertEqual(m['foo'], 23)
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()
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()
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')
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})
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'])
def setUp(self): self.p = Parser("foo= 42@'bar' = 'ggg'") self.fdg = self.p.parse()
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)
def testFalse(self): p=Parser('false') p.bool() self.assertEqual(p.result, False)
def testTrue(self): p=Parser('true') p.bool() self.assertEqual(p.result, True)
def testExpression(self): p=Parser('true') p.expression() self.assertEqual(p.result, True)
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')
def testStringToString(self): p=Parser("foo='bar'") self.assertTrue(p.kvpair()) result = p.result self.assertEqual(result.key, 'foo') self.assertEqual(result.value, 'bar')
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}}})
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)
def testAlone(self): p=Parser('foo') self.assertTrue(p.nameref()) self.assertEqual(p.result.name, 'foo')
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())
def testParseEmptyMap(self): p=Parser('{}') self.assertTrue(p.map()) self.assertEqual({}, p.result.eval())
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])
def testAtKey(self): p=Parser("@'foo'=42") self.assertTrue(p.kvpair()) result = p.result self.assertEqual(result.key, 'foo') self.assertEqual(result.value, 42)
def testParseEmptyList(self): p=Parser("[]") self.assertTrue(p.list()) self.assertEqual([], p.result.eval())