finitio 0.4.1 → 0.5.0

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 (270) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +66 -0
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +34 -30
  5. data/finitio.gemspec +1 -1
  6. data/lib/finitio.rb +7 -39
  7. data/lib/finitio/errors.rb +14 -0
  8. data/lib/finitio/support.rb +4 -1
  9. data/lib/finitio/support/attribute.rb +13 -7
  10. data/lib/finitio/support/compilation.rb +55 -0
  11. data/lib/finitio/support/constraint.rb +46 -0
  12. data/lib/finitio/support/contract.rb +33 -0
  13. data/lib/finitio/support/dress_helper.rb +3 -2
  14. data/lib/finitio/support/heading.rb +57 -17
  15. data/lib/finitio/support/metadata.rb +20 -0
  16. data/lib/finitio/support/type_factory.rb +154 -41
  17. data/lib/finitio/syntax.rb +16 -31
  18. data/lib/finitio/syntax/expr.rb +56 -0
  19. data/lib/finitio/syntax/expr/arith_op.rb +22 -0
  20. data/lib/finitio/syntax/expr/comparison.rb +22 -0
  21. data/lib/finitio/syntax/expr/fn_call.rb +24 -0
  22. data/lib/finitio/syntax/expr/identifier.rb +18 -0
  23. data/lib/finitio/syntax/expr/literal.rb +19 -0
  24. data/lib/finitio/syntax/expr/logic_dyadic.rb +22 -0
  25. data/lib/finitio/syntax/expr/logic_not.rb +21 -0
  26. data/lib/finitio/syntax/expr/oo_call.rb +24 -0
  27. data/lib/finitio/syntax/expr/parenthesized.rb +20 -0
  28. data/lib/finitio/syntax/expr/unary_minus_op.rb +21 -0
  29. data/lib/finitio/syntax/expressions.citrus +129 -0
  30. data/lib/finitio/syntax/finitio.citrus +10 -208
  31. data/lib/finitio/syntax/finitio.sexp +5 -1
  32. data/lib/finitio/syntax/lexer.citrus +91 -0
  33. data/lib/finitio/syntax/literal.rb +16 -0
  34. data/lib/finitio/syntax/literal/boolean.rb +22 -0
  35. data/lib/finitio/syntax/literal/integer.rb +14 -0
  36. data/lib/finitio/syntax/literal/real.rb +14 -0
  37. data/lib/finitio/syntax/literal/string.rb +14 -0
  38. data/lib/finitio/syntax/literals.citrus +44 -0
  39. data/lib/finitio/syntax/node.rb +53 -0
  40. data/lib/finitio/syntax/type.rb +28 -0
  41. data/lib/finitio/syntax/type/ad_type.rb +29 -0
  42. data/lib/finitio/syntax/{any_type.rb → type/any_type.rb} +1 -1
  43. data/lib/finitio/syntax/type/attribute.rb +33 -0
  44. data/lib/finitio/syntax/{builtin_type.rb → type/builtin_type.rb} +3 -1
  45. data/lib/finitio/syntax/{constraint_def.rb → type/constraint_def.rb} +4 -3
  46. data/lib/finitio/syntax/type/constraints.rb +17 -0
  47. data/lib/finitio/syntax/{contract.rb → type/contract.rb} +9 -3
  48. data/lib/finitio/syntax/{definitions.rb → type/definitions.rb} +1 -0
  49. data/lib/finitio/syntax/{expression.rb → type/expression.rb} +2 -1
  50. data/lib/finitio/syntax/{external_pair.rb → type/external_pair.rb} +3 -1
  51. data/lib/finitio/syntax/type/heading.rb +30 -0
  52. data/lib/finitio/syntax/{inline_pair.rb → type/inline_pair.rb} +3 -1
  53. data/lib/finitio/syntax/{lambda_expr.rb → type/lambda_expr.rb} +3 -0
  54. data/lib/finitio/syntax/type/main_type.rb +18 -0
  55. data/lib/finitio/syntax/type/metadata.rb +18 -0
  56. data/lib/finitio/syntax/type/metadata_attr.rb +15 -0
  57. data/lib/finitio/syntax/{named_constraint.rb → type/named_constraint.rb} +10 -3
  58. data/lib/finitio/syntax/type/relation_type.rb +24 -0
  59. data/lib/finitio/syntax/{seq_type.rb → type/seq_type.rb} +3 -0
  60. data/lib/finitio/syntax/{set_type.rb → type/set_type.rb} +3 -0
  61. data/lib/finitio/syntax/type/struct_type.rb +17 -0
  62. data/lib/finitio/syntax/{sub_type.rb → type/sub_type.rb} +3 -0
  63. data/lib/finitio/syntax/{system.rb → type/system.rb} +5 -4
  64. data/lib/finitio/syntax/type/tuple_type.rb +24 -0
  65. data/lib/finitio/syntax/{type_def.rb → type/type_def.rb} +8 -3
  66. data/lib/finitio/syntax/{type_ref.rb → type/type_ref.rb} +4 -1
  67. data/lib/finitio/syntax/{union_type.rb → type/union_type.rb} +1 -0
  68. data/lib/finitio/syntax/{unnamed_constraint.rb → type/unnamed_constraint.rb} +7 -1
  69. data/lib/finitio/syntax/types.citrus +196 -0
  70. data/lib/finitio/system.rb +15 -15
  71. data/lib/finitio/type.rb +38 -6
  72. data/lib/finitio/type/ad_type.rb +41 -18
  73. data/lib/finitio/type/alias_type.rb +37 -0
  74. data/lib/finitio/type/any_type.rb +7 -3
  75. data/lib/finitio/type/builtin_type.rb +5 -4
  76. data/lib/finitio/{support → type}/collection_type.rb +3 -4
  77. data/lib/finitio/type/hash_based_type.rb +91 -0
  78. data/lib/finitio/type/heading_based_type.rb +28 -0
  79. data/lib/finitio/type/multi_relation_type.rb +34 -0
  80. data/lib/finitio/type/multi_tuple_type.rb +29 -0
  81. data/lib/finitio/type/proxy_type.rb +40 -0
  82. data/lib/finitio/type/rel_based_type.rb +42 -0
  83. data/lib/finitio/type/relation_type.rb +6 -47
  84. data/lib/finitio/type/seq_type.rb +4 -0
  85. data/lib/finitio/type/set_type.rb +4 -0
  86. data/lib/finitio/type/struct_type.rb +84 -0
  87. data/lib/finitio/type/sub_type.rb +25 -22
  88. data/lib/finitio/type/tuple_type.rb +6 -57
  89. data/lib/finitio/type/union_type.rb +12 -5
  90. data/lib/finitio/version.rb +2 -2
  91. data/spec/{unit/attribute → attribute}/test_equality.rb +8 -5
  92. data/spec/{unit/attribute → attribute}/test_fetch_on.rb +5 -5
  93. data/spec/attribute/test_initialize.rb +26 -0
  94. data/spec/attribute/test_optional.rb +18 -0
  95. data/spec/attribute/test_required.rb +18 -0
  96. data/spec/attribute/test_to_name.rb +20 -0
  97. data/spec/constraint/test_anonymous.rb +20 -0
  98. data/spec/constraint/test_equality.rb +39 -0
  99. data/spec/constraint/test_name.rb +20 -0
  100. data/spec/constraint/test_named.rb +20 -0
  101. data/spec/constraint/test_triple_equal.rb +13 -0
  102. data/spec/{unit/qrb/system.q → finitio/system.fio} +0 -0
  103. data/spec/{unit/qrb → finitio}/test_ast.rb +0 -0
  104. data/spec/finitio/test_parse.rb +23 -0
  105. data/spec/{unit/qrb/test_parse.rb → finitio/test_system.rb} +6 -6
  106. data/spec/heading/test_allow_extra.rb +24 -0
  107. data/spec/{unit/heading → heading}/test_each.rb +2 -2
  108. data/spec/heading/test_equality.rb +38 -0
  109. data/spec/heading/test_hash.rb +38 -0
  110. data/spec/heading/test_hash_get.rb +17 -0
  111. data/spec/{unit/heading → heading}/test_initialize.rb +2 -2
  112. data/spec/heading/test_multi.rb +57 -0
  113. data/spec/{unit/heading → heading}/test_size.rb +0 -0
  114. data/spec/heading/test_to_name.rb +58 -0
  115. data/spec/spec_helper.rb +17 -1
  116. data/spec/syntax/expr/test_free_variables.rb +46 -0
  117. data/spec/syntax/expr/test_to_proc_source.rb +43 -0
  118. data/spec/{unit/syntax → syntax}/nodes/test_ad_type.rb +26 -26
  119. data/spec/{unit/syntax → syntax}/nodes/test_any_type.rb +2 -2
  120. data/spec/syntax/nodes/test_attribute.rb +65 -0
  121. data/spec/{unit/syntax → syntax}/nodes/test_builtin_type.rb +5 -5
  122. data/spec/{unit/syntax → syntax}/nodes/test_comment.rb +1 -1
  123. data/spec/{unit/syntax → syntax}/nodes/test_constraint_def.rb +3 -8
  124. data/spec/{unit/syntax → syntax}/nodes/test_constraints.rb +21 -16
  125. data/spec/{unit/syntax → syntax}/nodes/test_contract.rb +28 -35
  126. data/spec/{unit/syntax → syntax}/nodes/test_expression.rb +13 -5
  127. data/spec/{unit/syntax → syntax}/nodes/test_heading.rb +25 -7
  128. data/spec/syntax/nodes/test_metadata.rb +28 -0
  129. data/spec/{unit/syntax → syntax}/nodes/test_named_constraint.rb +8 -8
  130. data/spec/syntax/nodes/test_relation_type.rb +84 -0
  131. data/spec/{unit/syntax → syntax}/nodes/test_seq_type.rb +4 -4
  132. data/spec/{unit/syntax → syntax}/nodes/test_set_type.rb +4 -4
  133. data/spec/{unit/syntax → syntax}/nodes/test_spacing.rb +1 -1
  134. data/spec/syntax/nodes/test_struct_type.rb +38 -0
  135. data/spec/{unit/syntax → syntax}/nodes/test_sub_type.rb +14 -14
  136. data/spec/{unit/syntax → syntax}/nodes/test_system.rb +3 -3
  137. data/spec/syntax/nodes/test_tuple_type.rb +94 -0
  138. data/spec/syntax/nodes/test_type_def.rb +57 -0
  139. data/spec/{unit/syntax → syntax}/nodes/test_type_ref.rb +3 -3
  140. data/spec/{unit/syntax → syntax}/nodes/test_union_type.rb +3 -3
  141. data/spec/{unit/syntax → syntax}/nodes/test_unnamed_constraint.rb +7 -7
  142. data/spec/syntax/test_compile.rb +41 -0
  143. data/spec/{unit/syntax → syntax}/test_compile_type.rb +1 -1
  144. data/spec/{unit/system → system}/test_add_type.rb +6 -6
  145. data/spec/{unit/system → system}/test_dsl.rb +2 -2
  146. data/spec/{unit/system → system}/test_dup.rb +4 -4
  147. data/spec/{unit/system → system}/test_fetch.rb +4 -4
  148. data/spec/{unit/system → system}/test_get_type.rb +2 -2
  149. data/spec/{unit/system → system}/test_initialize.rb +0 -0
  150. data/spec/test_finitio.rb +8 -0
  151. data/spec/{unit/type → type}/ad_type/test_default_name.rb +1 -2
  152. data/spec/{unit/type → type}/ad_type/test_dress.rb +19 -9
  153. data/spec/{unit/type → type}/ad_type/test_include.rb +3 -3
  154. data/spec/{unit/type → type}/ad_type/test_initialize.rb +15 -8
  155. data/spec/{unit/type → type}/ad_type/test_name.rb +2 -2
  156. data/spec/type/alias_type/test_default_name.rb +10 -0
  157. data/spec/type/alias_type/test_delegation.rb +29 -0
  158. data/spec/type/alias_type/test_name.rb +10 -0
  159. data/spec/{unit/type → type}/any_type/test_default_name.rb +1 -1
  160. data/spec/{unit/type → type}/any_type/test_dress.rb +0 -0
  161. data/spec/{unit/type → type}/any_type/test_equality.rb +4 -4
  162. data/spec/{unit/type → type}/any_type/test_include.rb +2 -2
  163. data/spec/{unit/type → type}/any_type/test_initialize.rb +0 -0
  164. data/spec/{unit/type → type}/any_type/test_name.rb +2 -2
  165. data/spec/{unit/type → type}/builtin_type/test_default_name.rb +1 -1
  166. data/spec/{unit/type → type}/builtin_type/test_dress.rb +3 -3
  167. data/spec/{unit/type → type}/builtin_type/test_equality.rb +4 -4
  168. data/spec/{unit/type → type}/builtin_type/test_include.rb +2 -2
  169. data/spec/{unit/type → type}/builtin_type/test_initialize.rb +1 -1
  170. data/spec/{unit/type → type}/builtin_type/test_name.rb +2 -2
  171. data/spec/type/multi_relation_type/test_default_name.rb +19 -0
  172. data/spec/type/multi_relation_type/test_dress.rb +206 -0
  173. data/spec/type/multi_relation_type/test_equality.rb +36 -0
  174. data/spec/type/multi_relation_type/test_include.rb +89 -0
  175. data/spec/type/multi_relation_type/test_initialize.rb +29 -0
  176. data/spec/type/multi_relation_type/test_name.rb +27 -0
  177. data/spec/type/multi_tuple_type/test_default_name.rb +17 -0
  178. data/spec/type/multi_tuple_type/test_dress.rb +146 -0
  179. data/spec/type/multi_tuple_type/test_equality.rb +32 -0
  180. data/spec/type/multi_tuple_type/test_include.rb +73 -0
  181. data/spec/type/multi_tuple_type/test_initialize.rb +30 -0
  182. data/spec/type/multi_tuple_type/test_name.rb +24 -0
  183. data/spec/type/proxy_type/test_delegation.rb +37 -0
  184. data/spec/type/proxy_type/test_resolve.rb +29 -0
  185. data/spec/{unit/type → type}/relation_type/test_default_name.rb +0 -0
  186. data/spec/{unit/type → type}/relation_type/test_dress.rb +24 -24
  187. data/spec/{unit/type → type}/relation_type/test_equality.rb +6 -6
  188. data/spec/{unit/type → type}/relation_type/test_include.rb +4 -4
  189. data/spec/{unit/type → type}/relation_type/test_initialize.rb +2 -2
  190. data/spec/{unit/type → type}/relation_type/test_name.rb +0 -0
  191. data/spec/{unit/type → type}/seq_type/test_default_name.rb +0 -0
  192. data/spec/{unit/type → type}/seq_type/test_dress.rb +5 -5
  193. data/spec/{unit/type → type}/seq_type/test_equality.rb +4 -4
  194. data/spec/{unit/type → type}/seq_type/test_include.rb +4 -4
  195. data/spec/{unit/type → type}/seq_type/test_initialize.rb +3 -3
  196. data/spec/{unit/type → type}/seq_type/test_name.rb +0 -0
  197. data/spec/{unit/type → type}/set_type/test_default_name.rb +0 -0
  198. data/spec/{unit/type → type}/set_type/test_dress.rb +8 -8
  199. data/spec/{unit/type → type}/set_type/test_equality.rb +4 -4
  200. data/spec/{unit/type → type}/set_type/test_include.rb +4 -4
  201. data/spec/{unit/type → type}/set_type/test_initialize.rb +3 -3
  202. data/spec/{unit/type → type}/set_type/test_name.rb +0 -0
  203. data/spec/type/struct_type/test_default_name.rb +10 -0
  204. data/spec/type/struct_type/test_dress.rb +105 -0
  205. data/spec/type/struct_type/test_equality.rb +28 -0
  206. data/spec/type/struct_type/test_include.rb +40 -0
  207. data/spec/type/struct_type/test_initialize.rb +22 -0
  208. data/spec/type/struct_type/test_name.rb +20 -0
  209. data/spec/{unit/type → type}/sub_type/test_default_name.rb +2 -2
  210. data/spec/{unit/type → type}/sub_type/test_dress.rb +14 -14
  211. data/spec/type/sub_type/test_equality.rb +46 -0
  212. data/spec/{unit/type → type}/sub_type/test_include.rb +6 -6
  213. data/spec/type/sub_type/test_initialize.rb +13 -0
  214. data/spec/{unit/type → type}/sub_type/test_name.rb +4 -4
  215. data/spec/{unit/type → type}/tuple_type/test_default_name.rb +0 -0
  216. data/spec/{unit/type → type}/tuple_type/test_dress.rb +18 -18
  217. data/spec/{unit/type → type}/tuple_type/test_equality.rb +6 -6
  218. data/spec/{unit/type → type}/tuple_type/test_include.rb +4 -4
  219. data/spec/{unit/type → type}/tuple_type/test_initialize.rb +4 -4
  220. data/spec/{unit/type → type}/tuple_type/test_name.rb +0 -0
  221. data/spec/{unit/type → type}/union_type/test_default_name.rb +0 -0
  222. data/spec/{unit/type → type}/union_type/test_dress.rb +7 -6
  223. data/spec/{unit/type → type}/union_type/test_equality.rb +7 -7
  224. data/spec/{unit/type → type}/union_type/test_include.rb +3 -3
  225. data/spec/{unit/type → type}/union_type/test_initialize.rb +3 -3
  226. data/spec/{unit/type → type}/union_type/test_name.rb +0 -0
  227. data/spec/{unit/type_factory → type_factory}/dsl/test_adt.rb +4 -4
  228. data/spec/{unit/type_factory → type_factory}/dsl/test_any.rb +1 -1
  229. data/spec/{unit/type_factory → type_factory}/dsl/test_attribute.rb +16 -2
  230. data/spec/{unit/type_factory → type_factory}/dsl/test_attributes.rb +1 -1
  231. data/spec/{unit/type_factory → type_factory}/dsl/test_builtin.rb +3 -3
  232. data/spec/type_factory/dsl/test_multi_relation.rb +39 -0
  233. data/spec/type_factory/dsl/test_multi_tuple.rb +37 -0
  234. data/spec/{unit/type_factory → type_factory}/dsl/test_relation.rb +6 -6
  235. data/spec/{unit/type_factory → type_factory}/dsl/test_seq.rb +4 -4
  236. data/spec/{unit/type_factory → type_factory}/dsl/test_set.rb +4 -4
  237. data/spec/type_factory/dsl/test_struct.rb +45 -0
  238. data/spec/{unit/type_factory → type_factory}/dsl/test_subtype.rb +10 -8
  239. data/spec/{unit/type_factory → type_factory}/dsl/test_tuple.rb +5 -5
  240. data/spec/{unit/type_factory → type_factory}/dsl/test_union.rb +6 -6
  241. data/spec/{unit/type_factory → type_factory}/factory/test_builtin.rb +1 -1
  242. data/spec/{unit/type_factory → type_factory}/factory/test_seq_type.rb +2 -2
  243. data/spec/{unit/type_factory → type_factory}/factory/test_set_type.rb +2 -2
  244. data/spec/type_factory/factory/test_struct_type.rb +18 -0
  245. data/spec/{unit/type_factory → type_factory}/factory/test_sub_type.rb +7 -7
  246. data/spec/{unit/type_factory → type_factory}/factory/test_tuple_type.rb +4 -4
  247. metadata +398 -286
  248. data/lib/finitio/data_type.rb +0 -29
  249. data/lib/finitio/syntax/ad_type.rb +0 -32
  250. data/lib/finitio/syntax/attribute.rb +0 -15
  251. data/lib/finitio/syntax/constraints.rb +0 -22
  252. data/lib/finitio/syntax/heading.rb +0 -19
  253. data/lib/finitio/syntax/relation_type.rb +0 -15
  254. data/lib/finitio/syntax/support.rb +0 -13
  255. data/lib/finitio/syntax/tuple_type.rb +0 -15
  256. data/spec/acceptance/Finitio/test_default.rb +0 -96
  257. data/spec/acceptance/Finitio/test_parsing.rb +0 -15
  258. data/spec/acceptance/ad_type/test_in_finitio.rb +0 -82
  259. data/spec/acceptance/ad_type/test_in_ruby.rb +0 -60
  260. data/spec/unit/attribute/test_initialize.rb +0 -13
  261. data/spec/unit/attribute/test_to_name.rb +0 -10
  262. data/spec/unit/heading/test_equality.rb +0 -28
  263. data/spec/unit/heading/test_to_name.rb +0 -32
  264. data/spec/unit/syntax/nodes/test_attribute.rb +0 -38
  265. data/spec/unit/syntax/nodes/test_relation_type.rb +0 -59
  266. data/spec/unit/syntax/nodes/test_tuple_type.rb +0 -59
  267. data/spec/unit/syntax/nodes/test_type_def.rb +0 -33
  268. data/spec/unit/test_finitio.rb +0 -15
  269. data/spec/unit/type/sub_type/test_equality.rb +0 -34
  270. data/spec/unit/type/sub_type/test_initialize.rb +0 -16
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+ module Finitio
3
+ describe MultiTupleType, "initialize" do
4
+
5
+ let(:heading){
6
+ Heading.new([Attribute.new(:a, intType)])
7
+ }
8
+
9
+ context 'with a valid heading' do
10
+ subject{ MultiTupleType.new(heading) }
11
+
12
+ it{ should be_a(MultiTupleType) }
13
+
14
+ it 'correctly sets the instance variable' do
15
+ expect(subject.heading).to eq(heading)
16
+ end
17
+ end
18
+
19
+ context 'with an invalid heading' do
20
+ subject{ MultiTupleType.new("foo") }
21
+
22
+ it 'should raise an error' do
23
+ expect{
24
+ subject
25
+ }.to raise_error(ArgumentError, "Heading expected, got `foo`")
26
+ end
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+ module Finitio
3
+ describe MultiTupleType, "name" do
4
+
5
+ let(:heading){
6
+ Heading.new([Attribute.new(:a, byte, false)])
7
+ }
8
+
9
+ subject{ type.name }
10
+
11
+ context 'when not provided' do
12
+ let(:type){ MultiTupleType.new(heading) }
13
+
14
+ it{ should eq("{a :? Byte}") }
15
+ end
16
+
17
+ context 'when provided' do
18
+ let(:type){ MultiTupleType.new(heading, "Color") }
19
+
20
+ it{ should eq("Color") }
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+ module Finitio
3
+ describe ProxyType, "delegation pattern" do
4
+
5
+ let(:proxy){ ProxyType.new('Int', intType) }
6
+
7
+ it 'should delegate name' do
8
+ expect(proxy.name).to eq(intType.name)
9
+ end
10
+
11
+ it 'should delegate default_name' do
12
+ expect(proxy.default_name).to eq(intType.default_name)
13
+ end
14
+
15
+ it 'should delegate hash' do
16
+ expect(proxy.hash).to eq(intType.hash)
17
+ end
18
+
19
+ it 'should delegate ==' do
20
+ expect(intType == proxy).to eq(true)
21
+ expect(proxy == intType).to eq(true)
22
+ end
23
+
24
+ it 'should delegate dress' do
25
+ expect(proxy.dress(12)).to eq(12)
26
+ end
27
+
28
+ it 'should delegate include?' do
29
+ expect(proxy.include?(12)).to eq(true)
30
+ end
31
+
32
+ it 'should delegate to_s' do
33
+ expect(proxy.to_s).to eq(intType.to_s)
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+ module Finitio
3
+ describe ProxyType, "delegation pattern" do
4
+
5
+ let(:proxy){ ProxyType.new('Int') }
6
+
7
+ subject{ proxy.resolve(system) }
8
+
9
+ context 'when type exists' do
10
+ let(:system){ {'Int' => intType} }
11
+
12
+ it 'resolves fine' do
13
+ subject
14
+ expect(proxy.target).to eq(intType)
15
+ end
16
+ end
17
+
18
+ context 'when type does not exist' do
19
+ let(:system){ {} }
20
+
21
+ it 'raises an error' do
22
+ expect{
23
+ subject
24
+ }.to raise_error(Finitio::Error, "No such type `Int`")
25
+ end
26
+ end
27
+
28
+ end
29
+ end
@@ -29,8 +29,8 @@ module Finitio
29
29
  }
30
30
 
31
31
  it 'should coerce to an Enumerable of tuples' do
32
- subject.should be_a(Enumerable)
33
- subject.to_a.should eq(expected)
32
+ expect(subject).to be_a(Enumerable)
33
+ expect(subject.to_a).to eq(expected)
34
34
  end
35
35
  end
36
36
 
@@ -43,8 +43,8 @@ module Finitio
43
43
  }
44
44
 
45
45
  it 'should coerce to an Enumerable of tuples' do
46
- subject.should be_a(Enumerable)
47
- subject.to_a.should eq(expected)
46
+ expect(subject).to be_a(Enumerable)
47
+ expect(subject.to_a).to eq(expected)
48
48
  end
49
49
  end
50
50
 
@@ -60,16 +60,16 @@ module Finitio
60
60
  }
61
61
 
62
62
  it 'should raise a TypeError' do
63
- subject.should be_a(TypeError)
64
- subject.message.should eq("Invalid value `foo` for colors")
63
+ expect(subject).to be_a(TypeError)
64
+ expect(subject.message).to eq("Invalid colors `foo`")
65
65
  end
66
66
 
67
67
  it 'should have no cause' do
68
- subject.cause.should be_nil
68
+ expect(subject.cause).to be_nil
69
69
  end
70
70
 
71
71
  it 'should have an empty location' do
72
- subject.location.should eq('')
72
+ expect(subject.location).to eq('')
73
73
  end
74
74
  end
75
75
 
@@ -79,16 +79,16 @@ module Finitio
79
79
  }
80
80
 
81
81
  it 'should raise a TypeError' do
82
- subject.should be_a(TypeError)
83
- subject.message.should eq("Invalid value `foo` for {r: Byte, g: Byte, b: Byte}")
82
+ expect(subject).to be_a(TypeError)
83
+ expect(subject.message).to eq("Invalid {r: Byte, g: Byte, b: Byte} `foo`")
84
84
  end
85
85
 
86
86
  it 'should have no cause' do
87
- subject.cause.should be_nil
87
+ expect(subject.cause).to be_nil
88
88
  end
89
89
 
90
90
  it 'should have the correct location' do
91
- subject.location.should eq('0')
91
+ expect(subject.location).to eq('0')
92
92
  end
93
93
  end
94
94
 
@@ -101,16 +101,16 @@ module Finitio
101
101
  }
102
102
 
103
103
  it 'should raise a TypeError' do
104
- subject.should be_a(TypeError)
105
- subject.message.should eq("Missing attribute `b`")
104
+ expect(subject).to be_a(TypeError)
105
+ expect(subject.message).to eq("Missing attribute `b`")
106
106
  end
107
107
 
108
108
  it 'should have no cause' do
109
- subject.cause.should be_nil
109
+ expect(subject.cause).to be_nil
110
110
  end
111
111
 
112
112
  it 'should have the correct location' do
113
- subject.location.should eq('1')
113
+ expect(subject.location).to eq('1')
114
114
  end
115
115
  end
116
116
 
@@ -123,16 +123,16 @@ module Finitio
123
123
  }
124
124
 
125
125
  it 'should raise a TypeError' do
126
- subject.should be_a(TypeError)
127
- subject.message.should eq("Invalid value `12.0` for Byte")
126
+ expect(subject).to be_a(TypeError)
127
+ expect(subject.message).to eq("Invalid Byte `12.0`")
128
128
  end
129
129
 
130
130
  it 'should have a cause' do
131
- subject.cause.should_not be_nil
131
+ expect(subject.cause).not_to be_nil
132
132
  end
133
133
 
134
134
  it 'should have the correct location' do
135
- subject.location.should eq('1/b')
135
+ expect(subject.location).to eq('1/b')
136
136
  end
137
137
  end
138
138
 
@@ -146,16 +146,16 @@ module Finitio
146
146
  }
147
147
 
148
148
  it 'should raise a TypeError' do
149
- subject.should be_a(TypeError)
150
- subject.message.should eq("Duplicate tuple")
149
+ expect(subject).to be_a(TypeError)
150
+ expect(subject.message).to eq("Duplicate tuple")
151
151
  end
152
152
 
153
153
  it 'should have no cause' do
154
- subject.cause.should be_nil
154
+ expect(subject.cause).to be_nil
155
155
  end
156
156
 
157
157
  it 'should have the correct location' do
158
- subject.location.should eq('2')
158
+ expect(subject.location).to eq('2')
159
159
  end
160
160
  end
161
161
  end
@@ -11,21 +11,21 @@ module Finitio
11
11
  let(:type3) { RelationType.new(h3) }
12
12
 
13
13
  it 'should apply structural equality' do
14
- (type1 == type2).should be_true
15
- (type2 == type1).should be_true
14
+ expect(type1 == type2).to eq(true)
15
+ expect(type2 == type1).to eq(true)
16
16
  end
17
17
 
18
18
  it 'should apply distinguish different types' do
19
- (type1 == type3).should be_false
20
- (type2 == type3).should be_false
19
+ expect(type1 == type3).to eq(false)
20
+ expect(type2 == type3).to eq(false)
21
21
  end
22
22
 
23
23
  it 'should be a total function, with nil for non types' do
24
- (type1 == 12).should be_false
24
+ expect(type1 == 12).to eq(false)
25
25
  end
26
26
 
27
27
  it 'should implement hash accordingly' do
28
- [type1, type2].map(&:hash).uniq.size.should eq(1)
28
+ expect([type1, type2].map(&:hash).uniq.size).to eq(1)
29
29
  end
30
30
 
31
31
  end
@@ -13,7 +13,7 @@ module Finitio
13
13
  context 'when a empty set' do
14
14
  let(:arg){ Set.new }
15
15
 
16
- it{ should be_true }
16
+ it{ should eq(true) }
17
17
  end
18
18
 
19
19
  context 'when a valid, non empty set' do
@@ -23,13 +23,13 @@ module Finitio
23
23
  arg << {a: 12} << {a: 15}
24
24
  end
25
25
 
26
- it{ should be_true }
26
+ it{ should eq(true) }
27
27
  end
28
28
 
29
29
  context 'when not a set' do
30
30
  let(:arg){ "foo" }
31
31
 
32
- it{ should be_false }
32
+ it{ should eq(false) }
33
33
  end
34
34
 
35
35
  context 'when a set containing invalid tuples' do
@@ -39,7 +39,7 @@ module Finitio
39
39
  arg << {a: 12.0}
40
40
  end
41
41
 
42
- it{ should be_false }
42
+ it{ should eq(false) }
43
43
  end
44
44
 
45
45
  end
@@ -16,9 +16,9 @@ module Finitio
16
16
  subject{ RelationType.new("foo", "bar") }
17
17
 
18
18
  it 'should raise an error' do
19
- ->{
19
+ expect{
20
20
  subject
21
- }.should raise_error(ArgumentError, "Heading expected, got `foo`")
21
+ }.to raise_error(ArgumentError, "Heading expected, got `foo`")
22
22
  end
23
23
  end
24
24
 
@@ -22,9 +22,9 @@ module Finitio
22
22
  let(:arg){ "foo" }
23
23
 
24
24
  it 'should raise an error' do
25
- ->{
25
+ expect{
26
26
  subject
27
- }.should raise_error("Invalid value `foo` for [Byte]")
27
+ }.to raise_error("Invalid [Byte] `foo`")
28
28
  end
29
29
  end
30
30
 
@@ -36,12 +36,12 @@ module Finitio
36
36
  }
37
37
 
38
38
  it 'should raise an error' do
39
- subject.should be_a(TypeError)
40
- subject.message.should eq("Invalid value `-12` for Byte")
39
+ expect(subject).to be_a(TypeError)
40
+ expect(subject.message).to eq("Invalid Byte `-12`")
41
41
  end
42
42
 
43
43
  it 'should have correct location' do
44
- subject.location.should eq("2")
44
+ expect(subject.location).to eq("2")
45
45
  end
46
46
  end
47
47
 
@@ -7,19 +7,19 @@ module Finitio
7
7
  let(:type3){ SeqType.new(floatType) }
8
8
 
9
9
  it 'should apply structural equality' do
10
- (type == type2).should be_true
10
+ expect(type == type2).to eq(true)
11
11
  end
12
12
 
13
13
  it 'should apply distinguish different types' do
14
- (type == type3).should be_false
14
+ expect(type == type3).to eq(false)
15
15
  end
16
16
 
17
17
  it 'should be a total function, with false for non types' do
18
- (type == 12).should be_false
18
+ expect(type == 12).to eq(false)
19
19
  end
20
20
 
21
21
  it 'should implement hash accordingly' do
22
- (type.hash == type2.hash).should be_true
22
+ expect(type.hash == type2.hash).to eq(true)
23
23
  end
24
24
 
25
25
  end
@@ -9,7 +9,7 @@ module Finitio
9
9
  context 'when included on empty array' do
10
10
  let(:arg){ [] }
11
11
 
12
- it{ should be_true }
12
+ it{ should eq(true) }
13
13
  end
14
14
 
15
15
  context 'when included on non empty array' do
@@ -19,13 +19,13 @@ module Finitio
19
19
  arg << 12
20
20
  end
21
21
 
22
- it{ should be_true }
22
+ it{ should eq(true) }
23
23
  end
24
24
 
25
25
  context 'when not an array' do
26
26
  let(:arg){ Set.new }
27
27
 
28
- it{ should be_false }
28
+ it{ should eq(false) }
29
29
  end
30
30
 
31
31
  context 'when an array with non ints' do
@@ -36,7 +36,7 @@ module Finitio
36
36
  arg << "foo"
37
37
  end
38
38
 
39
- it{ should be_false }
39
+ it{ should eq(false) }
40
40
  end
41
41
 
42
42
  end
@@ -10,7 +10,7 @@ module Finitio
10
10
  it{ should be_a(SeqType) }
11
11
 
12
12
  it 'should set the instance variables' do
13
- subject.elm_type.should eq(intType)
13
+ expect(subject.elm_type).to eq(intType)
14
14
  end
15
15
  end
16
16
 
@@ -18,9 +18,9 @@ module Finitio
18
18
  subject{ SeqType.new("foo") }
19
19
 
20
20
  it 'should raise an error' do
21
- ->{
21
+ expect{
22
22
  subject
23
- }.should raise_error(ArgumentError, 'Finitio::Type expected, got `foo`')
23
+ }.to raise_error(ArgumentError, 'Finitio::Type expected, got `foo`')
24
24
  end
25
25
  end
26
26
 
@@ -22,9 +22,9 @@ module Finitio
22
22
  let(:arg){ "foo" }
23
23
 
24
24
  it 'should raise an error' do
25
- ->{
25
+ expect{
26
26
  subject
27
- }.should raise_error("Invalid value `foo` for {Byte}")
27
+ }.to raise_error("Invalid {Byte} `foo`")
28
28
  end
29
29
  end
30
30
 
@@ -36,12 +36,12 @@ module Finitio
36
36
  }
37
37
 
38
38
  it 'should raise an error' do
39
- subject.should be_a(TypeError)
40
- subject.message.should eq("Invalid value `-12` for Byte")
39
+ expect(subject).to be_a(TypeError)
40
+ expect(subject.message).to eq("Invalid Byte `-12`")
41
41
  end
42
42
 
43
43
  it 'should have correct location' do
44
- subject.location.should eq("2")
44
+ expect(subject.location).to eq("2")
45
45
  end
46
46
  end
47
47
 
@@ -53,12 +53,12 @@ module Finitio
53
53
  }
54
54
 
55
55
  it 'should raise an error' do
56
- subject.should be_a(TypeError)
57
- subject.message.should eq("Duplicate value `2`")
56
+ expect(subject).to be_a(TypeError)
57
+ expect(subject.message).to eq("Duplicate value `2`")
58
58
  end
59
59
 
60
60
  it 'should have correct location' do
61
- subject.location.should eq("2")
61
+ expect(subject.location).to eq("2")
62
62
  end
63
63
  end
64
64