sequel 4.22.0 → 4.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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