koi-reference-parser 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,35 +1,35 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
-
3
- class SimpleExpressionTest < Test::Unit::TestCase
4
-
5
- include KoiReferenceParser
6
-
7
- test "should parse expression that contains function call as value" do
8
- tree = Parser.parse('test = blah(1) + 1')
9
- assert_kind_of Assignment, tree.elements.first.elements.last
10
- assert_kind_of Expression, tree.elements.first.elements.last.elements[2]
11
- assert_kind_of AdditiveExpression, tree.elements.first.elements.last.elements[2].elements.first
12
- assert_kind_of FunctionCall, tree.elements.first.elements.last.elements[2].elements.first.elements.first
13
- end
14
-
15
- test "should parse expression that contains sub-expression as value" do
16
- tree = Parser.parse('test = 2 * 3 * 2')
17
- assert_kind_of Assignment, tree.elements.first.elements.last
18
- assert_kind_of Expression, tree.elements.first.elements.last.elements[2]
19
- assert_kind_of MultitiveExpression, tree.elements.first.elements.last.elements[2].elements.first
20
- assert_kind_of IntegerLiteral, tree.elements.first.elements.last.elements[2].elements.first.elements[0]
21
- assert_kind_of MultiplicationOperator, tree.elements.first.elements.last.elements[2].elements.first.elements[1]
22
- assert_kind_of MultitiveExpression, tree.elements.first.elements.last.elements[2].elements.first.elements[2]
23
- end
24
-
25
- test "should parse expression that contains parenthesized sub-expression as value" do
26
- tree = Parser.parse('test = (2 * 3) * 2')
27
- assert_kind_of Assignment, tree.elements.first.elements.last
28
- assert_kind_of Expression, tree.elements.first.elements.last.elements[2]
29
- assert_kind_of MultitiveExpression, tree.elements.first.elements.last.elements[2].elements.first
30
- assert_kind_of Expression, tree.elements.first.elements.last.elements[2].elements.first.elements[0]
31
- assert_kind_of MultiplicationOperator, tree.elements.first.elements.last.elements[2].elements.first.elements[1]
32
- assert_kind_of IntegerLiteral, tree.elements.first.elements.last.elements[2].elements.first.elements[2]
33
- end
34
-
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
+
3
+ class SimpleExpressionTest < Test::Unit::TestCase
4
+
5
+ include KoiReferenceParser
6
+
7
+ test "should parse expression that contains function call as value" do
8
+ tree = Parser.parse('test = blah(1) + 1')
9
+ assert_kind_of Assignment, tree.elements.first.elements.last
10
+ assert_kind_of Expression, tree.elements.first.elements.last.elements[2]
11
+ assert_kind_of AdditiveExpression, tree.elements.first.elements.last.elements[2].elements.first
12
+ assert_kind_of FunctionCall, tree.elements.first.elements.last.elements[2].elements.first.elements.first
13
+ end
14
+
15
+ test "should parse expression that contains sub-expression as value" do
16
+ tree = Parser.parse('test = 2 * 3 * 2')
17
+ assert_kind_of Assignment, tree.elements.first.elements.last
18
+ assert_kind_of Expression, tree.elements.first.elements.last.elements[2]
19
+ assert_kind_of MultitiveExpression, tree.elements.first.elements.last.elements[2].elements.first
20
+ assert_kind_of IntegerLiteral, tree.elements.first.elements.last.elements[2].elements.first.elements[0]
21
+ assert_kind_of MultiplicationOperator, tree.elements.first.elements.last.elements[2].elements.first.elements[1]
22
+ assert_kind_of MultitiveExpression, tree.elements.first.elements.last.elements[2].elements.first.elements[2]
23
+ end
24
+
25
+ test "should parse expression that contains parenthesized sub-expression as value" do
26
+ tree = Parser.parse('test = (2 * 3) * 2')
27
+ assert_kind_of Assignment, tree.elements.first.elements.last
28
+ assert_kind_of Expression, tree.elements.first.elements.last.elements[2]
29
+ assert_kind_of MultitiveExpression, tree.elements.first.elements.last.elements[2].elements.first
30
+ assert_kind_of Expression, tree.elements.first.elements.last.elements[2].elements.first.elements[0]
31
+ assert_kind_of MultiplicationOperator, tree.elements.first.elements.last.elements[2].elements.first.elements[1]
32
+ assert_kind_of IntegerLiteral, tree.elements.first.elements.last.elements[2].elements.first.elements[2]
33
+ end
34
+
35
35
  end
@@ -1,52 +1,52 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
-
3
- class FunctionCallTest < Test::Unit::TestCase
4
-
5
- include KoiReferenceParser
6
-
7
- test "should parse function call with no arguments" do
8
- tree = Parser.parse('test()')
9
- assert_kind_of Block, tree
10
- assert_kind_of Statement, tree.elements.first
11
- assert_kind_of FunctionCall, tree.elements.first.elements.last
12
- assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
13
- end
14
-
15
- test "should parse function call with identifier as argument" do
16
- tree = Parser.parse('test(blah)')
17
- assert_kind_of Block, tree
18
- assert_kind_of Statement, tree.elements.first
19
- assert_kind_of FunctionCall, tree.elements.first.elements.last
20
- assert_kind_of Identifier, tree.elements.first.elements.last.elements[0]
21
- assert_kind_of Expression, tree.elements.first.elements.last.elements[1]
22
- end
23
-
24
- test "should parse function call with multiple arguments" do
25
- tree = Parser.parse('test(blah, blah2)')
26
- assert_kind_of Block, tree
27
- assert_kind_of Statement, tree.elements.first
28
- assert_kind_of FunctionCall, tree.elements.first.elements.last
29
- assert_kind_of Identifier, tree.elements.first.elements.last.elements[0]
30
- assert_kind_of Expression, tree.elements.first.elements.last.elements[1]
31
- assert_kind_of Expression, tree.elements.first.elements.last.elements[2]
32
- end
33
-
34
- test "should parse function call with expression as argument" do
35
- tree = Parser.parse('test(1 * 2)')
36
- assert_kind_of Block, tree
37
- assert_kind_of Statement, tree.elements.first
38
- assert_kind_of FunctionCall, tree.elements.first.elements.last
39
- assert_kind_of Identifier, tree.elements.first.elements.last.elements[0]
40
- assert_kind_of Expression, tree.elements.first.elements.last.elements[1]
41
- end
42
-
43
- test "should parse function call with function call as argument" do
44
- tree = Parser.parse('test( call())')
45
- assert_kind_of Block, tree
46
- assert_kind_of Statement, tree.elements.first
47
- assert_kind_of FunctionCall, tree.elements.first.elements.last
48
- assert_kind_of Identifier, tree.elements.first.elements.last.elements[0]
49
- assert_kind_of Expression, tree.elements.first.elements.last.elements[1]
50
- end
51
-
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
+
3
+ class FunctionCallTest < Test::Unit::TestCase
4
+
5
+ include KoiReferenceParser
6
+
7
+ test "should parse function call with no arguments" do
8
+ tree = Parser.parse('test()')
9
+ assert_kind_of Block, tree
10
+ assert_kind_of Statement, tree.elements.first
11
+ assert_kind_of FunctionCall, tree.elements.first.elements.last
12
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
13
+ end
14
+
15
+ test "should parse function call with identifier as argument" do
16
+ tree = Parser.parse('test(blah)')
17
+ assert_kind_of Block, tree
18
+ assert_kind_of Statement, tree.elements.first
19
+ assert_kind_of FunctionCall, tree.elements.first.elements.last
20
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements[0]
21
+ assert_kind_of Expression, tree.elements.first.elements.last.elements[1]
22
+ end
23
+
24
+ test "should parse function call with multiple arguments" do
25
+ tree = Parser.parse('test(blah, blah2)')
26
+ assert_kind_of Block, tree
27
+ assert_kind_of Statement, tree.elements.first
28
+ assert_kind_of FunctionCall, tree.elements.first.elements.last
29
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements[0]
30
+ assert_kind_of Expression, tree.elements.first.elements.last.elements[1]
31
+ assert_kind_of Expression, tree.elements.first.elements.last.elements[2]
32
+ end
33
+
34
+ test "should parse function call with expression as argument" do
35
+ tree = Parser.parse('test(1 * 2)')
36
+ assert_kind_of Block, tree
37
+ assert_kind_of Statement, tree.elements.first
38
+ assert_kind_of FunctionCall, tree.elements.first.elements.last
39
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements[0]
40
+ assert_kind_of Expression, tree.elements.first.elements.last.elements[1]
41
+ end
42
+
43
+ test "should parse function call with function call as argument" do
44
+ tree = Parser.parse('test( call())')
45
+ assert_kind_of Block, tree
46
+ assert_kind_of Statement, tree.elements.first
47
+ assert_kind_of FunctionCall, tree.elements.first.elements.last
48
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements[0]
49
+ assert_kind_of Expression, tree.elements.first.elements.last.elements[1]
50
+ end
51
+
52
52
  end
@@ -1,19 +1,19 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
-
3
- class FunctionDefinitionTest < Test::Unit::TestCase
4
-
5
- include KoiReferenceParser
6
-
7
- test "should parse function definition including it's statements" do
8
- tree = Parser.parse("test = function(args)\n teest1 = 1\n test2 = 2\nend")
9
- assert_kind_of Block, tree
10
- assert_kind_of Statement, tree.elements.first
11
- assert_kind_of Assignment, tree.elements.first.elements.first
12
- assert_kind_of FunctionDefinition, tree.elements.first.elements.first.elements.last
13
- assert_kind_of Identifier, tree.elements.first.elements.first.elements.last.elements.first
14
- assert_kind_of Block, tree.elements.first.elements.first.elements.last.elements.last
15
- assert_kind_of Statement, tree.elements.first.elements.first.elements.last.elements.last.elements[0]
16
- assert_kind_of Statement, tree.elements.first.elements.first.elements.last.elements.last.elements[1]
17
- end
18
-
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
+
3
+ class FunctionDefinitionTest < Test::Unit::TestCase
4
+
5
+ include KoiReferenceParser
6
+
7
+ test "should parse function definition including it's statements" do
8
+ tree = Parser.parse("test = function(args)\n teest1 = 1\n test2 = 2\nend")
9
+ assert_kind_of Block, tree
10
+ assert_kind_of Statement, tree.elements.first
11
+ assert_kind_of Assignment, tree.elements.first.elements.first
12
+ assert_kind_of FunctionDefinition, tree.elements.first.elements.first.elements.last
13
+ assert_kind_of Identifier, tree.elements.first.elements.first.elements.last.elements.first
14
+ assert_kind_of Block, tree.elements.first.elements.first.elements.last.elements.last
15
+ assert_kind_of Statement, tree.elements.first.elements.first.elements.last.elements.last.elements[0]
16
+ assert_kind_of Statement, tree.elements.first.elements.first.elements.last.elements.last.elements[1]
17
+ end
18
+
19
19
  end
@@ -1,41 +1,41 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
-
3
- class HashAccessorTest < Test::Unit::TestCase
4
-
5
- include KoiReferenceParser
6
-
7
- test "assignment to hash key" do
8
- tree = Parser.parse('test[1] = 1')
9
- assert_kind_of Block, tree
10
- assert_kind_of Statement, tree.elements.first
11
- assert_kind_of HashAssignment, tree.elements.first.elements.first
12
- assert_kind_of Identifier, tree.elements.first.elements.first.elements.first
13
- assert_kind_of HashAccessorList, tree.elements.first.elements.first.elements[1]
14
- assert_kind_of HashAccessor, tree.elements.first.elements.first.elements[1].elements.first
15
- assert_equal 1, tree.elements.first.elements.first.elements[1].elements.length
16
- end
17
-
18
- test "assignment to a chain of hash key" do
19
- tree = Parser.parse('test[1][2][3] = 1')
20
- assert_kind_of Block, tree
21
- assert_kind_of Statement, tree.elements.first
22
- assert_kind_of HashAssignment, tree.elements.first.elements.first
23
- assert_kind_of Identifier, tree.elements.first.elements.first.elements.first
24
- assert_kind_of HashAccessorList, tree.elements.first.elements.first.elements[1]
25
- assert_kind_of HashAccessor, tree.elements.first.elements.first.elements[1].elements.first
26
- assert_equal 3, tree.elements.first.elements.first.elements[1].elements.length
27
- end
28
-
29
- test "assignment of hash key" do
30
- tree = Parser.parse('test = test[1]')
31
- assert_kind_of Block, tree
32
- assert_kind_of Statement, tree.elements.first
33
- assert_kind_of Assignment, tree.elements.first.elements.first
34
- assert_kind_of Identifier, tree.elements.first.elements.first.elements[0]
35
- assert_kind_of Expression, tree.elements.first.elements.first.elements[2]
36
- assert_kind_of HashAccess, tree.elements.first.elements.first.elements[2].elements.first
37
- assert_kind_of Identifier, tree.elements.first.elements.first.elements[2].elements.first.elements[0]
38
- assert_kind_of HashAccessorList, tree.elements.first.elements.first.elements[2].elements.first.elements[1]
39
- end
40
-
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
+
3
+ class HashAccessorTest < Test::Unit::TestCase
4
+
5
+ include KoiReferenceParser
6
+
7
+ test "assignment to hash key" do
8
+ tree = Parser.parse('test[1] = 1')
9
+ assert_kind_of Block, tree
10
+ assert_kind_of Statement, tree.elements.first
11
+ assert_kind_of HashAssignment, tree.elements.first.elements.first
12
+ assert_kind_of Identifier, tree.elements.first.elements.first.elements.first
13
+ assert_kind_of HashAccessorList, tree.elements.first.elements.first.elements[1]
14
+ assert_kind_of HashAccessor, tree.elements.first.elements.first.elements[1].elements.first
15
+ assert_equal 1, tree.elements.first.elements.first.elements[1].elements.length
16
+ end
17
+
18
+ test "assignment to a chain of hash key" do
19
+ tree = Parser.parse('test[1][2][3] = 1')
20
+ assert_kind_of Block, tree
21
+ assert_kind_of Statement, tree.elements.first
22
+ assert_kind_of HashAssignment, tree.elements.first.elements.first
23
+ assert_kind_of Identifier, tree.elements.first.elements.first.elements.first
24
+ assert_kind_of HashAccessorList, tree.elements.first.elements.first.elements[1]
25
+ assert_kind_of HashAccessor, tree.elements.first.elements.first.elements[1].elements.first
26
+ assert_equal 3, tree.elements.first.elements.first.elements[1].elements.length
27
+ end
28
+
29
+ test "assignment of hash key" do
30
+ tree = Parser.parse('test = test[1]')
31
+ assert_kind_of Block, tree
32
+ assert_kind_of Statement, tree.elements.first
33
+ assert_kind_of Assignment, tree.elements.first.elements.first
34
+ assert_kind_of Identifier, tree.elements.first.elements.first.elements[0]
35
+ assert_kind_of Expression, tree.elements.first.elements.first.elements[2]
36
+ assert_kind_of HashAccess, tree.elements.first.elements.first.elements[2].elements.first
37
+ assert_kind_of Identifier, tree.elements.first.elements.first.elements[2].elements.first.elements[0]
38
+ assert_kind_of HashAccessorList, tree.elements.first.elements.first.elements[2].elements.first.elements[1]
39
+ end
40
+
41
41
  end
@@ -1,55 +1,55 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
-
3
- class FunctionCallTest < Test::Unit::TestCase
4
-
5
- include KoiReferenceParser
6
-
7
- test "should parse all lowercase identifier" do
8
- tree = Parser.parse('test = "test"')
9
- assert_kind_of Block, tree
10
- assert_kind_of Statement, tree.elements.first
11
- assert_kind_of Assignment, tree.elements.first.elements.last
12
- assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
13
- end
14
-
15
- test "should parse identifier with trailing numeral" do
16
- tree = Parser.parse('test1 = "test"')
17
- assert_kind_of Block, tree
18
- assert_kind_of Statement, tree.elements.first
19
- assert_kind_of Assignment, tree.elements.first.elements.last
20
- assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
21
- end
22
-
23
- test "should parse identifier with leading capital letter" do
24
- tree = Parser.parse('Test = "test"')
25
- assert_kind_of Block, tree
26
- assert_kind_of Statement, tree.elements.first
27
- assert_kind_of Assignment, tree.elements.first.elements.last
28
- assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
29
- end
30
-
31
- test "should parse identifier that contains an underscore" do
32
- tree = Parser.parse('test_test = "test"')
33
- assert_kind_of Block, tree
34
- assert_kind_of Statement, tree.elements.first
35
- assert_kind_of Assignment, tree.elements.first.elements.last
36
- assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
37
- end
38
-
39
- test "should parse single character identifier" do
40
- tree = Parser.parse('x = "test"')
41
- assert_kind_of Block, tree
42
- assert_kind_of Statement, tree.elements.first
43
- assert_kind_of Assignment, tree.elements.first.elements.last
44
- assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
45
- end
46
-
47
- test "should parse identifier with leading $" do
48
- tree = Parser.parse('$test = "test"')
49
- assert_kind_of Block, tree
50
- assert_kind_of Statement, tree.elements.first
51
- assert_kind_of Assignment, tree.elements.first.elements.last
52
- assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
53
- end
54
-
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
+
3
+ class FunctionCallTest < Test::Unit::TestCase
4
+
5
+ include KoiReferenceParser
6
+
7
+ test "should parse all lowercase identifier" do
8
+ tree = Parser.parse('test = "test"')
9
+ assert_kind_of Block, tree
10
+ assert_kind_of Statement, tree.elements.first
11
+ assert_kind_of Assignment, tree.elements.first.elements.last
12
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
13
+ end
14
+
15
+ test "should parse identifier with trailing numeral" do
16
+ tree = Parser.parse('test1 = "test"')
17
+ assert_kind_of Block, tree
18
+ assert_kind_of Statement, tree.elements.first
19
+ assert_kind_of Assignment, tree.elements.first.elements.last
20
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
21
+ end
22
+
23
+ test "should parse identifier with leading capital letter" do
24
+ tree = Parser.parse('Test = "test"')
25
+ assert_kind_of Block, tree
26
+ assert_kind_of Statement, tree.elements.first
27
+ assert_kind_of Assignment, tree.elements.first.elements.last
28
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
29
+ end
30
+
31
+ test "should parse identifier that contains an underscore" do
32
+ tree = Parser.parse('test_test = "test"')
33
+ assert_kind_of Block, tree
34
+ assert_kind_of Statement, tree.elements.first
35
+ assert_kind_of Assignment, tree.elements.first.elements.last
36
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
37
+ end
38
+
39
+ test "should parse single character identifier" do
40
+ tree = Parser.parse('x = "test"')
41
+ assert_kind_of Block, tree
42
+ assert_kind_of Statement, tree.elements.first
43
+ assert_kind_of Assignment, tree.elements.first.elements.last
44
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
45
+ end
46
+
47
+ test "should parse identifier with leading $" do
48
+ tree = Parser.parse('$test = "test"')
49
+ assert_kind_of Block, tree
50
+ assert_kind_of Statement, tree.elements.first
51
+ assert_kind_of Assignment, tree.elements.first.elements.last
52
+ assert_kind_of Identifier, tree.elements.first.elements.last.elements.first
53
+ end
54
+
55
55
  end
@@ -1,25 +1,25 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
-
3
- class IfTest < Test::Unit::TestCase
4
-
5
- include KoiReferenceParser
6
-
7
- test "should parse if statement" do
8
- tree = Parser.parse("if(1 == 1)\n test = 1\nend")
9
- assert_kind_of Block, tree
10
- assert_kind_of Statement, tree.elements.first
11
- assert_kind_of If, tree.elements.first.elements.first
12
- assert_kind_of Expression, tree.elements.first.elements.first.elements.first
13
- assert_kind_of Block, tree.elements.first.elements.first.elements.last
14
- end
15
-
16
- test "should parse single line if statement" do
17
- tree = Parser.parse("if(1 == 1) test = 1; end")
18
- assert_kind_of Block, tree
19
- assert_kind_of Statement, tree.elements.first
20
- assert_kind_of If, tree.elements.first.elements.first
21
- assert_kind_of Expression, tree.elements.first.elements.first.elements.first
22
- assert_kind_of Block, tree.elements.first.elements.first.elements.last
23
- end
24
-
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper.rb'))
2
+
3
+ class IfTest < Test::Unit::TestCase
4
+
5
+ include KoiReferenceParser
6
+
7
+ test "should parse if statement" do
8
+ tree = Parser.parse("if(1 == 1)\n test = 1\nend")
9
+ assert_kind_of Block, tree
10
+ assert_kind_of Statement, tree.elements.first
11
+ assert_kind_of If, tree.elements.first.elements.first
12
+ assert_kind_of Expression, tree.elements.first.elements.first.elements.first
13
+ assert_kind_of Block, tree.elements.first.elements.first.elements.last
14
+ end
15
+
16
+ test "should parse single line if statement" do
17
+ tree = Parser.parse("if(1 == 1) test = 1; end")
18
+ assert_kind_of Block, tree
19
+ assert_kind_of Statement, tree.elements.first
20
+ assert_kind_of If, tree.elements.first.elements.first
21
+ assert_kind_of Expression, tree.elements.first.elements.first.elements.first
22
+ assert_kind_of Block, tree.elements.first.elements.first.elements.last
23
+ end
24
+
25
25
  end