test/parser/unit/assignment_test.rb in koi-reference-parser-0.0.1 vs test/parser/unit/assignment_test.rb in koi-reference-parser-0.0.2

- old
+ new

@@ -1,115 +1,115 @@ -require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb')) - -class AssignmentTest < Test::Unit::TestCase - - include KoiReferenceParser - - test "assignment of integer" do - tree = Parser.parse('test = 1') - assert_assigns_expression(IntegerLiteral, '1', tree) - end - - test "assignment of explicitly positive integer" do - tree = Parser.parse('test = +1') - assert_assigns_expression(IntegerLiteral, '+1', tree) - end - - test "assignment of explicitly negative integer" do - tree = Parser.parse('test = -1') - assert_assigns_expression(IntegerLiteral, '-1', tree) - end - - test "assignment of float" do - tree = Parser.parse('test = 99.0009') - assert_assigns_expression(FloatLiteral, '99.0009', tree) - end - - test "assignment of explicitly positive float" do - tree = Parser.parse('test = +99.0009') - assert_assigns_expression(FloatLiteral, '+99.0009', tree) - end - - test "assignment of explicitly negative float" do - tree = Parser.parse('test = -99.0009') - assert_assigns_expression(FloatLiteral, '-99.0009', tree) - end - - test "assignment of string" do - tree = Parser.parse('test = "test_string"') - assert_assigns_expression(StringLiteral, '"test_string"', tree) - end - - test "assignment of string containing escaped quote" do - tree = Parser.parse('test = "test_\"string"') - assert_assigns_expression(StringLiteral, '"test_\"string"', tree) - end - - test "assignment of function definition" do - tree = Parser.parse('test = function(args) blah = 1 end') - assert_assigns(FunctionDefinition, nil, tree) - end - - test "assignment of result of function call" do - tree = Parser.parse('test = function(args)') - assert_assigns_expression(FunctionCall, nil, tree) - end - - test "assignment of nil" do - tree = Parser.parse('test = nil') - assert_assigns_expression(NilLiteral, nil, tree) - end - - test "assignment of boolean true" do - tree = Parser.parse('test = true') - assert_assigns_expression(TrueLiteral, nil, tree) - end - - test "assignment of boolean false" do - tree = Parser.parse('test = false') - assert_assigns_expression(FalseLiteral, nil, tree) - end - - test "assignment of empty hash literal" do - tree = Parser.parse('test = {}') - assert_assigns(HashLiteral, nil, tree) - end - - test "assignment of hash literal with single key-value pair" do - tree = Parser.parse('test = { 1 => 2 }') - assert_assigns(HashLiteral, nil, tree) - end - - test "assignment of hash literal with 2 key-value pairs" do - tree = Parser.parse('test = { 1 => 2, 2 => 2 }') - assert_assigns(HashLiteral, nil, tree) - end - - test "assignment of hash literal with 3 key-value pairs" do - tree = Parser.parse('test = { 1 => 2, 2 => 2, 3 => 2 }') - assert_assigns(HashLiteral, nil, tree) - end - - private - - def assert_assigns(node_type, value, tree) - assert_kind_of Block, tree - assert_kind_of Statement, tree.elements.last - assert_kind_of Assignment, tree.elements.last.elements.last - assert_kind_of Identifier, tree.elements.last.elements.last.elements[0] - assert_kind_of AssignmentOperator, tree.elements.last.elements.last.elements[1] - assert_kind_of node_type, tree.elements.last.elements.last.elements[2] - assert_equal value, tree.elements.last.elements.last.elements[2].text_value unless(value.nil?) - end - - def assert_assigns_expression(node_type, value, tree) - assert_kind_of Block, tree - assert_kind_of Statement, tree.elements.last - assert_kind_of Assignment, tree.elements.last.elements.last - assert_kind_of Identifier, tree.elements.last.elements.last.elements[0] - assert_kind_of AssignmentOperator, tree.elements.last.elements.last.elements[1] - assert_kind_of Expression, tree.elements.last.elements.last.elements[2] - assert_kind_of node_type, tree.elements.last.elements.last.elements[2].elements.first - assert_equal value, tree.elements.last.elements.last.elements[2].elements.first.text_value unless(value.nil?) - end - +require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb')) + +class AssignmentTest < Test::Unit::TestCase + + include KoiReferenceParser + + test "assignment of integer" do + tree = Parser.parse('test = 1') + assert_assigns_expression(IntegerLiteral, '1', tree) + end + + test "assignment of explicitly positive integer" do + tree = Parser.parse('test = +1') + assert_assigns_expression(IntegerLiteral, '+1', tree) + end + + test "assignment of explicitly negative integer" do + tree = Parser.parse('test = -1') + assert_assigns_expression(IntegerLiteral, '-1', tree) + end + + test "assignment of float" do + tree = Parser.parse('test = 99.0009') + assert_assigns_expression(FloatLiteral, '99.0009', tree) + end + + test "assignment of explicitly positive float" do + tree = Parser.parse('test = +99.0009') + assert_assigns_expression(FloatLiteral, '+99.0009', tree) + end + + test "assignment of explicitly negative float" do + tree = Parser.parse('test = -99.0009') + assert_assigns_expression(FloatLiteral, '-99.0009', tree) + end + + test "assignment of string" do + tree = Parser.parse('test = "test_string"') + assert_assigns_expression(StringLiteral, '"test_string"', tree) + end + + test "assignment of string containing escaped quote" do + tree = Parser.parse('test = "test_\"string"') + assert_assigns_expression(StringLiteral, '"test_\"string"', tree) + end + + test "assignment of function definition" do + tree = Parser.parse('test = function(args) blah = 1 end') + assert_assigns(FunctionDefinition, nil, tree) + end + + test "assignment of result of function call" do + tree = Parser.parse('test = function(args)') + assert_assigns_expression(FunctionCall, nil, tree) + end + + test "assignment of nil" do + tree = Parser.parse('test = nil') + assert_assigns_expression(NilLiteral, nil, tree) + end + + test "assignment of boolean true" do + tree = Parser.parse('test = true') + assert_assigns_expression(TrueLiteral, nil, tree) + end + + test "assignment of boolean false" do + tree = Parser.parse('test = false') + assert_assigns_expression(FalseLiteral, nil, tree) + end + + test "assignment of empty hash literal" do + tree = Parser.parse('test = {}') + assert_assigns(HashLiteral, nil, tree) + end + + test "assignment of hash literal with single key-value pair" do + tree = Parser.parse('test = { 1 => 2 }') + assert_assigns(HashLiteral, nil, tree) + end + + test "assignment of hash literal with 2 key-value pairs" do + tree = Parser.parse('test = { 1 => 2, 2 => 2 }') + assert_assigns(HashLiteral, nil, tree) + end + + test "assignment of hash literal with 3 key-value pairs" do + tree = Parser.parse('test = { 1 => 2, 2 => 2, 3 => 2 }') + assert_assigns(HashLiteral, nil, tree) + end + + private + + def assert_assigns(node_type, value, tree) + assert_kind_of Block, tree + assert_kind_of Statement, tree.elements.last + assert_kind_of Assignment, tree.elements.last.elements.last + assert_kind_of Identifier, tree.elements.last.elements.last.elements[0] + assert_kind_of AssignmentOperator, tree.elements.last.elements.last.elements[1] + assert_kind_of node_type, tree.elements.last.elements.last.elements[2] + assert_equal value, tree.elements.last.elements.last.elements[2].text_value unless(value.nil?) + end + + def assert_assigns_expression(node_type, value, tree) + assert_kind_of Block, tree + assert_kind_of Statement, tree.elements.last + assert_kind_of Assignment, tree.elements.last.elements.last + assert_kind_of Identifier, tree.elements.last.elements.last.elements[0] + assert_kind_of AssignmentOperator, tree.elements.last.elements.last.elements[1] + assert_kind_of Expression, tree.elements.last.elements.last.elements[2] + assert_kind_of node_type, tree.elements.last.elements.last.elements[2].elements.first + assert_equal value, tree.elements.last.elements.last.elements[2].elements.first.text_value unless(value.nil?) + end + end \ No newline at end of file