kuniri 0.0.1 → 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.
Files changed (199) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +9 -7
  4. data/COPYING +160 -656
  5. data/Gemfile +4 -3
  6. data/README.md +57 -27
  7. data/Rakefile +3 -1
  8. data/bin/kuniri +50 -26
  9. data/data/aggregation_lang.rb +33 -0
  10. data/data/attribute_lang.rb +14 -87
  11. data/data/class_lang.rb +19 -41
  12. data/data/comment_lang.rb +52 -0
  13. data/data/conditional_lang.rb +14 -41
  14. data/data/constructor_lang.rb +4 -12
  15. data/data/end_block_lang.rb +7 -6
  16. data/data/extern_requirement_lang.rb +10 -17
  17. data/data/function_behavior_lang.rb +17 -66
  18. data/data/global_function_lang.rb +26 -0
  19. data/data/lang_syntax.rb +82 -49
  20. data/data/method_lang.rb +26 -0
  21. data/data/module_namespace_lang.rb +8 -13
  22. data/data/repetition_lang.rb +19 -32
  23. data/data/token_lang.rb +2 -44
  24. data/data/variable_behaviour_lang.rb +43 -0
  25. data/data/variable_global_lang.rb +13 -72
  26. data/kuniri.gemspec +4 -4
  27. data/lib/kuniri/core/configuration/language_available.rb +2 -2
  28. data/lib/kuniri/core/kuniri.rb +32 -24
  29. data/lib/kuniri/core/setting.rb +51 -85
  30. data/lib/kuniri/error/parser_error.rb +9 -0
  31. data/lib/kuniri/language/abstract_container/structured_and_oo/aggregation.rb +29 -0
  32. data/lib/kuniri/language/abstract_container/structured_and_oo/attribute.rb +0 -40
  33. data/lib/kuniri/language/abstract_container/structured_and_oo/global_tokens.rb +20 -0
  34. data/lib/kuniri/language/abstract_container/structured_and_oo/repetition.rb +9 -1
  35. data/lib/kuniri/language/abstract_container/structured_and_oo/variable_global.rb +0 -35
  36. data/lib/kuniri/language/container_data/structured_and_oo/aggregation_data.rb +23 -0
  37. data/lib/kuniri/language/container_data/structured_and_oo/attribute_data.rb +4 -2
  38. data/lib/kuniri/language/container_data/structured_and_oo/basic_structure.rb +24 -0
  39. data/lib/kuniri/language/container_data/structured_and_oo/class_data.rb +13 -19
  40. data/lib/kuniri/language/container_data/structured_and_oo/conditional_data.rb +2 -13
  41. data/lib/kuniri/language/container_data/structured_and_oo/constructor_data.rb +2 -0
  42. data/lib/kuniri/language/container_data/structured_and_oo/extern_requirement_data.rb +11 -6
  43. data/lib/kuniri/language/container_data/structured_and_oo/{file_element.rb → file_element_data.rb} +11 -9
  44. data/lib/kuniri/language/container_data/structured_and_oo/function_abstract.rb +58 -11
  45. data/lib/kuniri/language/container_data/structured_and_oo/function_data.rb +3 -3
  46. data/lib/kuniri/language/container_data/structured_and_oo/manager_basic_structure_data.rb +55 -0
  47. data/lib/kuniri/language/container_data/structured_and_oo/method_data.rb +5 -4
  48. data/lib/kuniri/language/container_data/structured_and_oo/module_namespace_data.rb +3 -1
  49. data/lib/kuniri/language/container_data/structured_and_oo/repetition_data.rb +2 -13
  50. data/lib/kuniri/language/container_data/structured_and_oo/variable_global_data.rb +2 -0
  51. data/lib/kuniri/language/language.rb +37 -11
  52. data/lib/kuniri/language/metadata.rb +29 -0
  53. data/lib/kuniri/language/ruby/aggregation_ruby.rb +37 -0
  54. data/lib/kuniri/language/ruby/attribute_ruby.rb +23 -38
  55. data/lib/kuniri/language/ruby/class_ruby.rb +2 -10
  56. data/lib/kuniri/language/ruby/conditional_ruby.rb +20 -6
  57. data/lib/kuniri/language/ruby/constructor_ruby.rb +5 -7
  58. data/lib/kuniri/language/ruby/end_block_ruby.rb +1 -1
  59. data/lib/kuniri/language/ruby/function_behavior_ruby.rb +1 -9
  60. data/lib/kuniri/language/ruby/global_function_ruby.rb +32 -0
  61. data/lib/kuniri/language/ruby/method_ruby.rb +33 -0
  62. data/lib/kuniri/language/ruby/repetition_ruby.rb +60 -14
  63. data/lib/kuniri/language/ruby/ruby_syntax.rb +76 -49
  64. data/lib/kuniri/parser/output_factory.rb +29 -0
  65. data/lib/kuniri/parser/output_format.rb +134 -0
  66. data/lib/kuniri/parser/parser.rb +3 -7
  67. data/lib/kuniri/parser/xml_builder_engine.rb +94 -0
  68. data/lib/kuniri/parser/xml_output_format.rb +143 -0
  69. data/lib/kuniri/state_machine/OO_structured_fsm/aggregation_state.rb +45 -0
  70. data/lib/kuniri/state_machine/OO_structured_fsm/attribute_state.rb +0 -1
  71. data/lib/kuniri/state_machine/OO_structured_fsm/basic_structure_state.rb +182 -0
  72. data/lib/kuniri/state_machine/OO_structured_fsm/class_state.rb +12 -3
  73. data/lib/kuniri/state_machine/OO_structured_fsm/conditional_state.rb +11 -68
  74. data/lib/kuniri/state_machine/OO_structured_fsm/constructor_state.rb +7 -52
  75. data/lib/kuniri/state_machine/OO_structured_fsm/function_behaviour_state.rb +86 -0
  76. data/lib/kuniri/state_machine/OO_structured_fsm/include_state.rb +2 -3
  77. data/lib/kuniri/state_machine/OO_structured_fsm/method_state.rb +8 -50
  78. data/lib/kuniri/state_machine/OO_structured_fsm/oo_structured_state.rb +6 -1
  79. data/lib/kuniri/state_machine/OO_structured_fsm/repetition_state.rb +10 -59
  80. data/lib/kuniri/state_machine/OO_structured_fsm/token_state_machine.rb +4 -0
  81. data/lib/kuniri/state_machine/OO_structured_fsm/variable_state.rb +0 -1
  82. data/lib/kuniri/version.rb +1 -1
  83. data/other/analyseFile.asta +0 -0
  84. data/spec/core/kuniri_spec.rb +2 -1
  85. data/spec/core/setting_spec.rb +35 -61
  86. data/spec/language/abstract_container/aggregation_spec.rb +13 -0
  87. data/spec/language/abstract_container/extern_requirement_spec.rb +13 -0
  88. data/spec/language/container_data/structured_and_oo/aggregation_data_spec.rb +29 -0
  89. data/spec/language/container_data/structured_and_oo/attribute_data_spec.rb +9 -2
  90. data/spec/language/container_data/structured_and_oo/class_data_spec.rb +1 -46
  91. data/spec/language/container_data/structured_and_oo/constructor_data_spec.rb +32 -2
  92. data/spec/language/container_data/structured_and_oo/extern_requirement_data_spec.rb +31 -7
  93. data/spec/language/container_data/structured_and_oo/{file_element_spec.rb → file_element_data_spec.rb} +21 -5
  94. data/spec/language/container_data/structured_and_oo/function_abstract_spec.rb +213 -0
  95. data/spec/language/container_data/structured_and_oo/function_data_spec.rb +31 -2
  96. data/spec/language/container_data/structured_and_oo/manager_basic_structure_data_spec.rb +150 -0
  97. data/spec/language/container_data/structured_and_oo/method_data_spec.rb +80 -0
  98. data/spec/language/container_data/structured_and_oo/module_namespace_spec.rb +7 -1
  99. data/spec/language/container_data/structured_and_oo/variable_global_data_spec.rb +9 -0
  100. data/spec/language/language_factory_spec.rb +1 -1
  101. data/spec/language/language_spec.rb +46 -9
  102. data/spec/language/ruby/aggregation_ruby_spec.rb +80 -0
  103. data/spec/language/ruby/class_ruby_spec.rb +66 -6
  104. data/spec/language/ruby/constructor_ruby_spec.rb +1 -1
  105. data/spec/language/ruby/end_block_ruby_spec.rb +11 -0
  106. data/spec/language/ruby/extern_requirement_ruby_spec.rb +59 -0
  107. data/spec/language/ruby/function_behavior_ruby_spec.rb +54 -2
  108. data/spec/language/ruby/global_test/.kuniri.yml +4 -0
  109. data/spec/language/ruby/global_test/complete_class_ruby_spec.rb +161 -0
  110. data/spec/language/ruby/global_test/conditional/.kuniri.yml +4 -0
  111. data/spec/language/ruby/global_test/conditional/.kuniri1.yml +4 -0
  112. data/spec/language/ruby/global_test/conditional/.kuniri2.yml +4 -0
  113. data/spec/language/ruby/global_test/conditional/.kuniri3.yml +4 -0
  114. data/spec/language/ruby/global_test/conditional/.kuniri4.yml +4 -0
  115. data/spec/language/ruby/global_test/conditional/.kuniri5.yml +4 -0
  116. data/spec/language/ruby/global_test/conditional/.kuniri6.yml +4 -0
  117. data/spec/language/ruby/global_test/conditional/a_lot_of_conditionals_spec.rb +92 -0
  118. data/spec/language/ruby/global_test/conditional/constructor_very_mix_conditional_spec.rb +105 -0
  119. data/spec/language/ruby/global_test/conditional/function_with_conditional_spec.rb +94 -0
  120. data/spec/language/ruby/global_test/conditional/function_with_nested_conditional_spec.rb +56 -0
  121. data/spec/language/ruby/global_test/conditional/method_very_mix_conditional_spec.rb +109 -0
  122. data/spec/language/ruby/global_test/conditional/very_deep_conditional_structure_spec.rb +61 -0
  123. data/spec/language/ruby/global_test/conditional/very_mix_conditional_spec.rb +105 -0
  124. data/spec/language/ruby/global_test/conditionalAndRepetition/.kuniri.yml +4 -0
  125. data/spec/language/ruby/global_test/conditionalAndRepetition/mix_conditional_repetition_spec.rb +57 -0
  126. data/spec/language/ruby/global_test/repetition/.kuniri.yml +4 -0
  127. data/spec/language/ruby/global_test/repetition/.kuniri2.yml +4 -0
  128. data/spec/language/ruby/global_test/repetition/.kuniri3.yml +4 -0
  129. data/spec/language/ruby/global_test/repetition/.kuniri4.yml +4 -0
  130. data/spec/language/ruby/global_test/repetition/.kuniri5.yml +4 -0
  131. data/spec/language/ruby/global_test/repetition/.kuniri6.yml +4 -0
  132. data/spec/language/ruby/global_test/repetition/.kuniri7.yml +4 -0
  133. data/spec/language/ruby/global_test/repetition/.kuniri8.yml +4 -0
  134. data/spec/language/ruby/global_test/repetition/complete_class_integrity.rb +41 -0
  135. data/spec/language/ruby/global_test/repetition/complete_class_until_loop_spec.rb +42 -0
  136. data/spec/language/ruby/global_test/repetition/complete_class_while_loop_spec.rb +41 -0
  137. data/spec/language/ruby/global_test/repetition/complete_class_with_repetition_spec.rb +42 -0
  138. data/spec/language/ruby/global_test/repetition/constructor_with_mix_repetition_spec.rb +57 -0
  139. data/spec/language/ruby/global_test/repetition/method_with_mix_repetition_spec.rb +59 -0
  140. data/spec/language/ruby/global_test/repetition/very_mix_repetition_spec.rb +61 -0
  141. data/spec/language/ruby/global_test/repetition/very_nested_repetition_spec.rb +65 -0
  142. data/spec/language/ruby/method_ruby_spec.rb +52 -0
  143. data/spec/language/ruby/repetition_ruby_spec.rb +175 -8
  144. data/spec/language/ruby/ruby_syntax_spec.rb +213 -84
  145. data/spec/parser/output_factory_spec.rb +32 -0
  146. data/spec/parser/output_format_spec.rb +83 -0
  147. data/spec/parser/parser_spec.rb +7 -0
  148. data/spec/parser/xmlSchemaValidate/.kuniri1.yml +3 -0
  149. data/spec/parser/xmlSchemaValidate/.kuniri2.yml +3 -0
  150. data/spec/parser/xmlSchemaValidate/.kuniri3.yml +3 -0
  151. data/spec/parser/xmlSchemaValidate/class_data.xsd +99 -0
  152. data/spec/parser/xmlSchemaValidate/fullCodeTwo.xsd +119 -0
  153. data/spec/parser/xmlSchemaValidate/fullCodeWithComments.xsd +146 -0
  154. data/spec/parser/xmlSchemaValidate/simpleFunction.xsd +25 -0
  155. data/spec/parser/xmlSchemaValidate/validate_xml_spec.rb +52 -0
  156. data/spec/parser/xml_builder_engine_spec.rb +258 -0
  157. data/spec/parser/xml_output_format_spec.rb +274 -0
  158. data/spec/samples/rubySyntaxParts/aggregation/classAggregation.rb +37 -0
  159. data/spec/samples/rubySyntaxParts/aggregation/constructorAggregation.rb +36 -0
  160. data/spec/samples/rubySyntaxParts/aggregation/methodAggregation.rb +36 -0
  161. data/spec/samples/rubySyntaxParts/aggregation/multipleAggregation.rb +59 -0
  162. data/spec/samples/rubySyntaxParts/comment/simple_multiple_line_comment_class.rb +7 -0
  163. data/spec/samples/rubySyntaxParts/comment/simple_single_line_comment_class.rb +2 -1
  164. data/spec/samples/rubySyntaxParts/conditionalStatment/aLotOfConditionals.rb +42 -0
  165. data/spec/samples/rubySyntaxParts/conditionalStatment/commonCasesOfConditionals.rb +47 -0
  166. data/spec/samples/rubySyntaxParts/conditionalStatment/constructorConditional.rb +1 -1
  167. data/spec/samples/rubySyntaxParts/conditionalStatment/constructorMixConditional.rb +41 -0
  168. data/spec/samples/rubySyntaxParts/conditionalStatment/methodMixConditional.rb +41 -0
  169. data/spec/samples/rubySyntaxParts/conditionalStatment/mixConditionalWithRepetition.rb +20 -0
  170. data/spec/samples/rubySyntaxParts/conditionalStatment/nestedConditional.rb +61 -0
  171. data/spec/samples/rubySyntaxParts/conditionalStatment/veryDeepConditionalStructure.rb +48 -0
  172. data/spec/samples/rubySyntaxParts/conditionalStatment/veryMixConditional.rb +37 -0
  173. data/spec/samples/rubySyntaxParts/fullCode/fullCodeTwo.rb +56 -0
  174. data/spec/samples/rubySyntaxParts/fullCode/fullCodeWithComments.rb +64 -0
  175. data/spec/samples/rubySyntaxParts/fullCode/simpleFullCode.rb +9 -1
  176. data/spec/samples/rubySyntaxParts/method/simpleMethod.rb +2 -0
  177. data/spec/samples/rubySyntaxParts/repetition/beginWithWhileLoopInClass.rb +10 -0
  178. data/spec/samples/rubySyntaxParts/repetition/constructorWithMixRepetition.rb +22 -0
  179. data/spec/samples/rubySyntaxParts/repetition/forLoopInClass.rb +7 -0
  180. data/spec/samples/rubySyntaxParts/repetition/methodWithMixRepetition.rb +19 -0
  181. data/spec/samples/rubySyntaxParts/repetition/mixConditionalRepetition.rb +17 -0
  182. data/spec/samples/rubySyntaxParts/repetition/untilLoopInClass.rb +16 -0
  183. data/spec/samples/rubySyntaxParts/repetition/veryMixRepetition.rb +28 -0
  184. data/spec/samples/rubySyntaxParts/repetition/veryNestedRepetition.rb +17 -0
  185. data/spec/samples/rubySyntaxParts/repetition/whileLoopInClass.rb +12 -0
  186. data/spec/state_machine/OO_structured_fsm/aggregation_state_spec.rb +67 -0
  187. data/spec/state_machine/OO_structured_fsm/class_state_spec.rb +15 -0
  188. data/spec/state_machine/OO_structured_fsm/conditional_state_spec.rb +64 -0
  189. data/spec/state_machine/OO_structured_fsm/include_state_spec.rb +3 -3
  190. data/spec/state_machine/OO_structured_fsm/method_state_spec.rb +18 -0
  191. data/spec/state_machine/OO_structured_fsm/repetition_state_spec.rb +27 -0
  192. metadata +195 -28
  193. data/lib/kuniri/core/configuration/monitor_available.rb +0 -13
  194. data/lib/kuniri/language/abstract_container/structured_and_oo/constructor.rb +0 -52
  195. data/lib/kuniri/parser/parser_xml.rb +0 -128
  196. data/spec/language/abstract_container/constructor_spec.rb +0 -13
  197. data/spec/util/html_logger_spec.rb +0 -31
  198. data/spec/util/logger_spec.rb +0 -20
  199. data/spec/util/txt_logger_spec.rb +0 -31
@@ -0,0 +1,150 @@
1
+ require_relative '../../../spec_helper'
2
+
3
+ RSpec.describe Languages::ManagerBasicStructureData do
4
+
5
+ before :each do
6
+ @manager = Languages::ManagerBasicStructureData.new
7
+ end
8
+
9
+ context "Simple conditionals" do
10
+ it "Add simple if." do
11
+ conditional = Languages::ConditionalData.new
12
+ conditional.type = Languages::IF_LABEL
13
+
14
+ @manager.add_conditional(conditional)
15
+ expect(@manager.basicStructure[0]).to eq(conditional)
16
+ end
17
+
18
+ it "Add simple if and elsif." do
19
+ conditional = Languages::ConditionalData.new
20
+ conditional.type = Languages::IF_LABEL
21
+ elsifConditional = Languages::ConditionalData.new
22
+ elsifConditional.type = Languages::ELSIF_LABEL
23
+
24
+ @manager.add_conditional(conditional)
25
+ @manager.add_conditional(elsifConditional)
26
+
27
+ expect(@manager.basicStructure[0].type).to eq(Languages::IF_LABEL)
28
+ expect(@manager.basicStructure[1].type).to eq(Languages::ELSIF_LABEL)
29
+ end
30
+
31
+ it "Add a sequence of if, elsif and finish with else." do
32
+ conditional1 = Languages::ConditionalData.new
33
+ conditional1.type = Languages::IF_LABEL
34
+ elsifConditional1 = Languages::ConditionalData.new
35
+ elsifConditional1.type = Languages::ELSIF_LABEL
36
+ elsifConditional2 = Languages::ConditionalData.new
37
+ elsifConditional2.type = Languages::ELSIF_LABEL
38
+ elseConditional3 = Languages::ConditionalData.new
39
+ elseConditional3.type = Languages::ELSE_LABEL
40
+
41
+ @manager.add_conditional(conditional1)
42
+ @manager.add_conditional(elsifConditional1)
43
+ @manager.add_conditional(elsifConditional2)
44
+ @manager.add_conditional(elseConditional3)
45
+
46
+ expect(@manager.basicStructure[0].type).to eq(Languages::IF_LABEL)
47
+ expect(@manager.basicStructure[1].type).to eq(Languages::ELSIF_LABEL)
48
+ expect(@manager.basicStructure[2].type).to eq(Languages::ELSIF_LABEL)
49
+ expect(@manager.basicStructure[3].type).to eq(Languages::ELSE_LABEL)
50
+ end
51
+ end
52
+
53
+ context "Simple repetitions." do
54
+ it "Simple repetition." do
55
+ repetition = Languages::RepetitionData.new
56
+ repetition.type = Languages::WHILE_LABEL
57
+ @manager.add_repetition(repetition)
58
+ expect(@manager.basicStructure[0].type).to eq(Languages::WHILE_LABEL)
59
+ end
60
+ end
61
+
62
+ context "Nested conditionals." do
63
+ it "Basic if nested, level 1." do
64
+ conditional1 = Languages::ConditionalData.new
65
+ conditional1.type = Languages::IF_LABEL
66
+ conditional2 = Languages::ConditionalData.new
67
+ conditional2.type = Languages::IF_LABEL
68
+ conditional3 = Languages::ConditionalData.new
69
+ conditional3.type = Languages::IF_LABEL
70
+
71
+ @manager.add_conditional(conditional1)
72
+ @manager.down_level
73
+ @manager.add_conditional(conditional2)
74
+ @manager.add_conditional(conditional3)
75
+
76
+ expect(@manager.basicStructure[0].level).to eq(0)
77
+ expect(@manager.basicStructure[1].level).to eq(1)
78
+ expect(@manager.basicStructure[2].level).to eq(1)
79
+ end
80
+
81
+ it "Basic nested if with elsif, level 1." do
82
+ conditional1 = Languages::ConditionalData.new
83
+ conditional1.type = Languages::IF_LABEL
84
+ conditional2 = Languages::ConditionalData.new
85
+ conditional2.type = Languages::ELSIF_LABEL
86
+
87
+ conditional3 = Languages::ConditionalData.new
88
+ conditional3.type = Languages::IF_LABEL
89
+ conditional4 = Languages::ConditionalData.new
90
+ conditional4.type = Languages::IF_LABEL
91
+ conditional5 = Languages::ConditionalData.new
92
+ conditional5.type = Languages::IF_LABEL
93
+
94
+ @manager.add_conditional(conditional1)
95
+ @manager.down_level
96
+ @manager.add_conditional(conditional3)
97
+ @manager.add_conditional(conditional4)
98
+ @manager.up_level
99
+ @manager.add_conditional(conditional2)
100
+ @manager.down_level
101
+ @manager.add_conditional(conditional5)
102
+
103
+ expect(@manager.basicStructure[0].level).to eq(0)
104
+ expect(@manager.basicStructure[1].level).to eq(1)
105
+ expect(@manager.basicStructure[2].level).to eq(1)
106
+ expect(@manager.basicStructure[3].level).to eq(0)
107
+ expect(@manager.basicStructure[4].level).to eq(1)
108
+ end
109
+
110
+ end
111
+
112
+ context "Nested repetitions." do
113
+ it "Simple repetition." do
114
+ repetition1 = Languages::RepetitionData.new
115
+ repetition1.type = Languages::WHILE_LABEL
116
+
117
+ repetition2 = Languages::RepetitionData.new
118
+ repetition2.type = Languages::WHILE_LABEL
119
+
120
+ @manager.add_repetition(repetition1)
121
+ @manager.down_level
122
+ @manager.add_repetition(repetition2)
123
+
124
+ expect(@manager.basicStructure[0].level).to eq(0)
125
+ expect(@manager.basicStructure[1].level).to eq(1)
126
+ end
127
+ end
128
+
129
+ context "Nested conditionals and repetitions." do
130
+ it "Simple conditional with repetition." do
131
+ repetition1 = Languages::RepetitionData.new
132
+ repetition1.type = Languages::WHILE_LABEL
133
+
134
+ conditional1 = Languages::ConditionalData.new
135
+ conditional1.type = Languages::IF_LABEL
136
+
137
+ @manager.add_conditional(conditional1)
138
+ @manager.down_level
139
+ @manager.add_repetition(repetition1)
140
+
141
+ expect(@manager.basicStructure[0].level).to eq(0)
142
+ expect(@manager.basicStructure[1].level).to eq(1)
143
+ end
144
+ end
145
+
146
+ after :each do
147
+ @manager = nil
148
+ end
149
+ end
150
+
@@ -0,0 +1,80 @@
1
+ require_relative '../../../spec_helper'
2
+
3
+ RSpec.describe Languages::MethodData do
4
+
5
+ before :each do
6
+ @methodData = Languages::MethodData.new("xpto")
7
+ end
8
+
9
+ context "Module simple behavior." do
10
+ it "Set name" do
11
+ @methodData.name = "Abc"
12
+ expect(@methodData.name).to eq("Abc")
13
+ end
14
+
15
+ it "Does not set name" do
16
+ @methodData = Languages::MethodData.new(nil)
17
+ expect(@methodData.name).to be_nil
18
+ @methodData = Languages::MethodData.new(1)
19
+ expect(@methodData.name).to be_nil
20
+ end
21
+ end
22
+
23
+ context "When method without parameters" do
24
+ it "Method name" do
25
+ @methodData.name = "xpto"
26
+ expect(@methodData.name).to eq("xpto")
27
+ end
28
+ end
29
+
30
+ context "When method has parameter" do
31
+ it "Add 1 attributes." do
32
+ @methodData.add_parameters("value1")
33
+ attributes = @methodData.parameters
34
+ expect(attributes).to match_array(["value1"])
35
+ end
36
+
37
+ it "Add 2 attributes." do
38
+ @methodData.add_parameters("value1")
39
+ @methodData.add_parameters("value2")
40
+ attributes = @methodData.parameters
41
+ expect(attributes).to match_array(["value1", "value2"])
42
+ end
43
+ end
44
+
45
+ context "When have codiditional statements." do
46
+ it "Simple case of conditional statment" do
47
+ condiditonal = Languages::ConditionalData.new
48
+ condiditonal.type = "IF"
49
+ condiditonal.expression = "x > 3"
50
+ @methodData.add_conditional(condiditonal)
51
+ all = @methodData.managerCondAndLoop.basicStructure
52
+ expect(all[0].instance_of?(Languages::ConditionalData)).to eq(true)
53
+ end
54
+ end
55
+
56
+ context "Copy from FunctionAbstract to MethodData" do
57
+ it "Verify copy" do
58
+ lalala = Languages::FunctionAbstract.new("lalala")
59
+ lalala.comments = "abc"
60
+
61
+ condiditonal = Languages::ConditionalData.new
62
+ condiditonal.type = "IF"
63
+ condiditonal.expression = "x > 3"
64
+ lalala.add_conditional(condiditonal)
65
+
66
+ @methodData << lalala
67
+ expect(@methodData.name).to eq("lalala")
68
+ expect(@methodData.comments).to eq("abc")
69
+ expect(@methodData.comments).to eq("abc")
70
+ all = @methodData.managerCondAndLoop.basicStructure
71
+ expect(all[0].instance_of?(Languages::ConditionalData)).to eq(true)
72
+ expect(@methodData.type).to eq("METHOD")
73
+ end
74
+ end
75
+
76
+ after :each do
77
+ @methodData = nil
78
+ end
79
+
80
+ end
@@ -1,6 +1,6 @@
1
1
  require_relative '../../../spec_helper'
2
2
 
3
- RSpec.describe Languages::ModuleNamespace do
3
+ RSpec.describe Languages::ModuleNamespaceData do
4
4
 
5
5
  before :all do
6
6
  @moduleNamespace = Languages::ModuleNamespaceData.new("Simple")
@@ -11,6 +11,12 @@ RSpec.describe Languages::ModuleNamespace do
11
11
  @moduleNamespace.name = "Abc"
12
12
  expect(@moduleNamespace.name).to eq("Abc")
13
13
  end
14
+ it "Does not set name" do
15
+ @moduleNamespace = Languages::ModuleNamespaceData.new(nil)
16
+ expect(@moduleNamespace.name).to be_nil
17
+ @moduleNamespace = Languages::ModuleNamespaceData.new(1)
18
+ expect(@moduleNamespace.name).to be_nil
19
+ end
14
20
  end
15
21
 
16
22
  after :all do
@@ -32,6 +32,15 @@ RSpec.describe Languages::VariableGlobalData do
32
32
  end
33
33
  end
34
34
 
35
+ context "When instantiating" do
36
+ it "Does not set name" do
37
+ @variableData = Languages::VariableGlobalData.new(nil)
38
+ expect(@variableData.name).to be_nil
39
+ @variableData = Languages::VariableGlobalData.new(1)
40
+ expect(@variableData.name).to be_nil
41
+ end
42
+ end
43
+
35
44
  after :all do
36
45
  @variableData = nil
37
46
  end
@@ -6,7 +6,7 @@ RSpec.describe Languages::LanguageFactory do
6
6
  @factory = Languages::LanguageFactory.new
7
7
  end
8
8
 
9
- context "When have supprt to language." do
9
+ context "When have support to language." do
10
10
  it "Ruby support." do
11
11
  expect(@factory.get_language("ruby").is_a?(Languages::RubySyntax))
12
12
  .to be true
@@ -2,7 +2,7 @@ require_relative '../spec_helper'
2
2
 
3
3
  RSpec.describe Languages::Language do
4
4
 
5
- before :all do
5
+ before :each do
6
6
  @abstractLanguage = Languages::Language.new
7
7
  end
8
8
 
@@ -55,19 +55,56 @@ RSpec.describe Languages::Language do
55
55
  end
56
56
  end
57
57
 
58
- context "When try to call get_name" do
59
- it "Try to call get_name" do
60
- expect(@abstractLanguage.get_name).to eq(nil)
58
+ context "Handling nested conditional and repetitions" do
59
+ it "Make it more nested" do
60
+ expect(@abstractLanguage.countNestedCondLoop).to eq(0)
61
+ @abstractLanguage.moreNested
62
+ expect(@abstractLanguage.countNestedCondLoop).to eq(1)
63
+ @abstractLanguage.moreNested
64
+ expect(@abstractLanguage.countNestedCondLoop).to eq(2)
65
+ end
66
+
67
+ it "Make it less nested" do
68
+ expect(@abstractLanguage.countNestedCondLoop).to eq(0)
69
+ @abstractLanguage.moreNested
70
+ @abstractLanguage.moreNested
71
+ @abstractLanguage.moreNested
72
+ expect(@abstractLanguage.countNestedCondLoop).to eq(3)
73
+ @abstractLanguage.lessNested
74
+ expect(@abstractLanguage.countNestedCondLoop).to eq(2)
75
+ @abstractLanguage.lessNested
76
+ expect(@abstractLanguage.countNestedCondLoop).to eq(1)
77
+ end
78
+
79
+ it "Can't have negative nested" do
80
+ @abstractLanguage.lessNested
81
+ @abstractLanguage.lessNested
82
+ @abstractLanguage.lessNested
83
+ @abstractLanguage.lessNested
84
+ expect(@abstractLanguage.countNestedCondLoop).to eq(0)
85
+ end
86
+
87
+ it "Have to be nested" do
88
+ @abstractLanguage.moreNested
89
+ expect(@abstractLanguage.isNested?).to eq(true)
90
+ end
91
+
92
+ it "Not nested" do
93
+ @abstractLanguage.moreNested
94
+ expect(@abstractLanguage.isNested?).to eq(true)
95
+ @abstractLanguage.lessNested
96
+ expect(@abstractLanguage.isNested?).to eq(false)
61
97
  end
62
- end
63
98
 
64
- context "When try to call get_path" do
65
- it "Try to call get_path" do
66
- expect(@abstractLanguage.get_path).to eq(nil)
99
+ it "Reset nested" do
100
+ @abstractLanguage.moreNested
101
+ expect(@abstractLanguage.countNestedCondLoop).to eq(1)
102
+ @abstractLanguage.resetNested
103
+ expect(@abstractLanguage.countNestedCondLoop).to eq(0)
67
104
  end
68
105
  end
69
106
 
70
- after :all do
107
+ after :each do
71
108
  @abstractLanguage = nil
72
109
  end
73
110
 
@@ -0,0 +1,80 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ RSpec.describe Languages::Ruby::AggregationRuby do
4
+
5
+ before :each do
6
+ @rubyAggr = Languages::Ruby::AggregationRuby.new
7
+ @singleResult = "abc"
8
+ end
9
+
10
+ context "When is a single aggregation with @" do
11
+ it "Simple case with @" do
12
+ captured = @rubyAggr.get_aggregation("abc.new\n")
13
+ expect(captured.name).to eq(@singleResult)
14
+ end
15
+
16
+ it "Whitespace before" do
17
+ captured = @rubyAggr.get_aggregation(" abc.new\n")
18
+ expect(captured.name).to eq(@singleResult)
19
+ end
20
+
21
+ it "With whitespace before and after" do
22
+ captured = @rubyAggr.get_aggregation(" abc.new \n")
23
+ expect(captured.name).to eq(@singleResult)
24
+ end
25
+
26
+ it "Whitespace before dot" do
27
+ captured = @rubyAggr.get_aggregation("abc .new\n")
28
+ expect(captured.name).to eq(@singleResult)
29
+ end
30
+
31
+ it "Whitespace after dot" do
32
+ captured = @rubyAggr.get_aggregation("abc. new\n")
33
+ expect(captured.name).to eq(@singleResult)
34
+ end
35
+
36
+ it "Between whitespace" do
37
+ captured = @rubyAggr.get_aggregation("abc . new\n")
38
+ expect(captured.name).to eq(@singleResult)
39
+ end
40
+
41
+ end
42
+
43
+ context "When there is an aggregation with parameters" do
44
+
45
+ it "With a single parameter" do
46
+ captured = @rubyAggr.get_aggregation("abc.new a")
47
+ expect(captured.name).to eq(@singleResult)
48
+ end
49
+
50
+ it "With multiple parameters" do
51
+ captured = @rubyAggr.get_aggregation("abc.new a b c")
52
+ expect(captured.name).to eq(@singleResult)
53
+ end
54
+
55
+ it "With single parameter with parenthesis" do
56
+ captured = @rubyAggr.get_aggregation("abc.new(a)")
57
+ expect(captured.name).to eq(@singleResult)
58
+ end
59
+
60
+ it "With multiple parameter with parenthesis" do
61
+ captured = @rubyAggr.get_aggregation("abc.new(a,b, c)")
62
+ expect(captured.name).to eq(@singleResult)
63
+ end
64
+
65
+ end
66
+
67
+ context "When there is an aggregation with parameters" do
68
+
69
+ it "Method calling with new on it" do
70
+ captured = @rubyAggr.get_aggregation("abc.newton")
71
+ expect(captured).to eq(nil)
72
+ end
73
+ end
74
+
75
+ after :each do
76
+ @rubyAggr = nil
77
+ @singleResult = nil
78
+ end
79
+
80
+ end
@@ -64,35 +64,95 @@ RSpec.describe Languages::Ruby::ClassRuby do
64
64
  end
65
65
 
66
66
  context "When with inheritance" do
67
- it "Simple class inheritance." do
67
+ it "Simple class name w/ inheritance." do
68
68
  classNameCaptured = @classRuby.get_class("class Xpto < Abc").name
69
69
  expect(classNameCaptured).to eq("Xpto")
70
70
  end
71
71
 
72
- it "Class inheritance with whitespace in the beginning." do
72
+ it "Simple class inheritance." do
73
+ classNameCaptured = @classRuby.get_class("class Xpto < Abc").inheritances
74
+ expect(classNameCaptured).to eq([["Abc"]])
75
+ end
76
+
77
+ it "Class name w/ inheritance with whitespace in the beginning." do
73
78
  classNameCaptured = @classRuby.get_class(" class Xpto < Abc").name
74
79
  expect(classNameCaptured).to eq("Xpto")
75
80
  end
76
81
 
77
- it "Class inheritance with whitespace between <." do
82
+ it "Class inheritance with whitespace in the beginning." do
83
+ classNameCaptured = @classRuby.get_class(" class Xpto < Abc")
84
+ .inheritances
85
+ expect(classNameCaptured).to eq([["Abc"]])
86
+ end
87
+
88
+ it "Class name w/ inheritance with whitespace between <." do
78
89
  classNameCaptured = @classRuby.get_class("class Xpto < Abc").name
79
90
  expect(classNameCaptured).to eq("Xpto")
80
91
  end
81
92
 
82
- it "Class inheritance with many whitespace." do
93
+ it "Class inheritance with whitespace between <." do
94
+ classNameCaptured = @classRuby.get_class("class Xpto < Abc")
95
+ .inheritances
96
+ expect(classNameCaptured).to eq([["Abc"]])
97
+ end
98
+
99
+ it "Class name w/ inheritance with many whitespace." do
83
100
  classNameCaptured = @classRuby.get_class(" class Xpto < Abc ").name
84
101
  expect(classNameCaptured).to eq("Xpto")
85
102
  end
86
103
 
87
- it "Class inheritance with many whitespace between <." do
104
+ it "Class inheritance with many whitespace." do
105
+ classNameCaptured = @classRuby.get_class(" class Xpto < Abc ")
106
+ .inheritances
107
+ expect(classNameCaptured).to eq([["Abc"]])
108
+ end
109
+
110
+ it "Class name w/ inheritance with many whitespace between <." do
88
111
  classNameCaptured = @classRuby.get_class("class Xpto < Abc").name
89
112
  expect(classNameCaptured).to eq("Xpto")
90
113
  end
91
114
 
92
- it "Class inheritance with whitespace in the corners." do
115
+ it "Class inheritance with many whitespace between <." do
116
+ classNameCaptured = @classRuby.get_class("class Xpto < Abc")
117
+ .inheritances
118
+ expect(classNameCaptured).to eq([["Abc"]])
119
+ end
120
+
121
+ it "Class name w/ inheritance with whitespace in the corners." do
93
122
  classNameCaptured = @classRuby.get_class(" class Xpto < Abc ").name
94
123
  expect(classNameCaptured).to eq("Xpto")
95
124
  end
125
+
126
+ it "Class inheritance with whitespace in the corners." do
127
+ classNameCaptured = @classRuby.get_class(" class Xpto < Abc ")
128
+ .inheritances
129
+ expect(classNameCaptured).to eq([["Abc"]])
130
+ end
131
+ end
132
+
133
+ context "Get inheritance" do
134
+
135
+ it "Class inheritance normal case" do
136
+ inheritance = @classRuby.get_class("class Xpto < Abc").inheritances[0]
137
+ expect(inheritance).to eq(["Abc"])
138
+ end
139
+
140
+ it "Inheritance with many spaces in the beginning" do
141
+ inheritance = @classRuby.get_class("class Xpto < Abc").inheritances[0]
142
+ expect(inheritance).to eq(["Abc"])
143
+ end
144
+
145
+ it "Inheritance with many spaces in the end" do
146
+ inheritance = @classRuby.get_class("class Xpto < Abc ").inheritances[0]
147
+ expect(inheritance).to eq(["Abc"])
148
+ end
149
+
150
+ it "Inheritance with many spaces in the beginning and in the end" do
151
+ inheritance = @classRuby.get_class("class Xs < Abc ").inheritances[0]
152
+ expect(inheritance).to eq(["Abc"])
153
+
154
+ end
155
+
96
156
  end
97
157
 
98
158
  after :all do