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,4 @@
1
+ :language: ruby
2
+ :source: ./spec/samples/rubySyntaxParts/repetition/mixConditionalRepetition.rb
3
+ :output: ./spec/language/ruby/global_test/conditionalAndRepetition/mixConditionalRepetition.xml
4
+ :extract: uml
@@ -0,0 +1,57 @@
1
+ require_relative '../../../../spec_helper'
2
+
3
+ RSpec.describe "Mix conditional and repetition in the same code" do
4
+
5
+ before :each do
6
+ @path = "./spec/language/ruby/global_test/conditionalAndRepetition/.kuniri.yml"
7
+ @kuniri = Kuniri::Kuniri.new
8
+ @kuniri.read_configuration_file(@path)
9
+ @kuniri.run_analysis
10
+ parser = Parser::XMLOutputFormat.new(@kuniri.configurationInfo[:output])
11
+ parser.create_all_data(@kuniri.get_parser())
12
+ @output = File.open("./spec/language/ruby/global_test/conditionalAndRepetition/mixConditionalRepetition.xml", "r")
13
+ end
14
+
15
+ RSpec.shared_examples "Multiple verification" do |regex, description|
16
+
17
+ it "Global Function: #{description}" do
18
+ mixElement = nil
19
+ @output.each do |line|
20
+ mixElement = line =~ regex
21
+ break unless mixElement.nil?
22
+ end
23
+ expect(mixElement).not_to be_nil
24
+ end
25
+
26
+ end
27
+
28
+ context "Test repetition and conditional together" do
29
+
30
+ message = "Global Function: for level0 in 8..19"
31
+ regex = /\s+<for\sexpression="level0 in 8\.\.19"\slevel="0"\/?>/
32
+ include_examples "Multiple verification" , regex, message
33
+
34
+ message = "Global Function: if level1 > 10"
35
+ regex = /\s+<if\sexpression="level1 &gt; 10"\slevel="1"\/?>/
36
+ include_examples "Multiple verification" , regex, message
37
+
38
+ message = "Global Function: while level2 do"
39
+ regex = /\s+<while\sexpression="level2"\slevel="2"\/?>/
40
+ include_examples "Multiple verification" , regex, message
41
+
42
+ message = "Global Function: unless level3"
43
+ regex = /\s+<unless\sexpression="level3"\slevel="3"\/?>/
44
+ include_examples "Multiple verification" , regex, message
45
+
46
+ message = "Global Function: until level4 < 20 do"
47
+ regex = /\s+<until\sexpression="level4 &lt; 20"\slevel="4"\/?>/
48
+ include_examples "Multiple verification" , regex, message
49
+
50
+ end
51
+
52
+ after :each do
53
+ @kuniri = nil
54
+ @output = nil
55
+ end
56
+
57
+ end
@@ -0,0 +1,4 @@
1
+ :language: ruby
2
+ :source: ./spec/samples/rubySyntaxParts/fullCode/simpleFullCode.rb
3
+ :output: ./spec/language/ruby/global_test/simpleFullCode.xml
4
+ :extract: uml
@@ -0,0 +1,4 @@
1
+ :language: ruby
2
+ :source: ./spec/samples/rubySyntaxParts/repetition/whileLoopInClass.rb
3
+ :output: ./spec/language/ruby/global_test/repetition/whileLoopInClass.xml
4
+ :extract: uml
@@ -0,0 +1,4 @@
1
+ :language: ruby
2
+ :source: ./spec/samples/rubySyntaxParts/repetition/untilLoopInClass.rb
3
+ :output: ./spec/language/ruby/global_test/repetition/untilInClass.xml
4
+ :extract: uml
@@ -0,0 +1,4 @@
1
+ :language: ruby
2
+ :source: ./spec/samples/rubySyntaxParts/repetition/forLoopInClass.rb
3
+ :output: ./spec/language/ruby/global_test/repetition/forLoopInClass.xml
4
+ :extract: uml
@@ -0,0 +1,4 @@
1
+ :language: ruby
2
+ :source: ./spec/samples/rubySyntaxParts/repetition/veryMixRepetition.rb
3
+ :output: ./spec/language/ruby/global_test/repetition/veryMixRepetition.xml
4
+ :extract: uml
@@ -0,0 +1,4 @@
1
+ :language: ruby
2
+ :source: ./spec/samples/rubySyntaxParts/repetition/veryNestedRepetition.rb
3
+ :output: ./spec/language/ruby/global_test/repetition/veryNestedRepetition.xml
4
+ :extract: uml
@@ -0,0 +1,4 @@
1
+ :language: ruby
2
+ :source: ./spec/samples/rubySyntaxParts/repetition/methodWithMixRepetition.rb
3
+ :output: ./spec/language/ruby/global_test/repetition/methodWithMixRepetition.xml
4
+ :extract: uml
@@ -0,0 +1,4 @@
1
+ :language: ruby
2
+ :source: ./spec/samples/rubySyntaxParts/repetition/constructorWithMixRepetition.rb
3
+ :output: ./spec/language/ruby/global_test/repetition/constructorWithMixRepetition.xml
4
+ :extract: uml
@@ -0,0 +1,41 @@
1
+ require_relative '../../../../spec_helper'
2
+
3
+ RSpec.describe "Complete class integrity" do
4
+
5
+ before :each do
6
+ @path = "./spec/language/ruby/global_test/repetition/.kuniri.yml"
7
+ @kuniri = Kuniri::Kuniri.new
8
+ @kuniri.read_configuration_file(@path)
9
+ @kuniri.run_analysis
10
+ parser = Parser::XMLOutputFormat.new(@kuniri.configurationInfo[:output])
11
+ parser.create_all_data(@kuniri.get_parser())
12
+ target = "./spec/language/ruby/global_test/repetition/forLoopInClass.xml"
13
+ @output = File.open(target, "r")
14
+ end
15
+
16
+ context "Test output integrity" do
17
+
18
+ it "Repetition: verify the opening-closing structure" do
19
+ @stack = []
20
+ @output.each do |line|
21
+ next if line =~ /<\?xml.*/
22
+ next if line =~ /.*\/>/
23
+
24
+ if line =~ /\s*<\/(\w*)>/
25
+ expect(@stack.last).to eq($1)
26
+ @stack.pop
27
+ elsif line =~ /\s*<(\w*)(.*)>/
28
+ @stack.push $1
29
+ end
30
+ end
31
+
32
+ expect(@stack.size).to eq(0)
33
+
34
+ end
35
+
36
+ after :each do
37
+ @kuniri = nil
38
+ @output = nil
39
+ end
40
+
41
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../../../../spec_helper'
2
+
3
+ RSpec.describe "Verify class with while loop" do
4
+
5
+ before :each do
6
+ @path = "./spec/language/ruby/global_test/repetition/.kuniri3.yml"
7
+ @kuniri = Kuniri::Kuniri.new
8
+ @kuniri.read_configuration_file(@path)
9
+ @kuniri.run_analysis
10
+ parser = Parser::XMLOutputFormat.new(@kuniri.configurationInfo[:output])
11
+ parser.create_all_data(@kuniri.get_parser())
12
+ target = "./spec/language/ruby/global_test/repetition/untilInClass.xml"
13
+ @output = File.open(target, "r")
14
+ end
15
+
16
+ RSpec.shared_examples "Class with until" do |regex, description|
17
+
18
+ it "Method: #{description}" do
19
+ repetition = nil
20
+ @output.each do |line|
21
+ repetition = line =~ regex
22
+ break unless repetition.nil?
23
+ end
24
+ expect(repetition).not_to be_nil
25
+ end
26
+
27
+ end
28
+
29
+ context "Test mix repetition" do
30
+
31
+ message = "Method: for level0 in 0..300"
32
+ regex = /\s+<until\sexpression="\$i &gt; \$num" level="0"\/>/
33
+ include_examples "Class with until" , regex, message
34
+
35
+ end
36
+
37
+ after :each do
38
+ @kuniri = nil
39
+ @output = nil
40
+ end
41
+
42
+ end
@@ -0,0 +1,41 @@
1
+ require_relative '../../../../spec_helper'
2
+
3
+ RSpec.describe "Verify class with while loop" do
4
+
5
+ before :each do
6
+ @path = "./spec/language/ruby/global_test/repetition/.kuniri2.yml"
7
+ @kuniri = Kuniri::Kuniri.new
8
+ @kuniri.read_configuration_file(@path)
9
+ @kuniri.run_analysis
10
+ parser = Parser::XMLOutputFormat.new(@kuniri.configurationInfo[:output])
11
+ parser.create_all_data(@kuniri.get_parser())
12
+ target = "./spec/language/ruby/global_test/repetition/whileLoopInClass.xml"
13
+ @output = File.open(target, "r")
14
+ end
15
+
16
+ RSpec.shared_examples "Class with while" do |regex, description|
17
+
18
+ it "Method: #{description}" do
19
+ repetition = nil
20
+ @output.each do |line|
21
+ repetition = line =~ regex
22
+ break unless repetition.nil?
23
+ end
24
+ expect(repetition).not_to be_nil
25
+ end
26
+
27
+ end
28
+
29
+ context "Test mix repetition" do
30
+
31
+ message = "Method: for level0 in 0..300"
32
+ regex = /\s+<while\sexpression="\$i &lt; \$num" level="0"\/>/
33
+ include_examples "Class with while" , regex, message
34
+
35
+ end
36
+
37
+ after :each do
38
+ @kuniri = nil
39
+ @output = nil
40
+ end
41
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../../../../spec_helper'
2
+
3
+ RSpec.describe Kuniri::Kuniri do
4
+
5
+ before :each do
6
+ @path = "./spec/language/ruby/global_test/repetition/.kuniri4.yml"
7
+ @kuniri = Kuniri::Kuniri.new
8
+ @kuniri.read_configuration_file(@path)
9
+ @kuniri.run_analysis
10
+ parser = Parser::XMLOutputFormat.new(@kuniri.configurationInfo[:output])
11
+ parser.create_all_data(@kuniri.get_parser())
12
+ target = "./spec/language/ruby/global_test/repetition/forLoopInClass.xml"
13
+ @output = File.open(target, "r")
14
+ end
15
+
16
+ RSpec.shared_examples "Complete class with repetition" do |regex, description|
17
+
18
+ it "Method: #{description}" do
19
+ repetition = nil
20
+ @output.each do |line|
21
+ repetition = line =~ regex
22
+ break unless repetition.nil?
23
+ end
24
+ expect(repetition).not_to be_nil
25
+ end
26
+
27
+ end
28
+
29
+ context "Validate for loop" do
30
+
31
+ message = "Method: for i in 0..5"
32
+ regex = /\s+<for\sexpression="i in 0\.\.5" level="0"\/>/
33
+ include_examples "Complete class with repetition", regex, message
34
+
35
+ end
36
+
37
+ after :each do
38
+ @kuniri = nil
39
+ @output = nil
40
+ end
41
+
42
+ end
@@ -0,0 +1,57 @@
1
+ require_relative '../../../../spec_helper'
2
+
3
+ RSpec.describe "Verify repetition output" do
4
+
5
+ before :each do
6
+ @path = "./spec/language/ruby/global_test/repetition/.kuniri8.yml"
7
+ @kuniri = Kuniri::Kuniri.new
8
+ @kuniri.read_configuration_file(@path)
9
+ @kuniri.run_analysis
10
+ parser = Parser::XMLOutputFormat.new(@kuniri.configurationInfo[:output])
11
+ parser.create_all_data(@kuniri.get_parser())
12
+ @output = File.open("./spec/language/ruby/global_test/repetition/constructorWithMixRepetition.xml", "r")
13
+ end
14
+
15
+ RSpec.shared_examples "Constructor multiple verification" do |regex, description|
16
+
17
+ it "Constructor: #{description}" do
18
+ repetition = nil
19
+ @output.each do |line|
20
+ repetition = line =~ regex
21
+ break unless repetition.nil?
22
+ end
23
+ expect(repetition).not_to be_nil
24
+ end
25
+
26
+ end
27
+
28
+ context "Test mix repetition" do
29
+
30
+ message = "Constructor: for level0 in 0..5"
31
+ regex = /\s+<for\sexpression="level0 in 0\.\.5"\slevel="0"\/?>/
32
+ include_examples "Constructor multiple verification" , regex, message
33
+
34
+ message = "Constructor: until level0 &gt; 30 do"
35
+ regex = /\s+<until\sexpression="level0 &gt; 30"\slevel="0"\/?>/
36
+ include_examples "Constructor multiple verification" , regex, message
37
+
38
+ message = "Constructor: for level0 in 0..5"
39
+ regex = /\s+<for\sexpression="level0 in 0\.\.5"\slevel="0"\/?>/
40
+ include_examples "Constructor multiple verification" , regex, message
41
+
42
+ message = "Constructor: until level1 &gt; level0 do"
43
+ regex = /\s+<until\sexpression="level1 &gt; 300"\slevel="1"\/?>/
44
+ include_examples "Constructor multiple verification" , regex, message
45
+
46
+ message = "Constructor: for level2 in 0..300"
47
+ regex = /\s+<for\sexpression="level2 in 0\.\.300"\slevel="2"\/?>/
48
+ include_examples "Constructor multiple verification" , regex, message
49
+
50
+ end
51
+
52
+ after :each do
53
+ @kuniri = nil
54
+ @output = nil
55
+ end
56
+
57
+ end
@@ -0,0 +1,59 @@
1
+ require_relative '../../../../spec_helper'
2
+
3
+ RSpec.describe "Verify repetition output" do
4
+
5
+ before :each do
6
+ @path = "./spec/language/ruby/global_test/repetition/.kuniri7.yml"
7
+ @kuniri = Kuniri::Kuniri.new
8
+ @kuniri.read_configuration_file(@path)
9
+ @kuniri.run_analysis
10
+ parser = Parser::XMLOutputFormat.new(@kuniri.configurationInfo[:output])
11
+ parser.create_all_data(@kuniri.get_parser())
12
+ target = "./spec/language/ruby/global_test/repetition/" +
13
+ "methodWithMixRepetition.xml"
14
+ @output = File.open(target, "r")
15
+ end
16
+
17
+ RSpec.shared_examples "Method multiple verification" do |regex, description|
18
+
19
+ it "Method: #{description}" do
20
+ repetition = nil
21
+ @output.each do |line|
22
+ repetition = line =~ regex
23
+ break unless repetition.nil?
24
+ end
25
+ expect(repetition).not_to be_nil
26
+ end
27
+
28
+ end
29
+
30
+ context "Test mix repetition" do
31
+
32
+ message = "Method: for level0 in 0..300"
33
+ regex = /\s+<for\sexpression="level0 in 0\.\.300"\slevel="0"\/?>/
34
+ include_examples "Method multiple verification" , regex, message
35
+
36
+ message = "Method: for level1 in 0..2016"
37
+ regex = /\s+<for\sexpression="level1 in 0..2016"\slevel="1"\/?>/
38
+ include_examples "Method multiple verification" , regex, message
39
+
40
+ message = "Method: until level2 < 400 do"
41
+ regex = /\s+<until\sexpression="level2 &lt; 400"\slevel="2"\/?>/
42
+ include_examples "Method multiple verification" , regex, message
43
+
44
+ message = "Method: until level0 > 100 do"
45
+ regex = /\s+<until\sexpression="level0 &gt; 100"\slevel="0"\/?>/
46
+ include_examples "Method multiple verification" , regex, message
47
+
48
+ message = "Method: for level1 in 2..499"
49
+ regex = /\s+<for\sexpression="level1 in 2\.\.499"\slevel="1"\/?>/
50
+ include_examples "Method multiple verification" , regex, message
51
+
52
+ end
53
+
54
+ after :each do
55
+ @kuniri = nil
56
+ @output = nil
57
+ end
58
+
59
+ end
@@ -0,0 +1,61 @@
1
+ require_relative '../../../../spec_helper'
2
+
3
+ RSpec.describe "Verify repetition output" do
4
+
5
+ before :each do
6
+ @path = "./spec/language/ruby/global_test/repetition/.kuniri5.yml"
7
+ @kuniri = Kuniri::Kuniri.new
8
+ @kuniri.read_configuration_file(@path)
9
+ @kuniri.run_analysis
10
+ parser = Parser::XMLOutputFormat.new(@kuniri.configurationInfo[:output])
11
+ parser.create_all_data(@kuniri.get_parser())
12
+ @output = File.open("./spec/language/ruby/global_test/repetition/veryMixRepetition.xml", "r")
13
+ end
14
+
15
+ RSpec.shared_examples "Mix multiple verification" do |regex, description|
16
+
17
+ it "Global Function: #{description}" do
18
+ repetition = nil
19
+ @output.each do |line|
20
+ repetition = line =~ regex
21
+ break unless repetition.nil?
22
+ end
23
+ expect(repetition).not_to be_nil
24
+ end
25
+
26
+ end
27
+
28
+ context "Test mix repetition" do
29
+
30
+ message = "Global Function: for level0 in 0..5"
31
+ regex = /\s+<for\sexpression="level0 in 0\.\.5"\slevel="0"\/?>/
32
+ include_examples "Mix multiple verification" , regex, message
33
+
34
+ message = "Global Function: until level0 &gt; $num do"
35
+ regex = /\s+<until\sexpression="level0 &gt; \$num"\slevel="0"\/?>/
36
+ include_examples "Mix multiple verification" , regex, message
37
+
38
+ message = "Global Function: while level0 &lt; $num do"
39
+ regex = /\s+<while\sexpression="level0 &lt; \$num"\slevel="0"\/?>/
40
+ include_examples "Mix multiple verification" , regex, message
41
+
42
+ message = "Global Function: for level0 in 0..5"
43
+ regex = /\s+<for\sexpression="level0 in 0..5"\slevel="0"\/?>/
44
+ include_examples "Mix multiple verification" , regex, message
45
+
46
+ message = "Global Function: until level1 &gt; level0 do"
47
+ regex = /\s+<until\sexpression="level1 &gt; level0"\slevel="1"\/?>/
48
+ include_examples "Mix multiple verification" , regex, message
49
+
50
+ message = "Global Function: while level2 &gt; 8 do"
51
+ regex = /\s+<while\sexpression="level2 &gt; 8"\slevel="2"\/?>/
52
+ include_examples "Mix multiple verification" , regex, message
53
+
54
+ end
55
+
56
+ after :each do
57
+ @kuniri = nil
58
+ @output = nil
59
+ end
60
+
61
+ end