def test_comments_lines_are_ignored(self): self.assertParsesBlock( 'x = "lorem ipsum"\n' '-- comment\n' '-- \n' '-- another comment\n' 'y = "lipsum"', Block(Assignment([Var('x')], [LiteralString('lorem ipsum')]), Assignment([Var('y')], [LiteralString('lipsum')])))
def test_table_with_unnamed_fields(self): self.assertParsesFirstStatement('x = {"lorem ipsum", true}', [ Assignment([Var('x')], [ Table(UnnamedField(LiteralString(value='lorem ipsum')), UnnamedField(Boolean('true'))) ]) ])
def test_table_with_named_fields(self): self.assertParsesFirstStatement( 'x = {field1="lorem ipsum", field2=true}', [ Assignment([Var('x')], [ Table(NamedField('field1', LiteralString('lorem ipsum')), NamedField('field2', Boolean('true'))) ]) ])
def test_method_call_with_arg_string(self): self.assertParsesFirstStatement( 'o:f "string"', [MethodCall(Var('o'), Var('f'), [LiteralString('string')])])
def test_function_call_with_arg_string(self): self.assertParsesFirstStatement( 'f "string"', [FunctionCall(Var('f'), [LiteralString('string')])])
def test_mutilple_string_assignments(self): self.assertParsesBlock( 'x = "lorem ipsum"; y = "lipsum"', Block(Assignment([Var('x')], [LiteralString('lorem ipsum')]), semicolon, Assignment([Var('y')], [LiteralString('lipsum')])))
def test_comments_are_ignored_at_the_end_of_line(self): self.assertParsesFirstStatement( 'x = "lorem ipsum" -- comment', [Assignment([Var('x')], [LiteralString("lorem ipsum")])])
def test_string(self): self.assertParsesFirstStatement( 'x = "lorem ipsum"', [Assignment([Var('x')], [LiteralString("lorem ipsum")])])
def test_print_assignment(self): self.assertPrints(Assignment([Var('x')], [LiteralString('test')]), "x = 'test'")
def test_function_call_chain_with_strings_arguments(self): self.assertParsesFirstStatement('f "a" "b" "c"', [ FunctionCall( FunctionCall(FunctionCall(Var('f'), [LiteralString('a')]), [LiteralString('b')]), [LiteralString('c')]) ])