linkage 0.0.8 → 0.1.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.yardopts +1 -0
  4. data/Gemfile +1 -19
  5. data/Gemfile-java +3 -0
  6. data/README.markdown +88 -34
  7. data/Rakefile +16 -15
  8. data/TODO +4 -0
  9. data/lib/linkage/comparator.rb +139 -144
  10. data/lib/linkage/comparators/compare.rb +236 -29
  11. data/lib/linkage/comparators/strcompare.rb +85 -0
  12. data/lib/linkage/comparators/within.rb +24 -20
  13. data/lib/linkage/configuration.rb +44 -466
  14. data/lib/linkage/dataset.rb +28 -127
  15. data/lib/linkage/exceptions.rb +5 -0
  16. data/lib/linkage/field.rb +6 -37
  17. data/lib/linkage/field_set.rb +3 -3
  18. data/lib/linkage/match_recorder.rb +22 -0
  19. data/lib/linkage/match_set.rb +34 -0
  20. data/lib/linkage/match_sets/csv.rb +39 -0
  21. data/lib/linkage/match_sets/database.rb +45 -0
  22. data/lib/linkage/matcher.rb +30 -0
  23. data/lib/linkage/result_set.rb +25 -110
  24. data/lib/linkage/result_sets/csv.rb +54 -0
  25. data/lib/linkage/result_sets/database.rb +42 -0
  26. data/lib/linkage/runner.rb +57 -16
  27. data/lib/linkage/score_recorder.rb +30 -0
  28. data/lib/linkage/score_set.rb +49 -0
  29. data/lib/linkage/score_sets/csv.rb +64 -0
  30. data/lib/linkage/score_sets/database.rb +77 -0
  31. data/lib/linkage/version.rb +1 -1
  32. data/lib/linkage.rb +14 -17
  33. data/linkage.gemspec +13 -1
  34. data/linkage.gemspec-java +32 -0
  35. data/test/helper.rb +30 -23
  36. data/test/integration/test_cross_linkage.rb +46 -25
  37. data/test/integration/test_database_result_set.rb +55 -0
  38. data/test/integration/test_dual_linkage.rb +19 -94
  39. data/test/integration/test_self_linkage.rb +100 -203
  40. data/test/integration/test_within_comparator.rb +24 -77
  41. data/test/unit/comparators/test_compare.rb +254 -50
  42. data/test/unit/comparators/test_strcompare.rb +45 -0
  43. data/test/unit/comparators/test_within.rb +14 -26
  44. data/test/unit/match_sets/test_csv.rb +78 -0
  45. data/test/unit/match_sets/test_database.rb +63 -0
  46. data/test/unit/result_sets/test_csv.rb +111 -0
  47. data/test/unit/result_sets/test_database.rb +68 -0
  48. data/test/unit/score_sets/test_csv.rb +151 -0
  49. data/test/unit/score_sets/test_database.rb +149 -0
  50. data/test/unit/test_comparator.rb +46 -83
  51. data/test/unit/test_comparators.rb +4 -0
  52. data/test/unit/test_configuration.rb +99 -145
  53. data/test/unit/test_dataset.rb +52 -73
  54. data/test/unit/test_field.rb +4 -55
  55. data/test/unit/test_field_set.rb +6 -6
  56. data/test/unit/test_match_recorder.rb +23 -0
  57. data/test/unit/test_match_set.rb +23 -0
  58. data/test/unit/test_match_sets.rb +4 -0
  59. data/test/unit/test_matcher.rb +44 -0
  60. data/test/unit/test_result_set.rb +24 -223
  61. data/test/unit/test_result_sets.rb +4 -0
  62. data/test/unit/test_runner.rb +122 -17
  63. data/test/unit/test_runners.rb +4 -0
  64. data/test/unit/test_score_recorder.rb +25 -0
  65. data/test/unit/test_score_set.rb +37 -0
  66. data/test/unit/test_score_sets.rb +4 -0
  67. metadata +183 -90
  68. data/Gemfile.lock +0 -92
  69. data/lib/linkage/comparators/binary.rb +0 -12
  70. data/lib/linkage/data.rb +0 -175
  71. data/lib/linkage/decollation.rb +0 -93
  72. data/lib/linkage/expectation.rb +0 -21
  73. data/lib/linkage/expectations/exhaustive.rb +0 -63
  74. data/lib/linkage/expectations/simple.rb +0 -168
  75. data/lib/linkage/function.rb +0 -148
  76. data/lib/linkage/functions/binary.rb +0 -30
  77. data/lib/linkage/functions/cast.rb +0 -54
  78. data/lib/linkage/functions/length.rb +0 -29
  79. data/lib/linkage/functions/strftime.rb +0 -33
  80. data/lib/linkage/functions/trim.rb +0 -30
  81. data/lib/linkage/group.rb +0 -55
  82. data/lib/linkage/meta_object.rb +0 -139
  83. data/lib/linkage/runner/single_threaded.rb +0 -187
  84. data/lib/linkage/utils.rb +0 -164
  85. data/lib/linkage/warnings.rb +0 -5
  86. data/test/integration/test_collation.rb +0 -45
  87. data/test/integration/test_configuration.rb +0 -268
  88. data/test/integration/test_dataset.rb +0 -116
  89. data/test/integration/test_functions.rb +0 -88
  90. data/test/integration/test_result_set.rb +0 -85
  91. data/test/integration/test_scoring.rb +0 -84
  92. data/test/unit/expectations/test_exhaustive.rb +0 -111
  93. data/test/unit/expectations/test_simple.rb +0 -303
  94. data/test/unit/functions/test_binary.rb +0 -54
  95. data/test/unit/functions/test_cast.rb +0 -98
  96. data/test/unit/functions/test_length.rb +0 -52
  97. data/test/unit/functions/test_strftime.rb +0 -60
  98. data/test/unit/functions/test_trim.rb +0 -43
  99. data/test/unit/runner/test_single_threaded.rb +0 -12
  100. data/test/unit/test_data.rb +0 -445
  101. data/test/unit/test_decollation.rb +0 -201
  102. data/test/unit/test_function.rb +0 -233
  103. data/test/unit/test_group.rb +0 -38
  104. data/test/unit/test_meta_object.rb +0 -208
  105. data/test/unit/test_utils.rb +0 -341
@@ -1,341 +0,0 @@
1
- require 'helper'
2
-
3
- class UnitTests::TestUtils < Test::Unit::TestCase
4
- include Linkage::Utils
5
-
6
- test "merge two identical primary keys" do
7
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>true, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
8
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>true, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
9
- expected = {:type => Integer, :opts => {}}
10
- assert_equal(expected, merge_fields(field_1, field_2))
11
- assert_equal(expected, merge_fields(field_2, field_1))
12
- end
13
-
14
- test "merge two boolean fields" do
15
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
16
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
17
- expected = {:type => TrueClass, :opts => {}}
18
- assert_equal(expected, merge_fields(field_1, field_2))
19
- assert_equal(expected, merge_fields(field_2, field_1))
20
- end
21
-
22
- test "merge a boolean field and an integer field" do
23
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
24
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
25
- expected = {:type => Integer, :opts => {}}
26
- assert_equal(expected, merge_fields(field_1, field_2))
27
- assert_equal(expected, merge_fields(field_2, field_1))
28
- end
29
-
30
- test "merge a boolean field and a bignum field" do
31
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
32
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
33
- expected = {:type => Bignum, :opts => {}}
34
- assert_equal(expected, merge_fields(field_1, field_2))
35
- assert_equal(expected, merge_fields(field_2, field_1))
36
- end
37
-
38
- test "merge a boolean field and a float field" do
39
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
40
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
41
- expected = {:type => Float, :opts => {}}
42
- assert_equal(expected, merge_fields(field_1, field_2))
43
- assert_equal(expected, merge_fields(field_2, field_1))
44
- end
45
-
46
- test "merge a boolean field and a decimal field" do
47
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
48
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
49
- expected = {:type => BigDecimal, :opts => {}}
50
- assert_equal(expected, merge_fields(field_1, field_2))
51
- assert_equal(expected, merge_fields(field_2, field_1))
52
- end
53
-
54
- test "merge a boolean field and a decimal field with size" do
55
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(10,2)", :type=>:decimal, :ruby_default=>nil}
56
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
57
- expected = {:type => BigDecimal, :opts => {:size => [10, 2]}}
58
- assert_equal(expected, merge_fields(field_1, field_2))
59
- assert_equal(expected, merge_fields(field_2, field_1))
60
- end
61
-
62
- test "merge a boolean field and a string field" do
63
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(10)", :type=>:string, :ruby_default=>nil}
64
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
65
- expected = {:type => String, :opts => {:size => 10}}
66
- assert_equal(expected, merge_fields(field_1, field_2))
67
- assert_equal(expected, merge_fields(field_2, field_1))
68
- end
69
-
70
- test "merge a boolean field and a text field" do
71
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"text", :type=>:text, :ruby_default=>nil}
72
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
73
- expected = {:type => String, :opts => {:text => true}}
74
- assert_equal(expected, merge_fields(field_1, field_2))
75
- assert_equal(expected, merge_fields(field_2, field_1))
76
- end
77
-
78
- test "merge a boolean field and a fixed string field" do
79
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"char(10)", :type=>:string, :ruby_default=>nil}
80
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"boolean", :type=>:boolean, :ruby_default=>nil}
81
- expected = {:type => String, :opts => {:size => 10, :fixed => true}}
82
- assert_equal(expected, merge_fields(field_1, field_2))
83
- assert_equal(expected, merge_fields(field_2, field_1))
84
- end
85
-
86
- test "merge two integer fields" do
87
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
88
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
89
- expected = {:type => Integer, :opts => {}}
90
- assert_equal(expected, merge_fields(field_1, field_2))
91
- assert_equal(expected, merge_fields(field_2, field_1))
92
- end
93
-
94
- test "merge an integer field and a bignum field" do
95
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
96
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
97
- expected = {:type => Bignum, :opts => {}}
98
- assert_equal(expected, merge_fields(field_1, field_2))
99
- assert_equal(expected, merge_fields(field_2, field_1))
100
- end
101
-
102
- test "merge an integer field and a float field" do
103
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
104
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
105
- expected = {:type => Float, :opts => {}}
106
- assert_equal(expected, merge_fields(field_1, field_2))
107
- assert_equal(expected, merge_fields(field_2, field_1))
108
- end
109
-
110
- test "merge an integer field and a decimal field" do
111
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
112
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
113
- expected = {:type => BigDecimal, :opts => {}}
114
- assert_equal(expected, merge_fields(field_1, field_2))
115
- assert_equal(expected, merge_fields(field_2, field_1))
116
- end
117
-
118
- test "merge an integer field and a decimal field with size" do
119
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(10,2)", :type=>:decimal, :ruby_default=>nil}
120
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
121
- expected = {:type => BigDecimal, :opts => {:size => [10, 2]}}
122
- assert_equal(expected, merge_fields(field_1, field_2))
123
- assert_equal(expected, merge_fields(field_2, field_1))
124
- end
125
-
126
- test "merge an integer field and a string field" do
127
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(10)", :type=>:string, :ruby_default=>nil}
128
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
129
- expected = {:type => String, :opts => {:size => 10}}
130
- assert_equal(expected, merge_fields(field_1, field_2))
131
- assert_equal(expected, merge_fields(field_2, field_1))
132
- end
133
-
134
- test "merge an integer field and a text field" do
135
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"text", :type=>:text, :ruby_default=>nil}
136
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
137
- expected = {:type => String, :opts => {:text => true}}
138
- assert_equal(expected, merge_fields(field_1, field_2))
139
- assert_equal(expected, merge_fields(field_2, field_1))
140
- end
141
-
142
- test "merge an integer field and a fixed string field" do
143
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"char(10)", :type=>:string, :ruby_default=>nil}
144
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"integer", :type=>:integer, :ruby_default=>nil}
145
- expected = {:type => String, :opts => {:size => 10, :fixed => true}}
146
- assert_equal(expected, merge_fields(field_1, field_2))
147
- assert_equal(expected, merge_fields(field_2, field_1))
148
- end
149
-
150
- test "merge two bignum fields" do
151
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
152
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
153
- expected = {:type => Bignum, :opts => {}}
154
- assert_equal(expected, merge_fields(field_1, field_2))
155
- assert_equal(expected, merge_fields(field_2, field_1))
156
- end
157
-
158
- test "merge an bignum field and a decimal field" do
159
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
160
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
161
- expected = {:type => BigDecimal, :opts => {}}
162
- assert_equal(expected, merge_fields(field_1, field_2))
163
- assert_equal(expected, merge_fields(field_2, field_1))
164
- end
165
-
166
- test "merge an bignum field and a decimal field with size" do
167
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(10,2)", :type=>:decimal, :ruby_default=>nil}
168
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
169
- expected = {:type => BigDecimal, :opts => {:size => [10, 2]}}
170
- assert_equal(expected, merge_fields(field_1, field_2))
171
- assert_equal(expected, merge_fields(field_2, field_1))
172
- end
173
-
174
- test "merge an bignum field and a string field" do
175
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(10)", :type=>:string, :ruby_default=>nil}
176
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
177
- expected = {:type => String, :opts => {:size => 10}}
178
- assert_equal(expected, merge_fields(field_1, field_2))
179
- assert_equal(expected, merge_fields(field_2, field_1))
180
- end
181
-
182
- test "merge an bignum field and a text field" do
183
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"text", :type=>:text, :ruby_default=>nil}
184
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
185
- expected = {:type => String, :opts => {:text => true}}
186
- assert_equal(expected, merge_fields(field_1, field_2))
187
- assert_equal(expected, merge_fields(field_2, field_1))
188
- end
189
-
190
- test "merge an bignum field and a fixed string field" do
191
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"char(10)", :type=>:string, :ruby_default=>nil}
192
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
193
- expected = {:type => String, :opts => {:size => 10, :fixed => true}}
194
- assert_equal(expected, merge_fields(field_1, field_2))
195
- assert_equal(expected, merge_fields(field_2, field_1))
196
- end
197
-
198
- test "merge two float fields" do
199
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
200
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
201
- expected = {:type => Float, :opts => {}}
202
- assert_equal(expected, merge_fields(field_1, field_2))
203
- assert_equal(expected, merge_fields(field_2, field_1))
204
- end
205
-
206
- test "merge a float field and a bignum field" do
207
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"bigint", :type=>:bigint, :ruby_default=>nil}
208
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
209
- expected = {:type => BigDecimal, :opts => {}}
210
- assert_equal(expected, merge_fields(field_1, field_2))
211
- assert_equal(expected, merge_fields(field_2, field_1))
212
- end
213
-
214
- test "merge a float field and a decimal field" do
215
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
216
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
217
- expected = {:type => BigDecimal, :opts => {}}
218
- assert_equal(expected, merge_fields(field_1, field_2))
219
- assert_equal(expected, merge_fields(field_2, field_1))
220
- end
221
-
222
- test "merge a float field and a decimal field with size" do
223
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(10,2)", :type=>:decimal, :ruby_default=>nil}
224
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
225
- expected = {:type => BigDecimal, :opts => {:size => [10, 2]}}
226
- assert_equal(expected, merge_fields(field_1, field_2))
227
- assert_equal(expected, merge_fields(field_2, field_1))
228
- end
229
-
230
- test "merge a float field and a string field" do
231
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(10)", :type=>:string, :ruby_default=>nil}
232
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
233
- expected = {:type => String, :opts => {:size => 10}}
234
- assert_equal(expected, merge_fields(field_1, field_2))
235
- assert_equal(expected, merge_fields(field_2, field_1))
236
- end
237
-
238
- test "merge a float field and a text field" do
239
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"text", :type=>:text, :ruby_default=>nil}
240
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
241
- expected = {:type => String, :opts => {:text => true}}
242
- assert_equal(expected, merge_fields(field_1, field_2))
243
- assert_equal(expected, merge_fields(field_2, field_1))
244
- end
245
-
246
- test "merge a float field and a fixed string field" do
247
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"char(10)", :type=>:string, :ruby_default=>nil}
248
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"float", :type=>:float, :ruby_default=>nil}
249
- expected = {:type => String, :opts => {:size => 10, :fixed => true}}
250
- assert_equal(expected, merge_fields(field_1, field_2))
251
- assert_equal(expected, merge_fields(field_2, field_1))
252
- end
253
-
254
- test "merge two decimal fields" do
255
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
256
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
257
- expected = {:type => BigDecimal, :opts => {}}
258
- assert_equal(expected, merge_fields(field_1, field_2))
259
- assert_equal(expected, merge_fields(field_2, field_1))
260
- end
261
-
262
- test "merge two decimal fields, one with size" do
263
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(10,2)", :type=>:decimal, :ruby_default=>nil}
264
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
265
- expected = {:type => BigDecimal, :opts => {:size => [10, 2]}}
266
- assert_equal(expected, merge_fields(field_1, field_2))
267
- assert_equal(expected, merge_fields(field_2, field_1))
268
- end
269
-
270
- test "merge two decimal fields, both with size" do
271
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(10,2)", :type=>:decimal, :ruby_default=>nil}
272
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(12,1)", :type=>:decimal, :ruby_default=>nil}
273
- expected = {:type => BigDecimal, :opts => {:size => [12, 2]}}
274
- assert_equal(expected, merge_fields(field_1, field_2))
275
- assert_equal(expected, merge_fields(field_2, field_1))
276
- end
277
-
278
- test "merge two decimal fields, both with size, one without scale" do
279
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(10)", :type=>:decimal, :ruby_default=>nil}
280
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(12,1)", :type=>:decimal, :ruby_default=>nil}
281
- expected = {:type => BigDecimal, :opts => {:size => [12, 1]}}
282
- assert_equal(expected, merge_fields(field_1, field_2))
283
- assert_equal(expected, merge_fields(field_2, field_1))
284
- end
285
-
286
- test "merge a decimal field and a string field" do
287
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(10)", :type=>:string, :ruby_default=>nil}
288
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
289
- expected = {:type => String, :opts => {:size => 10}}
290
- assert_equal(expected, merge_fields(field_1, field_2))
291
- assert_equal(expected, merge_fields(field_2, field_1))
292
- end
293
-
294
- test "merge a decimal field with size and a string field" do
295
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(10)", :type=>:string, :ruby_default=>nil}
296
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(12,2)", :type=>:decimal, :ruby_default=>nil}
297
- expected = {:type => String, :opts => {:size => 13}}
298
- assert_equal(expected, merge_fields(field_1, field_2))
299
- assert_equal(expected, merge_fields(field_2, field_1))
300
- end
301
-
302
- test "merge a decimal field and a text field" do
303
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"text", :type=>:text, :ruby_default=>nil}
304
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
305
- expected = {:type => String, :opts => {:text => true}}
306
- assert_equal(expected, merge_fields(field_1, field_2))
307
- assert_equal(expected, merge_fields(field_2, field_1))
308
- end
309
-
310
- test "merge a decimal field with size and a text field" do
311
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"text", :type=>:text, :ruby_default=>nil}
312
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal(12,2)", :type=>:decimal, :ruby_default=>nil}
313
- expected = {:type => String, :opts => {:text => true}}
314
- assert_equal(expected, merge_fields(field_1, field_2))
315
- assert_equal(expected, merge_fields(field_2, field_1))
316
- end
317
-
318
- test "merge a decimal field and a fixed string field" do
319
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"char(10)", :type=>:string, :ruby_default=>nil}
320
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"decimal", :type=>:decimal, :ruby_default=>nil}
321
- expected = {:type => String, :opts => {:size => 10, :fixed => true}}
322
- assert_equal(expected, merge_fields(field_1, field_2))
323
- assert_equal(expected, merge_fields(field_2, field_1))
324
- end
325
-
326
- test "merge two string fields" do
327
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(20)", :type=>:string, :ruby_default=>nil}
328
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(20)", :type=>:string, :ruby_default=>nil}
329
- expected = {:type => String, :opts => {:size => 20}}
330
- assert_equal(expected, merge_fields(field_1, field_2))
331
- assert_equal(expected, merge_fields(field_2, field_1))
332
- end
333
-
334
- test "merge two string fields with different sizes" do
335
- field_1 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(15)", :type=>:string, :ruby_default=>nil}
336
- field_2 = {:allow_null=>true, :default=>nil, :primary_key=>false, :db_type=>"varchar(20)", :type=>:string, :ruby_default=>nil}
337
- expected = {:type => String, :opts => {:size => 20}}
338
- assert_equal(expected, merge_fields(field_1, field_2))
339
- assert_equal(expected, merge_fields(field_2, field_1))
340
- end
341
- end