sequel 4.22.0 → 4.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +22 -0
  3. data/README.rdoc +6 -0
  4. data/Rakefile +59 -81
  5. data/doc/migration.rdoc +2 -0
  6. data/doc/release_notes/4.23.0.txt +65 -0
  7. data/doc/sharding.rdoc +16 -14
  8. data/doc/testing.rdoc +61 -77
  9. data/lib/sequel/adapters/jdbc.rb +1 -0
  10. data/lib/sequel/adapters/mock.rb +0 -1
  11. data/lib/sequel/adapters/postgres.rb +1 -0
  12. data/lib/sequel/adapters/postgresql.rb +1 -0
  13. data/lib/sequel/adapters/shared/postgres.rb +3 -3
  14. data/lib/sequel/connection_pool/sharded_threaded.rb +5 -0
  15. data/lib/sequel/connection_pool/threaded.rb +9 -1
  16. data/lib/sequel/database/connecting.rb +1 -1
  17. data/lib/sequel/database/transactions.rb +2 -1
  18. data/lib/sequel/dataset/prepared_statements.rb +1 -1
  19. data/lib/sequel/extensions/constraint_validations.rb +12 -12
  20. data/lib/sequel/extensions/date_arithmetic.rb +0 -4
  21. data/lib/sequel/extensions/pagination.rb +14 -2
  22. data/lib/sequel/extensions/pg_enum.rb +2 -2
  23. data/lib/sequel/extensions/pg_hstore.rb +1 -1
  24. data/lib/sequel/extensions/pg_json_ops.rb +2 -2
  25. data/lib/sequel/plugins/csv_serializer.rb +2 -0
  26. data/lib/sequel/plugins/delay_add_association.rb +50 -0
  27. data/lib/sequel/plugins/list.rb +2 -2
  28. data/lib/sequel/plugins/nested_attributes.rb +8 -28
  29. data/lib/sequel/plugins/update_refresh.rb +50 -0
  30. data/lib/sequel/plugins/validate_associated.rb +55 -0
  31. data/lib/sequel/version.rb +1 -1
  32. data/spec/adapters/db2_spec.rb +29 -29
  33. data/spec/adapters/firebird_spec.rb +97 -103
  34. data/spec/adapters/informix_spec.rb +25 -25
  35. data/spec/adapters/mssql_spec.rb +156 -172
  36. data/spec/adapters/mysql_spec.rb +334 -359
  37. data/spec/adapters/oracle_spec.rb +67 -69
  38. data/spec/adapters/postgres_spec.rb +1298 -1249
  39. data/spec/adapters/spec_helper.rb +2 -35
  40. data/spec/adapters/sqlanywhere_spec.rb +39 -39
  41. data/spec/adapters/sqlite_spec.rb +203 -200
  42. data/spec/bin_spec.rb +57 -59
  43. data/spec/core/connection_pool_spec.rb +402 -401
  44. data/spec/core/database_spec.rb +953 -944
  45. data/spec/core/dataset_spec.rb +2178 -2168
  46. data/spec/core/deprecated_spec.rb +19 -19
  47. data/spec/core/expression_filters_spec.rb +415 -415
  48. data/spec/core/mock_adapter_spec.rb +212 -212
  49. data/spec/core/object_graph_spec.rb +73 -73
  50. data/spec/core/placeholder_literalizer_spec.rb +71 -71
  51. data/spec/core/schema_generator_spec.rb +44 -44
  52. data/spec/core/schema_spec.rb +470 -472
  53. data/spec/core/spec_helper.rb +5 -20
  54. data/spec/core/version_spec.rb +2 -2
  55. data/spec/core_extensions_spec.rb +320 -320
  56. data/spec/extensions/accessed_columns_spec.rb +12 -12
  57. data/spec/extensions/active_model_spec.rb +3 -3
  58. data/spec/extensions/after_initialize_spec.rb +2 -2
  59. data/spec/extensions/arbitrary_servers_spec.rb +23 -23
  60. data/spec/extensions/association_dependencies_spec.rb +34 -34
  61. data/spec/extensions/association_pks_spec.rb +98 -98
  62. data/spec/extensions/association_proxies_spec.rb +33 -33
  63. data/spec/extensions/auto_validations_spec.rb +46 -46
  64. data/spec/extensions/blacklist_security_spec.rb +19 -18
  65. data/spec/extensions/blank_spec.rb +36 -36
  66. data/spec/extensions/boolean_readers_spec.rb +36 -36
  67. data/spec/extensions/caching_spec.rb +82 -82
  68. data/spec/extensions/class_table_inheritance_spec.rb +72 -72
  69. data/spec/extensions/column_conflicts_spec.rb +19 -14
  70. data/spec/extensions/column_select_spec.rb +19 -19
  71. data/spec/extensions/columns_introspection_spec.rb +43 -43
  72. data/spec/extensions/composition_spec.rb +64 -64
  73. data/spec/extensions/connection_validator_spec.rb +92 -90
  74. data/spec/extensions/constraint_validations_plugin_spec.rb +92 -92
  75. data/spec/extensions/constraint_validations_spec.rb +80 -80
  76. data/spec/extensions/core_refinements_spec.rb +220 -220
  77. data/spec/extensions/csv_serializer_spec.rb +44 -44
  78. data/spec/extensions/current_datetime_timestamp_spec.rb +8 -8
  79. data/spec/extensions/dataset_associations_spec.rb +65 -65
  80. data/spec/extensions/dataset_source_alias_spec.rb +16 -16
  81. data/spec/extensions/date_arithmetic_spec.rb +51 -58
  82. data/spec/extensions/defaults_setter_spec.rb +19 -19
  83. data/spec/extensions/delay_add_association_spec.rb +52 -0
  84. data/spec/extensions/dirty_spec.rb +51 -51
  85. data/spec/extensions/eager_each_spec.rb +8 -8
  86. data/spec/extensions/empty_array_ignore_nulls_spec.rb +10 -10
  87. data/spec/extensions/error_splitter_spec.rb +2 -2
  88. data/spec/extensions/error_sql_spec.rb +4 -4
  89. data/spec/extensions/eval_inspect_spec.rb +3 -3
  90. data/spec/extensions/filter_having_spec.rb +8 -8
  91. data/spec/extensions/force_encoding_spec.rb +30 -30
  92. data/spec/extensions/from_block_spec.rb +7 -7
  93. data/spec/extensions/graph_each_spec.rb +19 -19
  94. data/spec/extensions/hash_aliases_spec.rb +5 -5
  95. data/spec/extensions/hook_class_methods_spec.rb +100 -100
  96. data/spec/extensions/inflector_spec.rb +54 -54
  97. data/spec/extensions/input_transformer_spec.rb +10 -10
  98. data/spec/extensions/insert_returning_select_spec.rb +8 -8
  99. data/spec/extensions/instance_filters_spec.rb +26 -26
  100. data/spec/extensions/instance_hooks_spec.rb +85 -85
  101. data/spec/extensions/json_serializer_spec.rb +68 -68
  102. data/spec/extensions/lazy_attributes_spec.rb +49 -49
  103. data/spec/extensions/list_spec.rb +77 -75
  104. data/spec/extensions/looser_typecasting_spec.rb +16 -16
  105. data/spec/extensions/many_through_many_spec.rb +627 -627
  106. data/spec/extensions/meta_def_spec.rb +7 -7
  107. data/spec/extensions/migration_spec.rb +217 -217
  108. data/spec/extensions/modification_detection_spec.rb +20 -20
  109. data/spec/extensions/mssql_optimistic_locking_spec.rb +21 -21
  110. data/spec/extensions/named_timezones_spec.rb +18 -18
  111. data/spec/extensions/nested_attributes_spec.rb +107 -107
  112. data/spec/extensions/null_dataset_spec.rb +24 -24
  113. data/spec/extensions/optimistic_locking_spec.rb +21 -21
  114. data/spec/extensions/pagination_spec.rb +52 -52
  115. data/spec/extensions/pg_array_associations_spec.rb +273 -273
  116. data/spec/extensions/pg_array_ops_spec.rb +52 -52
  117. data/spec/extensions/pg_array_spec.rb +152 -152
  118. data/spec/extensions/pg_enum_spec.rb +13 -13
  119. data/spec/extensions/pg_hstore_ops_spec.rb +63 -63
  120. data/spec/extensions/pg_hstore_spec.rb +84 -84
  121. data/spec/extensions/pg_inet_spec.rb +15 -15
  122. data/spec/extensions/pg_interval_spec.rb +29 -29
  123. data/spec/extensions/pg_json_ops_spec.rb +86 -84
  124. data/spec/extensions/pg_json_spec.rb +104 -104
  125. data/spec/extensions/pg_loose_count_spec.rb +6 -6
  126. data/spec/extensions/pg_range_ops_spec.rb +24 -24
  127. data/spec/extensions/pg_range_spec.rb +143 -143
  128. data/spec/extensions/pg_row_ops_spec.rb +14 -14
  129. data/spec/extensions/pg_row_plugin_spec.rb +12 -12
  130. data/spec/extensions/pg_row_spec.rb +118 -118
  131. data/spec/extensions/pg_static_cache_updater_spec.rb +28 -28
  132. data/spec/extensions/pg_typecast_on_load_spec.rb +21 -21
  133. data/spec/extensions/prepared_statements_associations_spec.rb +42 -42
  134. data/spec/extensions/prepared_statements_safe_spec.rb +18 -18
  135. data/spec/extensions/prepared_statements_spec.rb +28 -28
  136. data/spec/extensions/prepared_statements_with_pk_spec.rb +11 -11
  137. data/spec/extensions/pretty_table_spec.rb +16 -16
  138. data/spec/extensions/query_literals_spec.rb +37 -37
  139. data/spec/extensions/query_spec.rb +32 -32
  140. data/spec/extensions/rcte_tree_spec.rb +141 -141
  141. data/spec/extensions/round_timestamps_spec.rb +21 -21
  142. data/spec/extensions/schema_caching_spec.rb +8 -8
  143. data/spec/extensions/schema_dumper_spec.rb +78 -78
  144. data/spec/extensions/schema_spec.rb +31 -27
  145. data/spec/extensions/scissors_spec.rb +3 -3
  146. data/spec/extensions/select_remove_spec.rb +14 -14
  147. data/spec/extensions/sequel_3_dataset_methods_spec.rb +28 -28
  148. data/spec/extensions/serialization_modification_detection_spec.rb +33 -33
  149. data/spec/extensions/serialization_spec.rb +79 -78
  150. data/spec/extensions/server_block_spec.rb +17 -17
  151. data/spec/extensions/set_overrides_spec.rb +30 -30
  152. data/spec/extensions/sharding_spec.rb +65 -65
  153. data/spec/extensions/shared_caching_spec.rb +29 -29
  154. data/spec/extensions/single_table_inheritance_spec.rb +79 -79
  155. data/spec/extensions/skip_create_refresh_spec.rb +3 -3
  156. data/spec/extensions/spec_helper.rb +4 -29
  157. data/spec/extensions/split_array_nil_spec.rb +9 -9
  158. data/spec/extensions/split_values_spec.rb +7 -7
  159. data/spec/extensions/sql_expr_spec.rb +32 -32
  160. data/spec/extensions/static_cache_spec.rb +123 -123
  161. data/spec/extensions/string_date_time_spec.rb +34 -34
  162. data/spec/extensions/string_stripper_spec.rb +15 -15
  163. data/spec/extensions/subclasses_spec.rb +31 -31
  164. data/spec/extensions/table_select_spec.rb +15 -15
  165. data/spec/extensions/tactical_eager_loading_spec.rb +23 -23
  166. data/spec/extensions/thread_local_timezones_spec.rb +13 -13
  167. data/spec/extensions/timestamps_spec.rb +40 -40
  168. data/spec/extensions/to_dot_spec.rb +34 -34
  169. data/spec/extensions/touch_spec.rb +52 -52
  170. data/spec/extensions/tree_spec.rb +72 -72
  171. data/spec/extensions/typecast_on_load_spec.rb +25 -25
  172. data/spec/extensions/unlimited_update_spec.rb +2 -2
  173. data/spec/extensions/update_or_create_spec.rb +36 -36
  174. data/spec/extensions/update_primary_key_spec.rb +35 -35
  175. data/spec/extensions/update_refresh_spec.rb +41 -0
  176. data/spec/extensions/validate_associated_spec.rb +52 -0
  177. data/spec/extensions/validation_class_methods_spec.rb +314 -317
  178. data/spec/extensions/validation_helpers_spec.rb +195 -195
  179. data/spec/extensions/xml_serializer_spec.rb +48 -48
  180. data/spec/guards_helper.rb +55 -0
  181. data/spec/integration/associations_test.rb +1089 -1088
  182. data/spec/integration/database_test.rb +29 -29
  183. data/spec/integration/dataset_test.rb +661 -661
  184. data/spec/integration/eager_loader_test.rb +147 -147
  185. data/spec/integration/migrator_test.rb +122 -122
  186. data/spec/integration/model_test.rb +70 -70
  187. data/spec/integration/plugin_test.rb +682 -640
  188. data/spec/integration/prepared_statement_test.rb +172 -172
  189. data/spec/integration/schema_test.rb +245 -245
  190. data/spec/integration/spec_helper.rb +1 -64
  191. data/spec/integration/timezone_test.rb +17 -17
  192. data/spec/integration/transaction_test.rb +87 -87
  193. data/spec/integration/type_test.rb +33 -33
  194. data/spec/model/association_reflection_spec.rb +130 -121
  195. data/spec/model/associations_spec.rb +1112 -1113
  196. data/spec/model/base_spec.rb +197 -196
  197. data/spec/model/class_dataset_methods_spec.rb +118 -118
  198. data/spec/model/dataset_methods_spec.rb +49 -49
  199. data/spec/model/eager_loading_spec.rb +705 -702
  200. data/spec/model/hooks_spec.rb +169 -168
  201. data/spec/model/inflector_spec.rb +5 -5
  202. data/spec/model/model_spec.rb +287 -297
  203. data/spec/model/plugins_spec.rb +47 -47
  204. data/spec/model/record_spec.rb +534 -535
  205. data/spec/model/spec_helper.rb +3 -21
  206. data/spec/model/validations_spec.rb +72 -70
  207. data/spec/spec_config.rb +8 -0
  208. metadata +41 -9
  209. data/lib/sequel/adapters/fdbsql.rb +0 -286
  210. data/lib/sequel/adapters/jdbc/fdbsql.rb +0 -66
  211. data/lib/sequel/adapters/openbase.rb +0 -54
  212. data/lib/sequel/adapters/shared/fdbsql.rb +0 -550
  213. data/spec/adapters/fdbsql_spec.rb +0 -429
  214. data/spec/rspec_helper.rb +0 -22
@@ -17,37 +17,37 @@ describe "pg_json extension" do
17
17
  end
18
18
 
19
19
  it "should parse json strings correctly" do
20
- @m.parse_json('[]').should be_a_kind_of(@ac)
21
- @m.parse_json('[]').to_a.should == []
22
- @m.parse_json('[1]').to_a.should == [1]
23
- @m.parse_json('[1, 2]').to_a.should == [1, 2]
24
- @m.parse_json('[1, [2], {"a": "b"}]').to_a.should == [1, [2], {'a'=>'b'}]
25
- @m.parse_json('{}').should be_a_kind_of(@hc)
26
- @m.parse_json('{}').to_hash.should == {}
27
- @m.parse_json('{"a": "b"}').to_hash.should == {'a'=>'b'}
28
- @m.parse_json('{"a": "b", "c": [1, 2, 3]}').to_hash.should == {'a'=>'b', 'c'=>[1, 2, 3]}
29
- @m.parse_json('{"a": "b", "c": {"d": "e"}}').to_hash.should == {'a'=>'b', 'c'=>{'d'=>'e'}}
20
+ @m.parse_json('[]').class.must_equal(@ac)
21
+ @m.parse_json('[]').to_a.must_equal []
22
+ @m.parse_json('[1]').to_a.must_equal [1]
23
+ @m.parse_json('[1, 2]').to_a.must_equal [1, 2]
24
+ @m.parse_json('[1, [2], {"a": "b"}]').to_a.must_equal [1, [2], {'a'=>'b'}]
25
+ @m.parse_json('{}').class.must_equal(@hc)
26
+ @m.parse_json('{}').to_hash.must_equal({})
27
+ @m.parse_json('{"a": "b"}').to_hash.must_equal('a'=>'b')
28
+ @m.parse_json('{"a": "b", "c": [1, 2, 3]}').to_hash.must_equal('a'=>'b', 'c'=>[1, 2, 3])
29
+ @m.parse_json('{"a": "b", "c": {"d": "e"}}').to_hash.must_equal('a'=>'b', 'c'=>{'d'=>'e'})
30
30
  end
31
31
 
32
32
  it "should parse json and non-json plain strings, integers, and floats correctly in db_parse_json" do
33
- @m.db_parse_json('{"a": "b", "c": {"d": "e"}}').to_hash.should == {'a'=>'b', 'c'=>{'d'=>'e'}}
34
- @m.db_parse_json('[1, [2], {"a": "b"}]').to_a.should == [1, [2], {'a'=>'b'}]
35
- @m.db_parse_json('1').should == 1
36
- @m.db_parse_json('"b"').should == 'b'
37
- @m.db_parse_json('1.1').should == 1.1
33
+ @m.db_parse_json('{"a": "b", "c": {"d": "e"}}').to_hash.must_equal('a'=>'b', 'c'=>{'d'=>'e'})
34
+ @m.db_parse_json('[1, [2], {"a": "b"}]').to_a.must_equal [1, [2], {'a'=>'b'}]
35
+ @m.db_parse_json('1').must_equal 1
36
+ @m.db_parse_json('"b"').must_equal 'b'
37
+ @m.db_parse_json('1.1').must_equal 1.1
38
38
  end
39
39
 
40
40
  it "should parse json and non-json plain strings, integers, and floats correctly in db_parse_jsonb" do
41
- @m.db_parse_jsonb('{"a": "b", "c": {"d": "e"}}').to_hash.should == {'a'=>'b', 'c'=>{'d'=>'e'}}
42
- @m.db_parse_jsonb('[1, [2], {"a": "b"}]').to_a.should == [1, [2], {'a'=>'b'}]
43
- @m.db_parse_jsonb('1').should == 1
44
- @m.db_parse_jsonb('"b"').should == 'b'
45
- @m.db_parse_jsonb('1.1').should == 1.1
41
+ @m.db_parse_jsonb('{"a": "b", "c": {"d": "e"}}').to_hash.must_equal('a'=>'b', 'c'=>{'d'=>'e'})
42
+ @m.db_parse_jsonb('[1, [2], {"a": "b"}]').to_a.must_equal [1, [2], {'a'=>'b'}]
43
+ @m.db_parse_jsonb('1').must_equal 1
44
+ @m.db_parse_jsonb('"b"').must_equal 'b'
45
+ @m.db_parse_jsonb('1.1').must_equal 1.1
46
46
  end
47
47
 
48
48
  it "should raise an error when attempting to parse invalid json" do
49
- proc{@m.parse_json('')}.should raise_error(Sequel::InvalidValue)
50
- proc{@m.parse_json('1')}.should raise_error(Sequel::InvalidValue)
49
+ proc{@m.parse_json('')}.must_raise(Sequel::InvalidValue)
50
+ proc{@m.parse_json('1')}.must_raise(Sequel::InvalidValue)
51
51
 
52
52
  begin
53
53
  Sequel.instance_eval do
@@ -56,12 +56,12 @@ describe "pg_json extension" do
56
56
  {'1'=>1, "'a'"=>'a', 'true'=>true, 'false'=>false, 'null'=>nil, 'o'=>Object.new}.fetch(v){pj(v)}
57
57
  end
58
58
  end
59
- @m.parse_json('1').should == 1
60
- @m.parse_json("'a'").should == 'a'
61
- @m.parse_json('true').should == true
62
- @m.parse_json('false').should == false
63
- @m.parse_json('null').should == nil
64
- proc{@m.parse_json('o')}.should raise_error(Sequel::InvalidValue)
59
+ @m.parse_json('1').must_equal 1
60
+ @m.parse_json("'a'").must_equal 'a'
61
+ @m.parse_json('true').must_equal true
62
+ @m.parse_json('false').must_equal false
63
+ @m.parse_json('null').must_equal nil
64
+ proc{@m.parse_json('o')}.must_raise(Sequel::InvalidValue)
65
65
  ensure
66
66
  Sequel.instance_eval do
67
67
  alias parse_json pj
@@ -70,149 +70,149 @@ describe "pg_json extension" do
70
70
  end
71
71
 
72
72
  it "should literalize JSONHash and JSONArray to strings correctly" do
73
- @db.literal(Sequel.pg_json([])).should == "'[]'::json"
74
- @db.literal(Sequel.pg_json([1, [2], {'a'=>'b'}])).should == "'[1,[2],{\"a\":\"b\"}]'::json"
75
- @db.literal(Sequel.pg_json({})).should == "'{}'::json"
76
- @db.literal(Sequel.pg_json('a'=>'b')).should == "'{\"a\":\"b\"}'::json"
73
+ @db.literal(Sequel.pg_json([])).must_equal "'[]'::json"
74
+ @db.literal(Sequel.pg_json([1, [2], {'a'=>'b'}])).must_equal "'[1,[2],{\"a\":\"b\"}]'::json"
75
+ @db.literal(Sequel.pg_json({})).must_equal "'{}'::json"
76
+ @db.literal(Sequel.pg_json('a'=>'b')).must_equal "'{\"a\":\"b\"}'::json"
77
77
  end
78
78
 
79
79
  it "should literalize JSONHash and JSONArray to strings correctly" do
80
- @db.literal(Sequel.pg_jsonb([])).should == "'[]'::jsonb"
81
- @db.literal(Sequel.pg_jsonb([1, [2], {'a'=>'b'}])).should == "'[1,[2],{\"a\":\"b\"}]'::jsonb"
82
- @db.literal(Sequel.pg_jsonb({})).should == "'{}'::jsonb"
83
- @db.literal(Sequel.pg_jsonb('a'=>'b')).should == "'{\"a\":\"b\"}'::jsonb"
80
+ @db.literal(Sequel.pg_jsonb([])).must_equal "'[]'::jsonb"
81
+ @db.literal(Sequel.pg_jsonb([1, [2], {'a'=>'b'}])).must_equal "'[1,[2],{\"a\":\"b\"}]'::jsonb"
82
+ @db.literal(Sequel.pg_jsonb({})).must_equal "'{}'::jsonb"
83
+ @db.literal(Sequel.pg_jsonb('a'=>'b')).must_equal "'{\"a\":\"b\"}'::jsonb"
84
84
  end
85
85
 
86
86
  it "should have Sequel.pg_json return JSONHash and JSONArray as is" do
87
87
  a = Sequel.pg_json({})
88
- Sequel.pg_json(a).should equal(a)
88
+ Sequel.pg_json(a).object_id.must_equal(a.object_id)
89
89
  a = Sequel.pg_json([])
90
- Sequel.pg_json(a).should equal(a)
90
+ Sequel.pg_json(a).object_id.must_equal(a.object_id)
91
91
  end
92
92
 
93
93
  it "should have Sequel.pg_json convert jsonb values" do
94
94
  a = {}
95
95
  v = Sequel.pg_json(Sequel.pg_jsonb(a))
96
- v.to_hash.should equal(a)
97
- v.should be_a_kind_of(@hc)
96
+ v.to_hash.must_be_same_as(a)
97
+ v.class.must_equal(@hc)
98
98
 
99
99
  a = []
100
100
  v = Sequel.pg_json(Sequel.pg_jsonb(a))
101
- v.to_a.should equal(a)
102
- v.should be_a_kind_of(@ac)
101
+ v.to_a.must_be_same_as(a)
102
+ v.class.must_equal(@ac)
103
103
  end
104
104
 
105
105
  it "should have Sequel.pg_jsonb return JSONBHash and JSONBArray as is" do
106
106
  a = Sequel.pg_jsonb({})
107
- Sequel.pg_jsonb(a).should equal(a)
107
+ Sequel.pg_jsonb(a).object_id.must_equal(a.object_id)
108
108
  a = Sequel.pg_jsonb([])
109
- Sequel.pg_jsonb(a).should equal(a)
109
+ Sequel.pg_jsonb(a).object_id.must_equal(a.object_id)
110
110
  end
111
111
 
112
112
  it "should have Sequel.pg_jsonb convert json values" do
113
113
  a = {}
114
114
  v = Sequel.pg_jsonb(Sequel.pg_json(a))
115
- v.to_hash.should equal(a)
116
- v.should be_a_kind_of(@bhc)
115
+ v.to_hash.must_be_same_as(a)
116
+ v.class.must_equal(@bhc)
117
117
 
118
118
  a = []
119
119
  v = Sequel.pg_jsonb(Sequel.pg_json(a))
120
- v.to_a.should equal(a)
121
- v.should be_a_kind_of(@bac)
120
+ v.to_a.must_be_same_as(a)
121
+ v.class.must_equal(@bac)
122
122
  end
123
123
 
124
124
  it "should have JSONHashBase#to_hash method for getting underlying hash" do
125
- Sequel.pg_json({}).to_hash.should be_a_kind_of(Hash)
126
- Sequel.pg_jsonb({}).to_hash.should be_a_kind_of(Hash)
125
+ Sequel.pg_json({}).to_hash.must_be_kind_of(Hash)
126
+ Sequel.pg_jsonb({}).to_hash.must_be_kind_of(Hash)
127
127
  end
128
128
 
129
129
  it "should allow aliasing json objects" do
130
- @db.literal(Sequel.pg_json({}).as(:a)).should == "'{}'::json AS a"
131
- @db.literal(Sequel.pg_json([]).as(:a)).should == "'[]'::json AS a"
132
- @db.literal(Sequel.pg_jsonb({}).as(:a)).should == "'{}'::jsonb AS a"
133
- @db.literal(Sequel.pg_jsonb([]).as(:a)).should == "'[]'::jsonb AS a"
130
+ @db.literal(Sequel.pg_json({}).as(:a)).must_equal "'{}'::json AS a"
131
+ @db.literal(Sequel.pg_json([]).as(:a)).must_equal "'[]'::json AS a"
132
+ @db.literal(Sequel.pg_jsonb({}).as(:a)).must_equal "'{}'::jsonb AS a"
133
+ @db.literal(Sequel.pg_jsonb([]).as(:a)).must_equal "'[]'::jsonb AS a"
134
134
  end
135
135
 
136
136
  it "should allow casting json objects" do
137
- @db.literal(Sequel.pg_json({}).cast(String)).should == "CAST('{}'::json AS text)"
138
- @db.literal(Sequel.pg_json([]).cast(String)).should == "CAST('[]'::json AS text)"
139
- @db.literal(Sequel.pg_jsonb({}).cast(String)).should == "CAST('{}'::jsonb AS text)"
140
- @db.literal(Sequel.pg_jsonb([]).cast(String)).should == "CAST('[]'::jsonb AS text)"
137
+ @db.literal(Sequel.pg_json({}).cast(String)).must_equal "CAST('{}'::json AS text)"
138
+ @db.literal(Sequel.pg_json([]).cast(String)).must_equal "CAST('[]'::json AS text)"
139
+ @db.literal(Sequel.pg_jsonb({}).cast(String)).must_equal "CAST('{}'::jsonb AS text)"
140
+ @db.literal(Sequel.pg_jsonb([]).cast(String)).must_equal "CAST('[]'::jsonb AS text)"
141
141
  end
142
142
 
143
143
  it "should have JSONArrayBase#to_a method for getting underlying array" do
144
- Sequel.pg_json([]).to_a.should be_a_kind_of(Array)
145
- Sequel.pg_jsonb([]).to_a.should be_a_kind_of(Array)
144
+ Sequel.pg_json([]).to_a.must_be_kind_of(Array)
145
+ Sequel.pg_jsonb([]).to_a.must_be_kind_of(Array)
146
146
  end
147
147
 
148
148
  it "should support using JSONHashBase and JSONArrayBase as bound variables" do
149
- @db.bound_variable_arg(1, nil).should == 1
150
- @db.bound_variable_arg(Sequel.pg_json([1]), nil).should == '[1]'
151
- @db.bound_variable_arg(Sequel.pg_json('a'=>'b'), nil).should == '{"a":"b"}'
152
- @db.bound_variable_arg(Sequel.pg_jsonb([1]), nil).should == '[1]'
153
- @db.bound_variable_arg(Sequel.pg_jsonb('a'=>'b'), nil).should == '{"a":"b"}'
149
+ @db.bound_variable_arg(1, nil).must_equal 1
150
+ @db.bound_variable_arg(Sequel.pg_json([1]), nil).must_equal '[1]'
151
+ @db.bound_variable_arg(Sequel.pg_json('a'=>'b'), nil).must_equal '{"a":"b"}'
152
+ @db.bound_variable_arg(Sequel.pg_jsonb([1]), nil).must_equal '[1]'
153
+ @db.bound_variable_arg(Sequel.pg_jsonb('a'=>'b'), nil).must_equal '{"a":"b"}'
154
154
  end
155
155
 
156
156
  it "should support using json[] and jsonb[] types in bound variables" do
157
- @db.bound_variable_arg(Sequel.pg_array([Sequel.pg_json([{"a"=>1}]), Sequel.pg_json("b"=>[1, 2])]), nil).should == '{"[{\\"a\\":1}]","{\\"b\\":[1,2]}"}'
158
- @db.bound_variable_arg(Sequel.pg_array([Sequel.pg_jsonb([{"a"=>1}]), Sequel.pg_jsonb("b"=>[1, 2])]), nil).should == '{"[{\\"a\\":1}]","{\\"b\\":[1,2]}"}'
157
+ @db.bound_variable_arg(Sequel.pg_array([Sequel.pg_json([{"a"=>1}]), Sequel.pg_json("b"=>[1, 2])]), nil).must_equal '{"[{\\"a\\":1}]","{\\"b\\":[1,2]}"}'
158
+ @db.bound_variable_arg(Sequel.pg_array([Sequel.pg_jsonb([{"a"=>1}]), Sequel.pg_jsonb("b"=>[1, 2])]), nil).must_equal '{"[{\\"a\\":1}]","{\\"b\\":[1,2]}"}'
159
159
  end
160
160
 
161
161
  it "should parse json type from the schema correctly" do
162
162
  @db.fetch = [{:name=>'id', :db_type=>'integer'}, {:name=>'i', :db_type=>'json'}]
163
- @db.schema(:items).map{|e| e[1][:type]}.should == [:integer, :json]
163
+ @db.schema(:items).map{|e| e[1][:type]}.must_equal [:integer, :json]
164
164
  end
165
165
 
166
166
  it "should parse json type from the schema correctly" do
167
167
  @db.fetch = [{:name=>'id', :db_type=>'integer'}, {:name=>'i', :db_type=>'jsonb'}]
168
- @db.schema(:items).map{|e| e[1][:type]}.should == [:integer, :jsonb]
168
+ @db.schema(:items).map{|e| e[1][:type]}.must_equal [:integer, :jsonb]
169
169
  end
170
170
 
171
171
  it "should support typecasting for the json type" do
172
172
  h = Sequel.pg_json(1=>2)
173
173
  a = Sequel.pg_json([1])
174
- @db.typecast_value(:json, h).should equal(h)
175
- @db.typecast_value(:json, h.to_hash).should == h
176
- @db.typecast_value(:json, h.to_hash).should be_a_kind_of(@hc)
177
- @db.typecast_value(:json, Sequel.pg_jsonb(h)).should == h
178
- @db.typecast_value(:json, Sequel.pg_jsonb(h)).should be_a_kind_of(@hc)
179
- @db.typecast_value(:json, a).should equal(a)
180
- @db.typecast_value(:json, a.to_a).should == a
181
- @db.typecast_value(:json, a.to_a).should be_a_kind_of(@ac)
182
- @db.typecast_value(:json, Sequel.pg_jsonb(a)).should == a
183
- @db.typecast_value(:json, Sequel.pg_jsonb(a)).should be_a_kind_of(@ac)
184
- @db.typecast_value(:json, '[]').should == Sequel.pg_json([])
185
- @db.typecast_value(:json, '[]').should be_a_kind_of(@ac)
186
- @db.typecast_value(:json, '{"a": "b"}').should == Sequel.pg_json("a"=>"b")
187
- @db.typecast_value(:json, '{"a": "b"}').should be_a_kind_of(@hc)
188
- proc{@db.typecast_value(:json, '')}.should raise_error(Sequel::InvalidValue)
189
- proc{@db.typecast_value(:json, 1)}.should raise_error(Sequel::InvalidValue)
174
+ @db.typecast_value(:json, h).object_id.must_equal(h.object_id)
175
+ @db.typecast_value(:json, h.to_hash).must_equal h
176
+ @db.typecast_value(:json, h.to_hash).class.must_equal(@hc)
177
+ @db.typecast_value(:json, Sequel.pg_jsonb(h)).must_equal h
178
+ @db.typecast_value(:json, Sequel.pg_jsonb(h)).class.must_equal(@hc)
179
+ @db.typecast_value(:json, a).object_id.must_equal(a.object_id)
180
+ @db.typecast_value(:json, a.to_a).must_equal a
181
+ @db.typecast_value(:json, a.to_a).class.must_equal(@ac)
182
+ @db.typecast_value(:json, Sequel.pg_jsonb(a)).must_equal a
183
+ @db.typecast_value(:json, Sequel.pg_jsonb(a)).class.must_equal(@ac)
184
+ @db.typecast_value(:json, '[]').must_equal Sequel.pg_json([])
185
+ @db.typecast_value(:json, '[]').class.must_equal(@ac)
186
+ @db.typecast_value(:json, '{"a": "b"}').must_equal Sequel.pg_json("a"=>"b")
187
+ @db.typecast_value(:json, '{"a": "b"}').class.must_equal(@hc)
188
+ proc{@db.typecast_value(:json, '')}.must_raise(Sequel::InvalidValue)
189
+ proc{@db.typecast_value(:json, 1)}.must_raise(Sequel::InvalidValue)
190
190
  end
191
191
 
192
192
  it "should support typecasting for the jsonb type" do
193
193
  h = Sequel.pg_jsonb(1=>2)
194
194
  a = Sequel.pg_jsonb([1])
195
- @db.typecast_value(:jsonb, h).should equal(h)
196
- @db.typecast_value(:jsonb, h.to_hash).should == h
197
- @db.typecast_value(:jsonb, h.to_hash).should be_a_kind_of(@bhc)
198
- @db.typecast_value(:jsonb, Sequel.pg_json(h)).should == h
199
- @db.typecast_value(:jsonb, Sequel.pg_json(h)).should be_a_kind_of(@bhc)
200
- @db.typecast_value(:jsonb, a).should equal(a)
201
- @db.typecast_value(:jsonb, a.to_a).should == a
202
- @db.typecast_value(:jsonb, a.to_a).should be_a_kind_of(@bac)
203
- @db.typecast_value(:jsonb, Sequel.pg_json(a)).should == a
204
- @db.typecast_value(:jsonb, Sequel.pg_json(a)).should be_a_kind_of(@bac)
205
- @db.typecast_value(:jsonb, '[]').should == Sequel.pg_jsonb([])
206
- @db.typecast_value(:jsonb, '[]').should be_a_kind_of(@bac)
207
- @db.typecast_value(:jsonb, '{"a": "b"}').should == Sequel.pg_jsonb("a"=>"b")
208
- @db.typecast_value(:jsonb, '{"a": "b"}').should be_a_kind_of(@bhc)
209
- proc{@db.typecast_value(:jsonb, '')}.should raise_error(Sequel::InvalidValue)
210
- proc{@db.typecast_value(:jsonb, 1)}.should raise_error(Sequel::InvalidValue)
195
+ @db.typecast_value(:jsonb, h).object_id.must_equal(h.object_id)
196
+ @db.typecast_value(:jsonb, h.to_hash).must_equal h
197
+ @db.typecast_value(:jsonb, h.to_hash).class.must_equal(@bhc)
198
+ @db.typecast_value(:jsonb, Sequel.pg_json(h)).must_equal h
199
+ @db.typecast_value(:jsonb, Sequel.pg_json(h)).class.must_equal(@bhc)
200
+ @db.typecast_value(:jsonb, a).object_id.must_equal(a.object_id)
201
+ @db.typecast_value(:jsonb, a.to_a).must_equal a
202
+ @db.typecast_value(:jsonb, a.to_a).class.must_equal(@bac)
203
+ @db.typecast_value(:jsonb, Sequel.pg_json(a)).must_equal a
204
+ @db.typecast_value(:jsonb, Sequel.pg_json(a)).class.must_equal(@bac)
205
+ @db.typecast_value(:jsonb, '[]').must_equal Sequel.pg_jsonb([])
206
+ @db.typecast_value(:jsonb, '[]').class.must_equal(@bac)
207
+ @db.typecast_value(:jsonb, '{"a": "b"}').must_equal Sequel.pg_jsonb("a"=>"b")
208
+ @db.typecast_value(:jsonb, '{"a": "b"}').class.must_equal(@bhc)
209
+ proc{@db.typecast_value(:jsonb, '')}.must_raise(Sequel::InvalidValue)
210
+ proc{@db.typecast_value(:jsonb, 1)}.must_raise(Sequel::InvalidValue)
211
211
  end
212
212
 
213
213
  it "should return correct results for Database#schema_type_class" do
214
- @db.schema_type_class(:json).should == [Sequel::Postgres::JSONHash, Sequel::Postgres::JSONArray]
215
- @db.schema_type_class(:jsonb).should == [Sequel::Postgres::JSONBHash, Sequel::Postgres::JSONBArray]
216
- @db.schema_type_class(:integer).should == Integer
214
+ @db.schema_type_class(:json).must_equal [Sequel::Postgres::JSONHash, Sequel::Postgres::JSONArray]
215
+ @db.schema_type_class(:jsonb).must_equal [Sequel::Postgres::JSONBHash, Sequel::Postgres::JSONBArray]
216
+ @db.schema_type_class(:integer).must_equal Integer
217
217
  end
218
218
  end
@@ -5,13 +5,13 @@ describe "pg_loose_count extension" do
5
5
  @db = Sequel.mock(:host=>'postgres', :fetch=>{:v=>1}).extension(:pg_loose_count)
6
6
  end
7
7
 
8
- specify "should add loose_count method getting fast count for entire table using table statistics" do
9
- @db.loose_count(:a).should == 1
10
- @db.sqls.should == ["SELECT CAST(reltuples AS integer) AS v FROM pg_class WHERE (oid = CAST(CAST('a' AS regclass) AS oid)) LIMIT 1"]
8
+ it "should add loose_count method getting fast count for entire table using table statistics" do
9
+ @db.loose_count(:a).must_equal 1
10
+ @db.sqls.must_equal ["SELECT CAST(reltuples AS integer) AS v FROM pg_class WHERE (oid = CAST(CAST('a' AS regclass) AS oid)) LIMIT 1"]
11
11
  end
12
12
 
13
- specify "should support schema qualified tables" do
14
- @db.loose_count(:a__b).should == 1
15
- @db.sqls.should == ["SELECT CAST(reltuples AS integer) AS v FROM pg_class WHERE (oid = CAST(CAST('a.b' AS regclass) AS oid)) LIMIT 1"]
13
+ it "should support schema qualified tables" do
14
+ @db.loose_count(:a__b).must_equal 1
15
+ @db.sqls.must_equal ["SELECT CAST(reltuples AS integer) AS v FROM pg_class WHERE (oid = CAST(CAST('a.b' AS regclass) AS oid)) LIMIT 1"]
16
16
  end
17
17
  end
@@ -9,50 +9,50 @@ describe "Sequel::Postgres::RangeOp" do
9
9
  end
10
10
 
11
11
  it "#pg_range should return self" do
12
- @h.pg_range.should equal(@h)
12
+ @h.pg_range.must_be_same_as(@h)
13
13
  end
14
14
 
15
15
  it "Sequel.pg_range_op should return argument if already a RangeOp" do
16
- Sequel.pg_range_op(@h).should equal(@h)
16
+ Sequel.pg_range_op(@h).must_be_same_as(@h)
17
17
  end
18
18
 
19
19
  it "Sequel.pg_range should return a new RangeOp if not given a range" do
20
- @ds.literal(Sequel.pg_range(:h).lower).should == "lower(h)"
20
+ @ds.literal(Sequel.pg_range(:h).lower).must_equal "lower(h)"
21
21
  end
22
22
 
23
23
  it "#pg_range should return a RangeOp for literal strings, and expressions" do
24
- @ds.literal(Sequel.function(:b, :h).pg_range.lower).should == "lower(b(h))"
25
- @ds.literal(Sequel.lit('h').pg_range.lower).should == "lower(h)"
24
+ @ds.literal(Sequel.function(:b, :h).pg_range.lower).must_equal "lower(b(h))"
25
+ @ds.literal(Sequel.lit('h').pg_range.lower).must_equal "lower(h)"
26
26
  end
27
27
 
28
28
  it "PGRange#op should return a RangeOp" do
29
- @ds.literal(Sequel.pg_range(1..2, :numrange).op.lower).should == "lower('[1,2]'::numrange)"
29
+ @ds.literal(Sequel.pg_range(1..2, :numrange).op.lower).must_equal "lower('[1,2]'::numrange)"
30
30
  end
31
31
 
32
32
  it "should define methods for all of the PostgreSQL range operators" do
33
- @ds.literal(@h.contains(@h)).should == "(h @> h)"
34
- @ds.literal(@h.contained_by(@h)).should == "(h <@ h)"
35
- @ds.literal(@h.overlaps(@h)).should == "(h && h)"
36
- @ds.literal(@h.left_of(@h)).should == "(h << h)"
37
- @ds.literal(@h.right_of(@h)).should == "(h >> h)"
38
- @ds.literal(@h.ends_before(@h)).should == "(h &< h)"
39
- @ds.literal(@h.starts_after(@h)).should == "(h &> h)"
40
- @ds.literal(@h.adjacent_to(@h)).should == "(h -|- h)"
33
+ @ds.literal(@h.contains(@h)).must_equal "(h @> h)"
34
+ @ds.literal(@h.contained_by(@h)).must_equal "(h <@ h)"
35
+ @ds.literal(@h.overlaps(@h)).must_equal "(h && h)"
36
+ @ds.literal(@h.left_of(@h)).must_equal "(h << h)"
37
+ @ds.literal(@h.right_of(@h)).must_equal "(h >> h)"
38
+ @ds.literal(@h.ends_before(@h)).must_equal "(h &< h)"
39
+ @ds.literal(@h.starts_after(@h)).must_equal "(h &> h)"
40
+ @ds.literal(@h.adjacent_to(@h)).must_equal "(h -|- h)"
41
41
  end
42
42
 
43
43
  it "should define methods for all of the PostgreSQL range functions" do
44
- @ds.literal(@h.lower).should == "lower(h)"
45
- @ds.literal(@h.upper).should == "upper(h)"
46
- @ds.literal(@h.isempty).should == "isempty(h)"
47
- @ds.literal(@h.lower_inc).should == "lower_inc(h)"
48
- @ds.literal(@h.upper_inc).should == "upper_inc(h)"
49
- @ds.literal(@h.lower_inf).should == "lower_inf(h)"
50
- @ds.literal(@h.upper_inf).should == "upper_inf(h)"
44
+ @ds.literal(@h.lower).must_equal "lower(h)"
45
+ @ds.literal(@h.upper).must_equal "upper(h)"
46
+ @ds.literal(@h.isempty).must_equal "isempty(h)"
47
+ @ds.literal(@h.lower_inc).must_equal "lower_inc(h)"
48
+ @ds.literal(@h.upper_inc).must_equal "upper_inc(h)"
49
+ @ds.literal(@h.lower_inf).must_equal "lower_inf(h)"
50
+ @ds.literal(@h.upper_inf).must_equal "upper_inf(h)"
51
51
  end
52
52
 
53
53
  it "+ - * operators should be defined and return a RangeOp" do
54
- @ds.literal((@h + @h).lower).should == "lower((h + h))"
55
- @ds.literal((@h * @h).lower).should == "lower((h * h))"
56
- @ds.literal((@h - @h).lower).should == "lower((h - h))"
54
+ @ds.literal((@h + @h).lower).must_equal "lower((h + h))"
55
+ @ds.literal((@h * @h).lower).must_equal "lower((h * h))"
56
+ @ds.literal((@h - @h).lower).must_equal "lower((h - h))"
57
57
  end
58
58
  end
@@ -18,59 +18,59 @@ describe "pg_range extension" do
18
18
  end
19
19
 
20
20
  it "should literalize Range instances to strings correctly" do
21
- @db.literal(Date.new(2011, 1, 2)...Date.new(2011, 3, 2)).should == "'[2011-01-02,2011-03-02)'"
22
- @db.literal(Time.local(2011, 1, 2, 10, 20, 30)...Time.local(2011, 2, 3, 10, 20, 30)).should == "'[2011-01-02 10:20:30,2011-02-03 10:20:30)'"
23
- @db.literal(DateTime.new(2011, 1, 2, 10, 20, 30)...DateTime.new(2011, 2, 3, 10, 20, 30)).should == "'[2011-01-02 10:20:30,2011-02-03 10:20:30)'"
24
- @db.literal(DateTime.new(2011, 1, 2, 10, 20, 30)...DateTime.new(2011, 2, 3, 10, 20, 30)).should == "'[2011-01-02 10:20:30,2011-02-03 10:20:30)'"
25
- @db.literal(1..2).should == "'[1,2]'"
26
- @db.literal(1.0..2.0).should == "'[1.0,2.0]'"
27
- @db.literal(BigDecimal.new('1.0')..BigDecimal.new('2.0')).should == "'[1.0,2.0]'"
28
- @db.literal(Sequel.lit('a')..Sequel.lit('z')).should == "'[a,z]'"
29
- @db.literal(''..'()[]",\\2').should == "'[\"\",\\(\\)\\[\\]\\\"\\,\\\\2]'"
21
+ @db.literal(Date.new(2011, 1, 2)...Date.new(2011, 3, 2)).must_equal "'[2011-01-02,2011-03-02)'"
22
+ @db.literal(Time.local(2011, 1, 2, 10, 20, 30)...Time.local(2011, 2, 3, 10, 20, 30)).must_equal "'[2011-01-02 10:20:30,2011-02-03 10:20:30)'"
23
+ @db.literal(DateTime.new(2011, 1, 2, 10, 20, 30)...DateTime.new(2011, 2, 3, 10, 20, 30)).must_equal "'[2011-01-02 10:20:30,2011-02-03 10:20:30)'"
24
+ @db.literal(DateTime.new(2011, 1, 2, 10, 20, 30)...DateTime.new(2011, 2, 3, 10, 20, 30)).must_equal "'[2011-01-02 10:20:30,2011-02-03 10:20:30)'"
25
+ @db.literal(1..2).must_equal "'[1,2]'"
26
+ @db.literal(1.0..2.0).must_equal "'[1.0,2.0]'"
27
+ @db.literal(BigDecimal.new('1.0')..BigDecimal.new('2.0')).must_equal "'[1.0,2.0]'"
28
+ @db.literal(Sequel.lit('a')..Sequel.lit('z')).must_equal "'[a,z]'"
29
+ @db.literal(''..'()[]",\\2').must_equal "'[\"\",\\(\\)\\[\\]\\\"\\,\\\\2]'"
30
30
  end
31
31
 
32
32
  it "should literalize PGRange instances to strings correctly" do
33
- @db.literal(@R.new(1, 2)).should == "'[1,2]'"
34
- @db.literal(@R.new(true, false)).should == "'[true,false]'"
35
- @db.literal(@R.new(1, 2, :exclude_begin=>true)).should == "'(1,2]'"
36
- @db.literal(@R.new(1, 2, :exclude_end=>true)).should == "'[1,2)'"
37
- @db.literal(@R.new(nil, 2)).should == "'[,2]'"
38
- @db.literal(@R.new(1, nil)).should == "'[1,]'"
39
- @db.literal(@R.new(1, 2, :db_type=>'int8range')).should == "'[1,2]'::int8range"
40
- @db.literal(@R.new(nil, nil, :empty=>true)).should == "'empty'"
41
- @db.literal(@R.new("", 2)).should == "'[\"\",2]'"
33
+ @db.literal(@R.new(1, 2)).must_equal "'[1,2]'"
34
+ @db.literal(@R.new(true, false)).must_equal "'[true,false]'"
35
+ @db.literal(@R.new(1, 2, :exclude_begin=>true)).must_equal "'(1,2]'"
36
+ @db.literal(@R.new(1, 2, :exclude_end=>true)).must_equal "'[1,2)'"
37
+ @db.literal(@R.new(nil, 2)).must_equal "'[,2]'"
38
+ @db.literal(@R.new(1, nil)).must_equal "'[1,]'"
39
+ @db.literal(@R.new(1, 2, :db_type=>'int8range')).must_equal "'[1,2]'::int8range"
40
+ @db.literal(@R.new(nil, nil, :empty=>true)).must_equal "'empty'"
41
+ @db.literal(@R.new("", 2)).must_equal "'[\"\",2]'"
42
42
  end
43
43
 
44
44
  it "should not affect literalization of custom objects" do
45
45
  o = Object.new
46
46
  def o.sql_literal(ds) 'v' end
47
- @db.literal(o).should == 'v'
47
+ @db.literal(o).must_equal 'v'
48
48
  end
49
49
 
50
50
  it "should support using Range instances as bound variables" do
51
- @db.bound_variable_arg(1..2, nil).should == "[1,2]"
51
+ @db.bound_variable_arg(1..2, nil).must_equal "[1,2]"
52
52
  end
53
53
 
54
54
  it "should support using PGRange instances as bound variables" do
55
- @db.bound_variable_arg(@R.new(1, 2), nil).should == "[1,2]"
55
+ @db.bound_variable_arg(@R.new(1, 2), nil).must_equal "[1,2]"
56
56
  end
57
57
 
58
58
  it "should support using arrays of Range instances as bound variables" do
59
- @db.bound_variable_arg([1..2,2...3], nil).should == '{"[1,2]","[2,3)"}'
59
+ @db.bound_variable_arg([1..2,2...3], nil).must_equal '{"[1,2]","[2,3)"}'
60
60
  end
61
61
 
62
62
  it "should support using PGRange instances as bound variables" do
63
- @db.bound_variable_arg([@R.new(1, 2),@R.new(2, 3)], nil).should == '{"[1,2]","[2,3]"}'
63
+ @db.bound_variable_arg([@R.new(1, 2),@R.new(2, 3)], nil).must_equal '{"[1,2]","[2,3]"}'
64
64
  end
65
65
 
66
66
  it "should parse range types from the schema correctly" do
67
67
  @db.fetch = [{:name=>'id', :db_type=>'integer'}, {:name=>'i4', :db_type=>'int4range'}, {:name=>'i8', :db_type=>'int8range'}, {:name=>'n', :db_type=>'numrange'}, {:name=>'d', :db_type=>'daterange'}, {:name=>'ts', :db_type=>'tsrange'}, {:name=>'tz', :db_type=>'tstzrange'}]
68
- @db.schema(:items).map{|e| e[1][:type]}.should == [:integer, :int4range, :int8range, :numrange, :daterange, :tsrange, :tstzrange]
68
+ @db.schema(:items).map{|e| e[1][:type]}.must_equal [:integer, :int4range, :int8range, :numrange, :daterange, :tsrange, :tstzrange]
69
69
  end
70
70
 
71
71
  it "should parse arrays of range types from the schema correctly" do
72
72
  @db.fetch = [{:name=>'id', :db_type=>'integer'}, {:name=>'i4', :db_type=>'int4range[]'}, {:name=>'i8', :db_type=>'int8range[]'}, {:name=>'n', :db_type=>'numrange[]'}, {:name=>'d', :db_type=>'daterange[]'}, {:name=>'ts', :db_type=>'tsrange[]'}, {:name=>'tz', :db_type=>'tstzrange[]'}]
73
- @db.schema(:items).map{|e| e[1][:type]}.should == [:integer, :int4range_array, :int8range_array, :numrange_array, :daterange_array, :tsrange_array, :tstzrange_array]
73
+ @db.schema(:items).map{|e| e[1][:type]}.must_equal [:integer, :int4range_array, :int8range_array, :numrange_array, :daterange_array, :tsrange_array, :tstzrange_array]
74
74
  end
75
75
 
76
76
  describe "database typecasting" do
@@ -83,91 +83,91 @@ describe "pg_range extension" do
83
83
 
84
84
  it "should handle multiple range types" do
85
85
  %w'int4 int8 num date ts tstz'.each do |i|
86
- @db.typecast_value(:"#{i}range", @R.new(1, 2, :db_type=>"#{i}range")).should == @R.new(1, 2, :db_type=>"#{i}range")
86
+ @db.typecast_value(:"#{i}range", @R.new(1, 2, :db_type=>"#{i}range")).must_equal @R.new(1, 2, :db_type=>"#{i}range")
87
87
  end
88
88
  end
89
89
 
90
90
  it "should handle multiple array range types" do
91
91
  %w'int4 int8 num date ts tstz'.each do |i|
92
- @db.typecast_value(:"#{i}range_array", [@R.new(1, 2, :db_type=>"#{i}range")]).should be_a_kind_of(Sequel::Postgres::PGArray)
93
- @db.typecast_value(:"#{i}range_array", [@R.new(1, 2, :db_type=>"#{i}range")]).should == [@R.new(1, 2, :db_type=>"#{i}range")]
92
+ @db.typecast_value(:"#{i}range_array", [@R.new(1, 2, :db_type=>"#{i}range")]).class.must_equal(Sequel::Postgres::PGArray)
93
+ @db.typecast_value(:"#{i}range_array", [@R.new(1, 2, :db_type=>"#{i}range")]).must_equal [@R.new(1, 2, :db_type=>"#{i}range")]
94
94
  end
95
95
  end
96
96
 
97
97
  it "should return PGRange value as is if they have the same subtype" do
98
- @db.typecast_value(:int4range, @o).should equal(@o)
98
+ @db.typecast_value(:int4range, @o).must_be_same_as(@o)
99
99
  end
100
100
 
101
101
  it "should return new PGRange value as is if they have a different subtype" do
102
- @db.typecast_value(:int8range, @o).should_not equal(@o)
103
- @db.typecast_value(:int8range, @o).should == @o2
102
+ @db.typecast_value(:int8range, @o).wont_be_same_as(@o)
103
+ @db.typecast_value(:int8range, @o).must_equal @o2
104
104
  end
105
105
 
106
106
  it "should return new PGRange value as is if they have a different subtype and value is empty" do
107
- @db.typecast_value(:int8range, @eo).should == @eo2
107
+ @db.typecast_value(:int8range, @eo).must_equal @eo2
108
108
  end
109
109
 
110
110
  it "should return new PGRange value if given a Range" do
111
- @db.typecast_value(:int4range, 1..2).should == @o
112
- @db.typecast_value(:int4range, 1..2).should_not == @o2
113
- @db.typecast_value(:int8range, 1..2).should == @o2
111
+ @db.typecast_value(:int4range, 1..2).must_equal @o
112
+ @db.typecast_value(:int4range, 1..2).wont_equal @o2
113
+ @db.typecast_value(:int8range, 1..2).must_equal @o2
114
114
  end
115
115
 
116
116
  it "should parse a string argument as the PostgreSQL output format" do
117
- @db.typecast_value(:int4range, '[1,2]').should == @o
117
+ @db.typecast_value(:int4range, '[1,2]').must_equal @o
118
118
  end
119
119
 
120
120
  it "should raise errors for unparsable formats" do
121
- proc{@db.typecast_value(:int8range, 'foo')}.should raise_error(Sequel::InvalidValue)
121
+ proc{@db.typecast_value(:int8range, 'foo')}.must_raise(Sequel::InvalidValue)
122
122
  end
123
123
 
124
124
  it "should raise errors for unhandled values" do
125
- proc{@db.typecast_value(:int4range, 1)}.should raise_error(Sequel::InvalidValue)
125
+ proc{@db.typecast_value(:int4range, 1)}.must_raise(Sequel::InvalidValue)
126
126
  end
127
127
  end
128
128
 
129
129
  it "should support registering custom range types" do
130
130
  @R.register('foorange')
131
- @db.typecast_value(:foorange, 1..2).should be_a_kind_of(@R)
131
+ @db.typecast_value(:foorange, 1..2).must_be_kind_of(@R)
132
132
  @db.fetch = [{:name=>'id', :db_type=>'foorange'}]
133
- @db.schema(:items).map{|e| e[1][:type]}.should == [:foorange]
133
+ @db.schema(:items).map{|e| e[1][:type]}.must_equal [:foorange]
134
134
  end
135
135
 
136
136
  it "should support using a block as a custom conversion proc given as block" do
137
137
  @R.register('foo2range'){|s| (s*2).to_i}
138
- @db.typecast_value(:foo2range, '[1,2]').should == (11..22)
138
+ @db.typecast_value(:foo2range, '[1,2]').must_be :==, (11..22)
139
139
  end
140
140
 
141
141
  it "should support using a block as a custom conversion proc given as :converter option" do
142
142
  @R.register('foo3range', :converter=>proc{|s| (s*2).to_i})
143
- @db.typecast_value(:foo3range, '[1,2]').should == (11..22)
143
+ @db.typecast_value(:foo3range, '[1,2]').must_be :==, (11..22)
144
144
  end
145
145
 
146
146
  it "should support using an existing scaler conversion proc via the :subtype_oid option" do
147
147
  @R.register('foo4range', :subtype_oid=>16)
148
- @db.typecast_value(:foo4range, '[t,f]').should == @R.new(true, false, :db_type=>'foo4range')
148
+ @db.typecast_value(:foo4range, '[t,f]').must_equal @R.new(true, false, :db_type=>'foo4range')
149
149
  end
150
150
 
151
151
  it "should raise an error if using :subtype_oid option with unexisting scalar conversion proc" do
152
- proc{@R.register('fooirange', :subtype_oid=>0)}.should raise_error(Sequel::Error)
152
+ proc{@R.register('fooirange', :subtype_oid=>0)}.must_raise(Sequel::Error)
153
153
  end
154
154
 
155
155
  it "should raise an error if using :converter option and a block argument" do
156
- proc{@R.register('fooirange', :converter=>proc{}){}}.should raise_error(Sequel::Error)
156
+ proc{@R.register('fooirange', :converter=>proc{}){}}.must_raise(Sequel::Error)
157
157
  end
158
158
 
159
159
  it "should raise an error if using :subtype_oid option and a block argument" do
160
- proc{@R.register('fooirange', :subtype_oid=>16){}}.should raise_error(Sequel::Error)
160
+ proc{@R.register('fooirange', :subtype_oid=>16){}}.must_raise(Sequel::Error)
161
161
  end
162
162
 
163
163
  it "should support registering custom types with :oid option" do
164
164
  @R.register('foo5range', :oid=>331)
165
- Sequel::Postgres::PG_TYPES[331].call('[1,3)').should be_a_kind_of(@R)
165
+ Sequel::Postgres::PG_TYPES[331].call('[1,3)').must_be_kind_of(@R)
166
166
  end
167
167
 
168
168
  it "should return correct results for Database#schema_type_class" do
169
- @db.schema_type_class(:int4range).should == Sequel::Postgres::PGRange
170
- @db.schema_type_class(:integer).should == Integer
169
+ @db.schema_type_class(:int4range).must_equal Sequel::Postgres::PGRange
170
+ @db.schema_type_class(:integer).must_equal Integer
171
171
  end
172
172
 
173
173
  describe "parser" do
@@ -177,56 +177,56 @@ describe "pg_range extension" do
177
177
  end
178
178
 
179
179
  it "should have db_type method to return the database type string" do
180
- @p.db_type.should == 'int4range'
180
+ @p.db_type.must_equal 'int4range'
181
181
  end
182
182
 
183
183
  it "should have converter method which returns a callable used for conversion" do
184
- @p.converter.call('1').should == 1
184
+ @p.converter.call('1').must_equal 1
185
185
  end
186
186
 
187
187
  it "should have call parse input string argument into PGRange instance" do
188
- @p.call('[1,2]').should == @R.new(1, 2, :db_type=>'int4range')
188
+ @p.call('[1,2]').must_equal @R.new(1, 2, :db_type=>'int4range')
189
189
  end
190
190
 
191
191
  it "should handle empty ranges" do
192
- @p.call('empty').should == @R.new(nil, nil, :empty=>true, :db_type=>'int4range')
192
+ @p.call('empty').must_equal @R.new(nil, nil, :empty=>true, :db_type=>'int4range')
193
193
  end
194
194
 
195
195
  it "should handle exclusive beginnings and endings" do
196
- @p.call('(1,3]').should == @R.new(1, 3, :exclude_begin=>true, :db_type=>'int4range')
197
- @p.call('[1,3)').should == @R.new(1, 3, :exclude_end=>true, :db_type=>'int4range')
198
- @p.call('(1,3)').should == @R.new(1, 3, :exclude_begin=>true, :exclude_end=>true, :db_type=>'int4range')
196
+ @p.call('(1,3]').must_equal @R.new(1, 3, :exclude_begin=>true, :db_type=>'int4range')
197
+ @p.call('[1,3)').must_equal @R.new(1, 3, :exclude_end=>true, :db_type=>'int4range')
198
+ @p.call('(1,3)').must_equal @R.new(1, 3, :exclude_begin=>true, :exclude_end=>true, :db_type=>'int4range')
199
199
  end
200
200
 
201
201
  it "should handle unbounded beginnings and endings" do
202
- @p.call('[,2]').should == @R.new(nil, 2, :db_type=>'int4range')
203
- @p.call('[1,]').should == @R.new(1, nil, :db_type=>'int4range')
204
- @p.call('[,]').should == @R.new(nil, nil, :db_type=>'int4range')
202
+ @p.call('[,2]').must_equal @R.new(nil, 2, :db_type=>'int4range')
203
+ @p.call('[1,]').must_equal @R.new(1, nil, :db_type=>'int4range')
204
+ @p.call('[,]').must_equal @R.new(nil, nil, :db_type=>'int4range')
205
205
  end
206
206
 
207
207
  it "should unescape quoted beginnings and endings" do
208
- @sp.call('["\\\\ \\"","\\" \\\\"]').should == @R.new("\\ \"", "\" \\")
208
+ @sp.call('["\\\\ \\"","\\" \\\\"]').must_equal @R.new("\\ \"", "\" \\")
209
209
  end
210
210
 
211
211
  it "should treat empty quoted string not as unbounded" do
212
- @sp.call('["","z"]').should == @R.new("", "z")
213
- @sp.call('["a",""]').should == @R.new("a", "")
214
- @sp.call('["",""]').should == @R.new("", "")
212
+ @sp.call('["","z"]').must_equal @R.new("", "z")
213
+ @sp.call('["a",""]').must_equal @R.new("a", "")
214
+ @sp.call('["",""]').must_equal @R.new("", "")
215
215
  end
216
216
  end
217
217
 
218
218
  it "should set appropriate timestamp range conversion procs when resetting conversion procs" do
219
219
  @db.reset_conversion_procs
220
220
  procs = @db.conversion_procs
221
- procs[3908].call('[2011-10-20 11:12:13,2011-10-20 11:12:14]').should == (Time.local(2011, 10, 20, 11, 12, 13)..(Time.local(2011, 10, 20, 11, 12, 14)))
222
- procs[3910].call('[2011-10-20 11:12:13,2011-10-20 11:12:14]').should == (Time.local(2011, 10, 20, 11, 12, 13)..(Time.local(2011, 10, 20, 11, 12, 14)))
221
+ procs[3908].call('[2011-10-20 11:12:13,2011-10-20 11:12:14]').must_be :==, (Time.local(2011, 10, 20, 11, 12, 13)..(Time.local(2011, 10, 20, 11, 12, 14)))
222
+ procs[3910].call('[2011-10-20 11:12:13,2011-10-20 11:12:14]').must_be :==, (Time.local(2011, 10, 20, 11, 12, 13)..(Time.local(2011, 10, 20, 11, 12, 14)))
223
223
  end
224
224
 
225
225
  it "should set appropriate timestamp range array conversion procs when resetting conversion procs" do
226
226
  @db.reset_conversion_procs
227
227
  procs = @db.conversion_procs
228
- procs[3909].call('{"[2011-10-20 11:12:13,2011-10-20 11:12:14]"}').should == [Time.local(2011, 10, 20, 11, 12, 13)..Time.local(2011, 10, 20, 11, 12, 14)]
229
- procs[3911].call('{"[2011-10-20 11:12:13,2011-10-20 11:12:14]"}').should == [Time.local(2011, 10, 20, 11, 12, 13)..Time.local(2011, 10, 20, 11, 12, 14)]
228
+ procs[3909].call('{"[2011-10-20 11:12:13,2011-10-20 11:12:14]"}').must_be :==, [Time.local(2011, 10, 20, 11, 12, 13)..Time.local(2011, 10, 20, 11, 12, 14)]
229
+ procs[3911].call('{"[2011-10-20 11:12:13,2011-10-20 11:12:14]"}').must_be :==, [Time.local(2011, 10, 20, 11, 12, 13)..Time.local(2011, 10, 20, 11, 12, 14)]
230
230
  end
231
231
 
232
232
  describe "a PGRange instance" do
@@ -237,168 +237,168 @@ describe "pg_range extension" do
237
237
  end
238
238
 
239
239
  it "should have #begin return the beginning of the range" do
240
- @r1.begin.should == 1
241
- @r2.begin.should == 3
242
- @r3.begin.should == nil
240
+ @r1.begin.must_equal 1
241
+ @r2.begin.must_equal 3
242
+ @r3.begin.must_equal nil
243
243
  end
244
244
 
245
245
  it "should have #end return the end of the range" do
246
- @r1.end.should == 2
247
- @r2.end.should == nil
248
- @r3.end.should == 4
246
+ @r1.end.must_equal 2
247
+ @r2.end.must_equal nil
248
+ @r3.end.must_equal 4
249
249
  end
250
250
 
251
251
  it "should have #db_type return the range's database type" do
252
- @r1.db_type.should == nil
253
- @r2.db_type.should == 'int4range'
254
- @r3.db_type.should == 'int8range'
252
+ @r1.db_type.must_equal nil
253
+ @r2.db_type.must_equal 'int4range'
254
+ @r3.db_type.must_equal 'int8range'
255
255
  end
256
256
 
257
257
  it "should be able to be created by Sequel.pg_range" do
258
- Sequel.pg_range(1..2).should == @r1
258
+ Sequel.pg_range(1..2).must_equal @r1
259
259
  end
260
260
 
261
261
  it "should have Sequel.pg_range be able to take a database type" do
262
- Sequel.pg_range(1..2, :int4range).should == @R.new(1, 2, :db_type=>:int4range)
262
+ Sequel.pg_range(1..2, :int4range).must_equal @R.new(1, 2, :db_type=>:int4range)
263
263
  end
264
264
 
265
265
  it "should have Sequel.pg_range return a PGRange as is" do
266
266
  a = Sequel.pg_range(1..2)
267
- Sequel.pg_range(a).should equal(a)
267
+ Sequel.pg_range(a).must_be_same_as(a)
268
268
  end
269
269
 
270
270
  it "should have Sequel.pg_range return a new PGRange if the database type differs" do
271
271
  a = Sequel.pg_range(1..2, :int4range)
272
272
  b = Sequel.pg_range(a, :int8range)
273
- a.to_range.should == b.to_range
274
- a.should_not equal(b)
275
- a.db_type.should == :int4range
276
- b.db_type.should == :int8range
273
+ a.to_range.must_equal b.to_range
274
+ a.wont_be_same_as(b)
275
+ a.db_type.must_equal :int4range
276
+ b.db_type.must_equal :int8range
277
277
  end
278
278
 
279
279
  it "should have #initialize raise if requesting an empty range with beginning or ending" do
280
- proc{@R.new(1, nil, :empty=>true)}.should raise_error(Sequel::Error)
281
- proc{@R.new(nil, 2, :empty=>true)}.should raise_error(Sequel::Error)
282
- proc{@R.new(nil, nil, :empty=>true, :exclude_begin=>true)}.should raise_error(Sequel::Error)
283
- proc{@R.new(nil, nil, :empty=>true, :exclude_end=>true)}.should raise_error(Sequel::Error)
280
+ proc{@R.new(1, nil, :empty=>true)}.must_raise(Sequel::Error)
281
+ proc{@R.new(nil, 2, :empty=>true)}.must_raise(Sequel::Error)
282
+ proc{@R.new(nil, nil, :empty=>true, :exclude_begin=>true)}.must_raise(Sequel::Error)
283
+ proc{@R.new(nil, nil, :empty=>true, :exclude_end=>true)}.must_raise(Sequel::Error)
284
284
  end
285
285
 
286
286
  it "should quack like a range" do
287
287
  if RUBY_VERSION >= '1.9'
288
- @r1.cover?(1.5).should == true
289
- @r1.cover?(2.5).should == false
290
- @r1.first(1).should == [1]
291
- @r1.last(1).should == [2]
288
+ @r1.cover?(1.5).must_equal true
289
+ @r1.cover?(2.5).must_equal false
290
+ @r1.first(1).must_equal [1]
291
+ @r1.last(1).must_equal [2]
292
292
  end
293
- @r1.to_a.should == [1, 2]
294
- @r1.first.should == 1
295
- @r1.last.should == 2
293
+ @r1.to_a.must_equal [1, 2]
294
+ @r1.first.must_equal 1
295
+ @r1.last.must_equal 2
296
296
  a = []
297
297
  @r1.step{|x| a << x}
298
- a.should == [1, 2]
298
+ a.must_equal [1, 2]
299
299
  end
300
300
 
301
301
  it "should only consider PGRanges equal if they have the same db_type" do
302
- @R.new(1, 2, :db_type=>'int4range').should == @R.new(1, 2, :db_type=>'int4range')
303
- @R.new(1, 2, :db_type=>'int8range').should_not == @R.new(1, 2, :db_type=>'int4range')
302
+ @R.new(1, 2, :db_type=>'int4range').must_equal @R.new(1, 2, :db_type=>'int4range')
303
+ @R.new(1, 2, :db_type=>'int8range').wont_equal @R.new(1, 2, :db_type=>'int4range')
304
304
  end
305
305
 
306
306
  it "should only consider empty PGRanges equal with other empty PGRanges" do
307
- @R.new(nil, nil, :empty=>true).should == @R.new(nil, nil, :empty=>true)
308
- @R.new(nil, nil, :empty=>true).should_not == @R.new(nil, nil)
309
- @R.new(nil, nil).should_not == @R.new(nil, nil, :empty=>true)
307
+ @R.new(nil, nil, :empty=>true).must_equal @R.new(nil, nil, :empty=>true)
308
+ @R.new(nil, nil, :empty=>true).wont_equal @R.new(nil, nil)
309
+ @R.new(nil, nil).wont_equal @R.new(nil, nil, :empty=>true)
310
310
  end
311
311
 
312
312
  it "should only consider empty PGRanges equal if they have the same bounds" do
313
- @R.new(1, 2).should == @R.new(1, 2)
314
- @R.new(1, 2).should_not == @R.new(1, 3)
313
+ @R.new(1, 2).must_equal @R.new(1, 2)
314
+ @R.new(1, 2).wont_equal @R.new(1, 3)
315
315
  end
316
316
 
317
317
  it "should only consider empty PGRanges equal if they have the same bound exclusions" do
318
- @R.new(1, 2, :exclude_begin=>true).should == @R.new(1, 2, :exclude_begin=>true)
319
- @R.new(1, 2, :exclude_end=>true).should == @R.new(1, 2, :exclude_end=>true)
320
- @R.new(1, 2, :exclude_begin=>true).should_not == @R.new(1, 2, :exclude_end=>true)
321
- @R.new(1, 2, :exclude_end=>true).should_not == @R.new(1, 2, :exclude_begin=>true)
318
+ @R.new(1, 2, :exclude_begin=>true).must_equal @R.new(1, 2, :exclude_begin=>true)
319
+ @R.new(1, 2, :exclude_end=>true).must_equal @R.new(1, 2, :exclude_end=>true)
320
+ @R.new(1, 2, :exclude_begin=>true).wont_equal @R.new(1, 2, :exclude_end=>true)
321
+ @R.new(1, 2, :exclude_end=>true).wont_equal @R.new(1, 2, :exclude_begin=>true)
322
322
  end
323
323
 
324
324
  it "should consider PGRanges equal with a Range they represent" do
325
- @R.new(1, 2).should == (1..2)
326
- @R.new(1, 2, :exclude_end=>true).should == (1...2)
327
- @R.new(1, 3).should_not == (1..2)
328
- @R.new(1, 2, :exclude_end=>true).should_not == (1..2)
325
+ @R.new(1, 2).must_be :==, (1..2)
326
+ @R.new(1, 2, :exclude_end=>true).must_be :==, (1...2)
327
+ @R.new(1, 3).wont_be :==, (1..2)
328
+ @R.new(1, 2, :exclude_end=>true).wont_be :==, (1..2)
329
329
  end
330
330
 
331
331
  it "should not consider a PGRange equal with a Range if it can't be expressed as a range" do
332
- @R.new(nil, nil).should_not == (1..2)
332
+ @R.new(nil, nil).wont_be :==, (1..2)
333
333
  end
334
334
 
335
335
  it "should not consider a PGRange equal to other objects" do
336
- @R.new(nil, nil).should_not == 1
336
+ @R.new(nil, nil).wont_equal 1
337
337
  end
338
338
 
339
339
  it "should have #=== be true if given an equal PGRange" do
340
- @R.new(1, 2).should === @R.new(1, 2)
341
- @R.new(1, 2).should_not === @R.new(1, 3)
340
+ @R.new(1, 2).must_be :===, @R.new(1, 2)
341
+ @R.new(1, 2).wont_be :===, @R.new(1, 3)
342
342
 
343
343
  end
344
344
 
345
345
  it "should have #=== be true if it would be true for the Range represented by the PGRange" do
346
- @R.new(1, 2).should === 1.5
347
- @R.new(1, 2).should_not === 2.5
346
+ @R.new(1, 2).must_be :===, 1.5
347
+ @R.new(1, 2).wont_be :===, 2.5
348
348
  end
349
349
 
350
350
  it "should have #=== be false if the PGRange cannot be represented by a Range" do
351
- @R.new(nil, nil).should_not === 1.5
351
+ @R.new(nil, nil).wont_be :===, 1.5
352
352
  end
353
353
 
354
354
  it "should have #empty? indicate whether the range is empty" do
355
- @R.empty.should be_empty
356
- @R.new(1, 2).should_not be_empty
355
+ @R.empty.must_be :empty?
356
+ @R.new(1, 2).wont_be :empty?
357
357
  end
358
358
 
359
359
  it "should have #exclude_begin? and #exclude_end indicate whether the beginning or ending of the range is excluded" do
360
- @r1.exclude_begin?.should == false
361
- @r1.exclude_end?.should == false
362
- @r2.exclude_begin?.should == true
363
- @r2.exclude_end?.should == false
364
- @r3.exclude_begin?.should == false
365
- @r3.exclude_end?.should == true
360
+ @r1.exclude_begin?.must_equal false
361
+ @r1.exclude_end?.must_equal false
362
+ @r2.exclude_begin?.must_equal true
363
+ @r2.exclude_end?.must_equal false
364
+ @r3.exclude_begin?.must_equal false
365
+ @r3.exclude_end?.must_equal true
366
366
  end
367
367
 
368
368
  it "should have #to_range raise an exception if the PGRange cannot be represented by a Range" do
369
- proc{@R.new(nil, 1).to_range}.should raise_error(Sequel::Error)
370
- proc{@R.new(1, nil).to_range}.should raise_error(Sequel::Error)
371
- proc{@R.new(0, 1, :exclude_begin=>true).to_range}.should raise_error(Sequel::Error)
372
- proc{@R.empty.to_range}.should raise_error(Sequel::Error)
369
+ proc{@R.new(nil, 1).to_range}.must_raise(Sequel::Error)
370
+ proc{@R.new(1, nil).to_range}.must_raise(Sequel::Error)
371
+ proc{@R.new(0, 1, :exclude_begin=>true).to_range}.must_raise(Sequel::Error)
372
+ proc{@R.empty.to_range}.must_raise(Sequel::Error)
373
373
  end
374
374
 
375
375
  it "should have #to_range return the represented range" do
376
- @r1.to_range.should == (1..2)
376
+ @r1.to_range.must_be :==, (1..2)
377
377
  end
378
378
 
379
379
  it "should have #to_range cache the returned value" do
380
- @r1.to_range.should equal(@r1.to_range)
380
+ @r1.to_range.must_be_same_as(@r1.to_range)
381
381
  end
382
382
 
383
383
  it "should have #unbounded_begin? and #unbounded_end indicate whether the beginning or ending of the range is unbounded" do
384
- @r1.unbounded_begin?.should == false
385
- @r1.unbounded_end?.should == false
386
- @r2.unbounded_begin?.should == false
387
- @r2.unbounded_end?.should == true
388
- @r3.unbounded_begin?.should == true
389
- @r3.unbounded_end?.should == false
384
+ @r1.unbounded_begin?.must_equal false
385
+ @r1.unbounded_end?.must_equal false
386
+ @r2.unbounded_begin?.must_equal false
387
+ @r2.unbounded_end?.must_equal true
388
+ @r3.unbounded_begin?.must_equal true
389
+ @r3.unbounded_end?.must_equal false
390
390
  end
391
391
 
392
392
  it "should have #valid_ruby_range? return true if the PGRange can be represented as a Range" do
393
- @r1.valid_ruby_range?.should == true
394
- @R.new(1, 2, :exclude_end=>true).valid_ruby_range?.should == true
393
+ @r1.valid_ruby_range?.must_equal true
394
+ @R.new(1, 2, :exclude_end=>true).valid_ruby_range?.must_equal true
395
395
  end
396
396
 
397
397
  it "should have #valid_ruby_range? return false if the PGRange cannot be represented as a Range" do
398
- @R.new(nil, 1).valid_ruby_range?.should == false
399
- @R.new(1, nil).valid_ruby_range?.should == false
400
- @R.new(0, 1, :exclude_begin=>true).valid_ruby_range?.should == false
401
- @R.empty.valid_ruby_range?.should == false
398
+ @R.new(nil, 1).valid_ruby_range?.must_equal false
399
+ @R.new(1, nil).valid_ruby_range?.must_equal false
400
+ @R.new(0, 1, :exclude_begin=>true).valid_ruby_range?.must_equal false
401
+ @R.empty.valid_ruby_range?.must_equal false
402
402
  end
403
403
  end
404
404
  end