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,48 @@
1
+ def deepConditionalStructure
2
+
3
+ if conditional0 == "level0"
4
+ if conditional1 == "level1"
5
+ if conditional2 == "level2"
6
+ if conditional3 == "level3"
7
+ if conditional4 == "level4"
8
+ if conditional5 == "level5"
9
+ if conditional6 == "level6"
10
+ if conditional7 == "level7"
11
+ if conditional8 == "level8"
12
+ if conditional9 == "level9"
13
+ if conditional10 == "level10"
14
+ if conditional11 == "level11"
15
+ if conditional12 == "level12"
16
+ if conditional13 == "level13"
17
+ if conditional14 == "level14"
18
+ if conditional15 == "level15"
19
+ if conditional16 == "level16"
20
+ if conditional17 == "level17"
21
+ if conditional18 == "level18"
22
+ if conditional19 == "level19"
23
+ puts "what"
24
+ elsif firstElse == "level19"
25
+ puts "the"
26
+ else
27
+ puts "f@$#@"
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,37 @@
1
+ def veryMixConditionals
2
+ case p
3
+ when 2
4
+ if xpto == "level1"
5
+ puts "ayhh"
6
+ else
7
+ puts "ooooo"
8
+ end
9
+ when 4
10
+ if xpto1 == "level1"
11
+ if xpto2 == "level2"
12
+ if xpto3 == "level3"
13
+ puts "xpto"
14
+ elsif abc == "level3"
15
+ puts "abc"
16
+ else
17
+ puts "llll"
18
+ end
19
+ end
20
+ elsif banana == "level1"
21
+ puts "banana"
22
+ end
23
+ when 7
24
+ unless abc == "level1"
25
+ if xpto == "level2"
26
+ case x
27
+ when 6
28
+ puts "6"
29
+ when 7
30
+ puts "7"
31
+ end
32
+ end
33
+ end
34
+ else
35
+ u = 8
36
+ end
37
+ end
@@ -0,0 +1,56 @@
1
+ @globalVariable
2
+
3
+ class Abc < Array
4
+
5
+ def initialize
6
+
7
+ if (x < 3)
8
+ return x
9
+ end
10
+
11
+ for i in x
12
+ end
13
+
14
+ end
15
+
16
+ def method0
17
+ @attributeInsideMethod
18
+ end
19
+
20
+ def method1
21
+ while condition do
22
+
23
+ end
24
+ end
25
+
26
+ def method2 (x)
27
+ for i in x
28
+ end
29
+ end
30
+
31
+ def method3 (a, b, c)
32
+ if (a==0)
33
+ return b < c
34
+ end
35
+ end
36
+
37
+ def method4 (ab)
38
+ if (k == y)
39
+ return k
40
+ else
41
+ return y
42
+ end
43
+ end
44
+
45
+ def method5
46
+ if (y or k)
47
+ return 3
48
+ end
49
+ while condition do
50
+ puts "abc"
51
+ end
52
+ end
53
+
54
+ @attribute1
55
+
56
+ end
@@ -0,0 +1,64 @@
1
+ @globalVariable
2
+
3
+ # This is a simple test
4
+ # with class comment :)
5
+ class Abc < Array
6
+
7
+ # This is a comment in the constructor
8
+ def initialize
9
+
10
+ if (x < 3)
11
+ return x
12
+ end
13
+
14
+ for i in x
15
+ end
16
+
17
+ end
18
+
19
+ def method0
20
+ @attributeInsideMethod
21
+ end
22
+
23
+ # Niceeeeee... now it is your time :)
24
+ def method1
25
+ while condition do
26
+
27
+ end
28
+ end
29
+
30
+ def method2 (x)
31
+ for i in x
32
+ end
33
+ end
34
+
35
+ def method3 (a, b, c)
36
+ if (a==0)
37
+ return b < c
38
+ end
39
+ end
40
+
41
+ # Method4 :)
42
+ def method4 (ab)
43
+ if (k == y)
44
+ return k
45
+ else
46
+ return y
47
+ end
48
+ end
49
+
50
+ =begin
51
+ Ahhhhh this is other kind of comments! :)
52
+ =end
53
+ def method5
54
+ if (y or k)
55
+ return 3
56
+ end
57
+ while condition do
58
+ puts "abc"
59
+ end
60
+ end
61
+
62
+ @attribute1
63
+
64
+ end
@@ -1,17 +1,25 @@
1
1
  @globalVariable
2
2
 
3
- class Abc
3
+ class Abc < Array
4
4
 
5
5
  def initialize
6
6
  end
7
7
 
8
8
  def method1
9
+ while condition do
10
+
11
+ end
9
12
  end
10
13
 
11
14
  def method2 (x)
15
+ for i in x
16
+ end
12
17
  end
13
18
 
14
19
  def method3 (a, b, c)
20
+ if (a==0)
21
+ return b < c
22
+ end
15
23
  end
16
24
 
17
25
  @attribute1
@@ -10,4 +10,6 @@ class Simple1
10
10
  def method3 (param)
11
11
  end
12
12
 
13
+ def method4 (a) end; def method5 () end;
14
+
13
15
  end
@@ -0,0 +1,10 @@
1
+ class Xpto
2
+ def abc
3
+ $i = 0
4
+ $num = 5
5
+ begin
6
+ puts("Inside the loop i = #$i" )
7
+ $i +=1
8
+ end while $i < $num
9
+ end
10
+ end
@@ -0,0 +1,22 @@
1
+ class ConstructorWithMixRepetition
2
+
3
+ def initialize
4
+ for level0 in 0..5
5
+ i += 1
6
+ end
7
+
8
+ until level0 > 30 do
9
+ i += 20
10
+ end
11
+
12
+ for level0 in 0..5
13
+ until level1 > 300 do
14
+ for level2 in 0..300 do
15
+ i += 200
16
+ end
17
+ end
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,7 @@
1
+ class Xpto
2
+ def abc
3
+ for i in 0..5
4
+ puts "Value of local variable is #{i}"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ class MethodWithMixRepetition
2
+
3
+ def methodWithMixRepetition
4
+ for level0 in 0..300
5
+ for level1 in 0..2016
6
+ until level2 < 400 do
7
+ level2 -= 1
8
+ end
9
+ end
10
+ end
11
+
12
+ until level0 > 100 do
13
+ for level1 in 2..499
14
+ i += 200
15
+ end
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,17 @@
1
+ def mixCoditionalAndRepetition
2
+
3
+ for level0 in 8..19 do
4
+ if level1 > 10
5
+ x = 20
6
+ while level2 do
7
+ k = 222
8
+ unless level3
9
+ until level4 < 20 do
10
+ puts "this is the end"
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ end
@@ -0,0 +1,16 @@
1
+ =begin
2
+ Executes code while conditional is false. An until statement's conditional is
3
+ separated from code by the reserved word do, a newline, or a semicolon.
4
+ ref: http://www.tutorialspoint.com/ruby/ruby_loops.htm
5
+ =end
6
+ class Xpto
7
+ def abc
8
+ $i = 0
9
+ $num = 5
10
+
11
+ until $i > $num do
12
+ puts("Inside the loop i = #$i" )
13
+ $i +=1;
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,28 @@
1
+ def veryMixConditional
2
+
3
+ level0 = 0
4
+
5
+ for level0 in 0..5
6
+ puts "value #{i}"
7
+ end
8
+
9
+ until level0 > $num do
10
+ puts "something"
11
+ end
12
+
13
+ while level0 < $num do
14
+ i += 1
15
+ end
16
+
17
+ for level0 in 0..5
18
+ i += 10
19
+ until level1 > level0 do
20
+ i += level0
21
+ while level2 > 8 do
22
+ i += 33
23
+ end
24
+ end
25
+ end
26
+
27
+ end
28
+
@@ -0,0 +1,17 @@
1
+ def abc
2
+ for level0 in 0..5
3
+ for level1 in 0..6
4
+ for level2 in 0..7
5
+ for level3 in 0..8
6
+ for level4 in 0..9
7
+ for level5 in 0..10
8
+ for level6 in 0..11
9
+ i += 1
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+
2
+ class Xpto
3
+ def abc
4
+ $i = 0
5
+ $num = 5
6
+
7
+ while $i < $num do
8
+ puts("Inside the loop i = #$i" )
9
+ $i +=1
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,67 @@
1
+ require_relative '../../spec_helper.rb'
2
+
3
+ RSpec.describe StateMachine::OOStructuredFSM::AggregationState do
4
+
5
+ before :each do
6
+ @languageState = Languages::RubySyntax.new
7
+ end
8
+
9
+ context "#Correct flow." do
10
+ it "Aggregation state from class." do
11
+ @languageState.class_capture
12
+ @languageState.aggregation_capture
13
+ expect(@languageState.state)
14
+ .to be_instance_of(StateMachine::OOStructuredFSM::AggregationState)
15
+ end
16
+
17
+ it "Going back to class." do
18
+ @languageState.class_capture
19
+ @languageState.aggregation_capture
20
+ expect(@languageState.state)
21
+ .to be_instance_of(StateMachine::OOStructuredFSM::AggregationState)
22
+ @languageState.class_capture
23
+ expect(@languageState.state)
24
+ .to be_instance_of(StateMachine::OOStructuredFSM::ClassState)
25
+ end
26
+
27
+ it "Aggregation state from method." do
28
+ @languageState.class_capture
29
+ @languageState.method_capture
30
+ @languageState.aggregation_capture
31
+ expect(@languageState.state)
32
+ .to be_instance_of(StateMachine::OOStructuredFSM::AggregationState)
33
+ @languageState.class_capture
34
+ expect(@languageState.state)
35
+ .to be_instance_of(StateMachine::OOStructuredFSM::MethodState)
36
+ end
37
+
38
+ it "Aggregation state from constructor." do
39
+ @languageState.class_capture
40
+ @languageState.constructor_capture
41
+ @languageState.aggregation_capture
42
+ expect(@languageState.state)
43
+ .to be_instance_of(StateMachine::OOStructuredFSM::AggregationState)
44
+ @languageState.class_capture
45
+ expect(@languageState.state)
46
+ .to be_instance_of(StateMachine::OOStructuredFSM::ConstructorState)
47
+ end
48
+
49
+ end
50
+
51
+ context "#Uncorrect flow." do
52
+ it "From aggregation state, try go to invalid state." do
53
+ @languageState.class_capture
54
+ @languageState.aggregation_capture
55
+ expect{@languageState.method_capture}
56
+ .to raise_error(NotImplementedError)
57
+ expect{@languageState.function_capture}
58
+ .to raise_error(NotImplementedError)
59
+ end
60
+
61
+ end
62
+
63
+ after :each do
64
+ @languageState = nil
65
+ end
66
+
67
+ end