rod 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. data/.travis.yml +1 -1
  2. data/README.rdoc +38 -10
  3. data/Rakefile +20 -9
  4. data/changelog.txt +25 -0
  5. data/contributors.txt +1 -0
  6. data/data/backward/0.7.0/_join_element.dat +0 -0
  7. data/data/backward/0.7.0/_polymorphic_join_element.dat +0 -0
  8. data/data/backward/0.7.0/char.dat +0 -0
  9. data/data/backward/0.7.0/database.yml +58 -0
  10. data/data/backward/0.7.0/rod_test__automobile.dat +0 -0
  11. data/data/backward/0.7.0/rod_test__caveman.dat +0 -0
  12. data/data/backward/0.7.0/rod_test__dog.dat +0 -0
  13. data/data/backward/0.7.0/rod_test__test_model.dat +0 -0
  14. data/data/portability/_join_element.dat +0 -0
  15. data/data/portability/_polymorphic_join_element.dat +0 -0
  16. data/data/portability/char.dat +0 -0
  17. data/data/portability/database.yml +49 -0
  18. data/data/portability/rod_test__automobile.dat +0 -0
  19. data/data/portability/rod_test__caveman.dat +0 -0
  20. data/data/portability/rod_test__dog.dat +0 -0
  21. data/data/portability/rod_test__test_model.dat +0 -0
  22. data/features/backward.feature +33 -0
  23. data/features/basic.feature +3 -0
  24. data/features/collection_proxy.feature +95 -0
  25. data/features/flat_indexing.feature +44 -2
  26. data/features/hash_indexing.feature +63 -9
  27. data/features/portability.feature +72 -0
  28. data/features/segmented_indexing.feature +45 -2
  29. data/features/steps/collection_proxy.rb +1 -1
  30. data/features/steps/model.rb +48 -5
  31. data/features/steps/rod.rb +15 -16
  32. data/lib/rod.rb +11 -1
  33. data/lib/rod/abstract_database.rb +52 -42
  34. data/lib/rod/berkeley/collection_proxy.rb +96 -0
  35. data/lib/rod/berkeley/database.rb +337 -0
  36. data/lib/rod/berkeley/environment.rb +209 -0
  37. data/lib/rod/berkeley/sequence.rb +222 -0
  38. data/lib/rod/berkeley/transaction.rb +233 -0
  39. data/lib/rod/collection_proxy.rb +76 -1
  40. data/lib/rod/constants.rb +3 -2
  41. data/lib/rod/database.rb +127 -14
  42. data/lib/rod/index/base.rb +12 -3
  43. data/lib/rod/index/hash_index.rb +295 -70
  44. data/lib/rod/index/segmented_index.rb +3 -0
  45. data/lib/rod/model.rb +154 -531
  46. data/lib/rod/property/base.rb +190 -0
  47. data/lib/rod/property/field.rb +258 -0
  48. data/lib/rod/property/plural_association.rb +145 -0
  49. data/lib/rod/property/singular_association.rb +139 -0
  50. data/rod.gemspec +6 -4
  51. data/spec/berkeley/database.rb +83 -0
  52. data/spec/berkeley/environment.rb +58 -0
  53. data/spec/berkeley/sequence.rb +101 -0
  54. data/spec/berkeley/transaction.rb +92 -0
  55. data/spec/collection_proxy.rb +38 -0
  56. data/spec/database.rb +36 -0
  57. data/spec/model.rb +26 -0
  58. data/spec/property/base.rb +73 -0
  59. data/spec/property/field.rb +244 -0
  60. data/spec/property/plural_association.rb +67 -0
  61. data/spec/property/singular_association.rb +65 -0
  62. data/tests/class_compatibility_create.rb +2 -2
  63. data/tests/eff1_test.rb +1 -1
  64. data/tests/eff2_test.rb +1 -1
  65. data/tests/full_runs.rb +1 -1
  66. data/tests/generate_classes_create.rb +14 -14
  67. data/tests/migration_create.rb +47 -47
  68. data/tests/migration_verify.rb +1 -1
  69. data/tests/missing_class_create.rb +6 -6
  70. data/tests/properties_order_create.rb +4 -4
  71. data/tests/read_on_create.rb +33 -34
  72. data/tests/save_struct.rb +40 -39
  73. data/tests/unit/database.rb +1 -1
  74. data/tests/unit/model_tests.rb +73 -65
  75. metadata +71 -15
  76. data/tests/unit/model.rb +0 -36
@@ -31,86 +31,94 @@ module RodTest
31
31
 
32
32
  end
33
33
 
34
- class ModuleTests < Test::Unit::TestCase
35
- def setup
36
- Database.instance.create_database("tmp/test_stored_instances")
34
+ class ModuleTests < Test::Unit::TestCase
35
+ def create_db
36
+ @database = Database.instance
37
+
38
+ @database.create_database("tmp/test_stored_instances") do
39
+ yield
40
+ end
37
41
  end
38
42
 
39
- def teardown
40
- Database.instance.close_database
43
+ def create_db_without_block
44
+ @database = Database.instance
45
+ @database.create_database("tmp/test_stored_instances")
41
46
  end
42
47
 
43
- def test_reflection
48
+ def test_reflection
44
49
  # A
45
-
46
- assert AStruct.fields.has_key?(:a1)
47
- assert AStruct.fields[:a1].has_key?(:type)
48
- assert AStruct.fields[:a1][:type] == :integer
49
-
50
- assert AStruct.fields.has_key?(:a2)
51
- assert AStruct.fields[:a2].has_key?(:type)
52
- assert AStruct.fields[:a2][:type] == :ulong
53
- assert AStruct.fields[:a2].has_key?(:index)
54
- assert AStruct.fields[:a2][:index] == :flat
55
-
56
- assert AStruct.fields.has_key?("rod_id")
57
-
58
- assert AStruct.plural_associations.has_key?(:b_structs)
59
- assert AStruct.plural_associations[:b_structs].has_key?(:class_name)
60
- assert AStruct.plural_associations[:b_structs][:class_name] == "RodTest::BStruct"
61
-
62
- # B
63
- assert BStruct.singular_associations.has_key?(:a_struct)
64
-
65
- assert BStruct.fields.has_key?("rod_id")
66
- end
50
+ create_db do
51
+ assert AStruct.property(:a1)
52
+ assert AStruct.property(:a1).type
53
+ assert AStruct.property(:a1).type == :integer
54
+
55
+ assert AStruct.property(:a2)
56
+ assert AStruct.property(:a2).type
57
+ assert AStruct.property(:a2).type == :ulong
58
+ assert AStruct.property(:a2).options[:index]
59
+ assert AStruct.property(:a2).options[:index] == :flat
60
+
61
+ assert AStruct.property(:rod_id)
62
+
63
+ assert AStruct.property(:b_structs)
64
+ assert AStruct.property(:b_structs).options[:class_name]
65
+ assert AStruct.property(:b_structs).options[:class_name] == "RodTest::BStruct"
66
+
67
+ # B
68
+ assert BStruct.property(:a_struct)
69
+ assert BStruct.property(:rod_id)
70
+ end
71
+ end
67
72
 
68
73
  def test_instances
69
- a1 = AStruct.new
70
- a2 = AStruct.new
71
- a3 = AStruct.new
72
-
73
- b1 = BStruct.new
74
- b2 = BStruct.new
75
-
76
- # these are generated, non-trivial accessors, so they need to be tested
77
- a1.a1 = 2
78
- a1.a2 = 2000000000
79
- assert a1.a1 == 2
80
- assert a1.a2 == 2000000000
81
-
82
- assert a1.b_structs_count == a1.b_structs.count
83
- a1.b_structs = [b1, b2]
84
- assert a1.b_structs.to_a == [b1, b2]
85
- assert a1.b_structs_count == a1.b_structs.count
86
-
87
- b1.b = "tead-only database"
88
- assert b1.b == "tead-only database"
74
+ create_db do
75
+ a1 = AStruct.new
76
+ a2 = AStruct.new
77
+ a3 = AStruct.new
78
+
79
+ b1 = BStruct.new
80
+ b2 = BStruct.new
81
+
82
+ # these are generated, non-trivial accessors, so they need to be tested
83
+ a1.a1 = 2
84
+ a1.a2 = 2000000000
85
+ assert a1.a1 == 2
86
+ assert a1.a2 == 2000000000
87
+
88
+ assert a1.b_structs_count == a1.b_structs.count
89
+ a1.b_structs = [b1, b2]
90
+ assert a1.b_structs.to_a == [b1, b2]
91
+ assert a1.b_structs_count == a1.b_structs.count
92
+
93
+ b1.b = "tead-only database"
94
+ assert b1.b == "tead-only database"
95
+ end
89
96
  end
90
97
 
91
98
  def test_stored_instances
99
+ create_db do
100
+ a1 = AStruct.new
101
+ a2 = AStruct.new
102
+ a3 = AStruct.new
92
103
 
93
- a1 = AStruct.new
94
- a2 = AStruct.new
95
- a3 = AStruct.new
104
+ b1 = BStruct.new
105
+ b2 = BStruct.new
96
106
 
97
- b1 = BStruct.new
98
- b2 = BStruct.new
107
+ a1.b_structs = [b1, b2]
108
+ a2.b_structs = [b1]
109
+ a3.b_structs = []
99
110
 
100
- a1.b_structs = [b1, b2]
101
- a2.b_structs = [b1]
102
- a3.b_structs = []
111
+ a1.store
112
+ a2.store
113
+ a3.store
103
114
 
104
- a1.store
105
- a2.store
106
- a3.store
115
+ b1.store
116
+ b2.store
107
117
 
108
- b1.store
109
- b2.store
110
-
111
- assert a1.b_structs_count == a1.b_structs.count
112
- #p "AStruct.count: #{AStruct.count}" <- should throw a more relevant exception
118
+ assert a1.b_structs_count == a1.b_structs.count
119
+ #p "AStruct.count: #{AStruct.count}" <- should throw a more relevant exception
120
+ end
113
121
  end
114
- end
122
+ end
115
123
  end
116
124
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rod
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.7.1
5
+ version: 0.7.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Aleksander Pohl
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-01 00:00:00 Z
13
+ date: 2012-07-01 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: RubyInline
@@ -46,12 +46,9 @@ dependencies:
46
46
  requirement: &id003 !ruby/object:Gem::Requirement
47
47
  none: false
48
48
  requirements:
49
- - - ">="
50
- - !ruby/object:Gem::Version
51
- version: 3.0.7
52
- - - <
49
+ - - ~>
53
50
  - !ruby/object:Gem::Version
54
- version: 3.1.0
51
+ version: 3.2.2
55
52
  type: :runtime
56
53
  version_requirements: *id003
57
54
  - !ruby/object:Gem::Dependency
@@ -74,12 +71,9 @@ dependencies:
74
71
  requirement: &id005 !ruby/object:Gem::Requirement
75
72
  none: false
76
73
  requirements:
77
- - - ">="
74
+ - - ~>
78
75
  - !ruby/object:Gem::Version
79
76
  version: 0.9.8
80
- - - <
81
- - !ruby/object:Gem::Version
82
- version: 1.0.0
83
77
  type: :development
84
78
  version_requirements: *id005
85
79
  - !ruby/object:Gem::Dependency
@@ -121,7 +115,18 @@ dependencies:
121
115
  version: 1.0.0
122
116
  type: :development
123
117
  version_requirements: *id008
124
- description: Ruby object database is designed for large amount of data, whose structure rarely changes.
118
+ - !ruby/object:Gem::Dependency
119
+ name: minitest
120
+ prerelease: false
121
+ requirement: &id009 !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: 2.7.0
127
+ type: :development
128
+ version_requirements: *id009
129
+ description: Ruby Object Database is designed for large amounts of data, whose structure rarely changes.
125
130
  email:
126
131
  - apohllo@o2.pl
127
132
  executables: []
@@ -138,7 +143,24 @@ files:
138
143
  - Rakefile
139
144
  - changelog.txt
140
145
  - contributors.txt
146
+ - data/backward/0.7.0/_join_element.dat
147
+ - data/backward/0.7.0/_polymorphic_join_element.dat
148
+ - data/backward/0.7.0/char.dat
149
+ - data/backward/0.7.0/database.yml
150
+ - data/backward/0.7.0/rod_test__automobile.dat
151
+ - data/backward/0.7.0/rod_test__caveman.dat
152
+ - data/backward/0.7.0/rod_test__dog.dat
153
+ - data/backward/0.7.0/rod_test__test_model.dat
154
+ - data/portability/_join_element.dat
155
+ - data/portability/_polymorphic_join_element.dat
156
+ - data/portability/char.dat
157
+ - data/portability/database.yml
158
+ - data/portability/rod_test__automobile.dat
159
+ - data/portability/rod_test__caveman.dat
160
+ - data/portability/rod_test__dog.dat
161
+ - data/portability/rod_test__test_model.dat
141
162
  - features/append.feature
163
+ - features/backward.feature
142
164
  - features/basic.feature
143
165
  - features/collection.feature
144
166
  - features/collection_proxy.feature
@@ -147,6 +169,7 @@ files:
147
169
  - features/inheritence.feature
148
170
  - features/muliple_db.feature
149
171
  - features/persistence.feature
172
+ - features/portability.feature
150
173
  - features/relationship_indexing.feature
151
174
  - features/relationships.feature
152
175
  - features/segmented_indexing.feature
@@ -159,6 +182,11 @@ files:
159
182
  - lib/rod.rb
160
183
  - lib/rod/abstract_database.rb
161
184
  - lib/rod/abstract_model.rb
185
+ - lib/rod/berkeley/collection_proxy.rb
186
+ - lib/rod/berkeley/database.rb
187
+ - lib/rod/berkeley/environment.rb
188
+ - lib/rod/berkeley/sequence.rb
189
+ - lib/rod/berkeley/transaction.rb
162
190
  - lib/rod/cache.rb
163
191
  - lib/rod/collection_proxy.rb
164
192
  - lib/rod/constants.rb
@@ -170,11 +198,26 @@ files:
170
198
  - lib/rod/index/segmented_index.rb
171
199
  - lib/rod/join_element.rb
172
200
  - lib/rod/model.rb
201
+ - lib/rod/property/base.rb
202
+ - lib/rod/property/field.rb
203
+ - lib/rod/property/plural_association.rb
204
+ - lib/rod/property/singular_association.rb
173
205
  - lib/rod/reference_updater.rb
174
206
  - lib/rod/string_element.rb
175
207
  - lib/rod/string_ex.rb
176
208
  - lib/rod/utils.rb
177
209
  - rod.gemspec
210
+ - spec/berkeley/database.rb
211
+ - spec/berkeley/environment.rb
212
+ - spec/berkeley/sequence.rb
213
+ - spec/berkeley/transaction.rb
214
+ - spec/collection_proxy.rb
215
+ - spec/database.rb
216
+ - spec/model.rb
217
+ - spec/property/base.rb
218
+ - spec/property/field.rb
219
+ - spec/property/plural_association.rb
220
+ - spec/property/singular_association.rb
178
221
  - tests/check_strings.rb
179
222
  - tests/class_compatibility_create.rb
180
223
  - tests/class_compatibility_verify.rb
@@ -201,7 +244,6 @@ files:
201
244
  - tests/structures.rb
202
245
  - tests/unit/abstract_database.rb
203
246
  - tests/unit/database.rb
204
- - tests/unit/model.rb
205
247
  - tests/unit/model_tests.rb
206
248
  - tests/validate_read_on_create.rb
207
249
  - utils/convert_index.rb
@@ -229,12 +271,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
271
  requirements: []
230
272
 
231
273
  rubyforge_project: rod
232
- rubygems_version: 1.8.5
274
+ rubygems_version: 1.8.24
233
275
  signing_key:
234
276
  specification_version: 3
235
- summary: Ruby object database
277
+ summary: Ruby Object Database
236
278
  test_files:
237
279
  - features/append.feature
280
+ - features/backward.feature
238
281
  - features/basic.feature
239
282
  - features/collection.feature
240
283
  - features/collection_proxy.feature
@@ -243,6 +286,7 @@ test_files:
243
286
  - features/inheritence.feature
244
287
  - features/muliple_db.feature
245
288
  - features/persistence.feature
289
+ - features/portability.feature
246
290
  - features/relationship_indexing.feature
247
291
  - features/relationships.feature
248
292
  - features/segmented_indexing.feature
@@ -252,3 +296,15 @@ test_files:
252
296
  - features/steps/test_helper.rb
253
297
  - features/support/mocha.rb
254
298
  - features/update.feature
299
+ - spec/berkeley/database.rb
300
+ - spec/berkeley/environment.rb
301
+ - spec/berkeley/sequence.rb
302
+ - spec/berkeley/transaction.rb
303
+ - spec/collection_proxy.rb
304
+ - spec/database.rb
305
+ - spec/model.rb
306
+ - spec/property/base.rb
307
+ - spec/property/field.rb
308
+ - spec/property/plural_association.rb
309
+ - spec/property/singular_association.rb
310
+ has_rdoc:
@@ -1,36 +0,0 @@
1
- $:.unshift("tests")
2
- require 'test/unit'
3
- require 'structures'
4
-
5
- class ModelTest < Test::Unit::TestCase
6
- def setup
7
- RodTest::Database.instance.open_database("tmp/abc")
8
- end
9
-
10
- def teardown
11
- RodTest::Database.instance.close_database()
12
- end
13
-
14
- def test_referential_integrity
15
- struct1 = RodTest::MyStruct.find_by_title("title_0")
16
- assert(not(struct1.nil?))
17
- struct2 = RodTest::MyStruct.find_by_title("title_0")
18
- assert(not(struct2.nil?))
19
- assert(struct1.object_id == struct2.object_id,
20
- "Referential integrity not working for find_by " +
21
- "#{struct1.object_id}:#{struct2.object_id}")
22
-
23
- struct3 = RodTest::YourStruct[0]
24
- assert(not(struct3.nil?))
25
- struct4 = RodTest::HisStruct[0]
26
- assert(not(struct4.nil?))
27
- assert(struct3.his_structs[0].object_id == struct4.object_id,
28
- "Referential integrity not working for has_many " +
29
- "#{struct3.his_structs[0].object_id}:#{struct4.object_id}")
30
- end
31
-
32
- def test_print_system_error
33
- puts "Test system error:"
34
- RodTest::Database.instance.print_system_error
35
- end
36
- end