ohm 0.1.0.rc4 → 0.1.0.rc5
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.
- data/Rakefile +7 -3
- data/lib/ohm/key.rb +24 -8
- data/lib/ohm/pattern.rb +37 -0
- data/lib/ohm/utils/upgrade.rb +2 -2
- data/lib/ohm/version.rb +1 -1
- data/lib/ohm.rb +183 -121
- data/test/connection_test.rb +1 -9
- data/test/indices_test.rb +3 -1
- data/test/model_test.rb +158 -98
- data/test/mutex_test.rb +4 -4
- data/test/pattern_test.rb +8 -0
- data/test/test_helper.rb +43 -2
- data/test/upgrade_script_test.rb +1 -1
- metadata +6 -7
- data/lib/ohm/collection.rb +0 -186
- data/test/model_module_test.rb +0 -951
data/test/indices_test.rb
CHANGED
@@ -59,7 +59,7 @@ class IndicesTest < Test::Unit::TestCase
|
|
59
59
|
end
|
60
60
|
|
61
61
|
should "use a special namespace for set operations" do
|
62
|
-
assert_match
|
62
|
+
assert_match(/^~:/, User.find(:email => "foo", :activation_code => "bar").key.to_s)
|
63
63
|
|
64
64
|
assert Ohm.redis.keys("~:*").size > 0
|
65
65
|
end
|
@@ -159,9 +159,11 @@ class IndicesTest < Test::Unit::TestCase
|
|
159
159
|
@event1 = Event.create(:timeline => 1).update(:days => [1, 2])
|
160
160
|
@event2 = Event.create(:timeline => 1).update(:days => [2, 3])
|
161
161
|
@event3 = Event.create(:timeline => 2).update(:days => [3, 4])
|
162
|
+
@event4 = Event.create(:timeline => 2).update(:days => [1, 3])
|
162
163
|
end
|
163
164
|
|
164
165
|
should "intersect multiple sets of results" do
|
166
|
+
assert_equal [@event1], Event.find(:days => [1, 2]).all
|
165
167
|
assert_equal [@event1], Event.find(:timeline => 1, :days => [1, 2]).all
|
166
168
|
assert_equal [@event1], Event.find(:timeline => 1).find(:days => [1, 2]).all
|
167
169
|
end
|
data/test/model_test.rb
CHANGED
@@ -6,7 +6,6 @@ require "json"
|
|
6
6
|
|
7
7
|
class Post < Ohm::Model
|
8
8
|
attribute :body
|
9
|
-
list :comments
|
10
9
|
list :related, Post
|
11
10
|
end
|
12
11
|
|
@@ -41,9 +40,16 @@ class Event < Ohm::Model
|
|
41
40
|
end
|
42
41
|
end
|
43
42
|
|
43
|
+
module SomeNamespace
|
44
|
+
class Foo < Ohm::Model
|
45
|
+
attribute :name
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
44
49
|
class ModelTest < Test::Unit::TestCase
|
45
50
|
setup do
|
46
51
|
Ohm.flush
|
52
|
+
Logger.current.clear
|
47
53
|
end
|
48
54
|
|
49
55
|
context "An event initialized with a hash of attributes" do
|
@@ -113,7 +119,10 @@ class ModelTest < Test::Unit::TestCase
|
|
113
119
|
assert_nothing_raised do
|
114
120
|
class RedefinedModel < Ohm::Model
|
115
121
|
attribute :name
|
116
|
-
|
122
|
+
|
123
|
+
silence_warnings do
|
124
|
+
attribute :name
|
125
|
+
end
|
117
126
|
end
|
118
127
|
end
|
119
128
|
end
|
@@ -122,7 +131,10 @@ class ModelTest < Test::Unit::TestCase
|
|
122
131
|
assert_nothing_raised do
|
123
132
|
class RedefinedModel < Ohm::Model
|
124
133
|
counter :age
|
125
|
-
|
134
|
+
|
135
|
+
silence_warnings do
|
136
|
+
counter :age
|
137
|
+
end
|
126
138
|
end
|
127
139
|
end
|
128
140
|
end
|
@@ -130,8 +142,11 @@ class ModelTest < Test::Unit::TestCase
|
|
130
142
|
should "not raise if a list is redefined" do
|
131
143
|
assert_nothing_raised do
|
132
144
|
class RedefinedModel < Ohm::Model
|
133
|
-
list :todo
|
134
|
-
|
145
|
+
list :todo, lambda { }
|
146
|
+
|
147
|
+
silence_warnings do
|
148
|
+
list :todo, lambda { }
|
149
|
+
end
|
135
150
|
end
|
136
151
|
end
|
137
152
|
end
|
@@ -139,8 +154,11 @@ class ModelTest < Test::Unit::TestCase
|
|
139
154
|
should "not raise if a set is redefined" do
|
140
155
|
assert_nothing_raised do
|
141
156
|
class RedefinedModel < Ohm::Model
|
142
|
-
set :friends
|
143
|
-
|
157
|
+
set :friends, lambda { }
|
158
|
+
|
159
|
+
silence_warnings do
|
160
|
+
set :friends, lambda { }
|
161
|
+
end
|
144
162
|
end
|
145
163
|
end
|
146
164
|
end
|
@@ -148,8 +166,11 @@ class ModelTest < Test::Unit::TestCase
|
|
148
166
|
should "not raise if a collection is redefined" do
|
149
167
|
assert_nothing_raised do
|
150
168
|
class RedefinedModel < Ohm::Model
|
151
|
-
list :toys
|
152
|
-
|
169
|
+
list :toys, lambda { }
|
170
|
+
|
171
|
+
silence_warnings do
|
172
|
+
set :toys, lambda { }
|
173
|
+
end
|
153
174
|
end
|
154
175
|
end
|
155
176
|
end
|
@@ -190,7 +211,7 @@ class ModelTest < Test::Unit::TestCase
|
|
190
211
|
assert_equal "albert@example.com", User[1].email
|
191
212
|
end
|
192
213
|
|
193
|
-
should "allow to map
|
214
|
+
should "allow to map key to models" do
|
194
215
|
assert_equal [User[1]], [1].map(&User)
|
195
216
|
end
|
196
217
|
end
|
@@ -273,23 +294,23 @@ class ModelTest < Test::Unit::TestCase
|
|
273
294
|
should "delete an existing model" do
|
274
295
|
class ModelToBeDeleted < Ohm::Model
|
275
296
|
attribute :name
|
276
|
-
set :foos
|
277
|
-
list :bars
|
297
|
+
set :foos, Post
|
298
|
+
list :bars, Post
|
278
299
|
end
|
279
300
|
|
280
301
|
@model = ModelToBeDeleted.create(:name => "Lorem")
|
281
302
|
|
282
|
-
@model.foos <<
|
283
|
-
@model.bars <<
|
303
|
+
@model.foos << Post.create
|
304
|
+
@model.bars << Post.create
|
284
305
|
|
285
306
|
id = @model.id
|
286
307
|
|
287
308
|
@model.delete
|
288
309
|
|
289
|
-
assert_nil Ohm.redis.get(ModelToBeDeleted.key
|
290
|
-
assert_nil Ohm.redis.get(ModelToBeDeleted.key
|
291
|
-
assert_equal Array.new, Ohm.redis.smembers(ModelToBeDeleted.key
|
292
|
-
assert_equal Array.new, Ohm.redis.lrange(ModelToBeDeleted.key
|
310
|
+
assert_nil Ohm.redis.get(ModelToBeDeleted.key[id])
|
311
|
+
assert_nil Ohm.redis.get(ModelToBeDeleted.key[id][:name])
|
312
|
+
assert_equal Array.new, Ohm.redis.smembers(ModelToBeDeleted.key[id][:foos])
|
313
|
+
assert_equal Array.new, Ohm.redis.lrange(ModelToBeDeleted.key[id][:bars], 0, -1)
|
293
314
|
|
294
315
|
assert ModelToBeDeleted.all.empty?
|
295
316
|
end
|
@@ -373,8 +394,15 @@ class ModelTest < Test::Unit::TestCase
|
|
373
394
|
should "load attributes lazily" do
|
374
395
|
event = Event[@id]
|
375
396
|
|
376
|
-
|
397
|
+
Logger.current.clear
|
398
|
+
|
399
|
+
assert Logger.current.commands.empty?
|
377
400
|
assert_equal "Ruby Tuesday", event.name
|
401
|
+
assert !Logger.current.commands.empty?
|
402
|
+
|
403
|
+
Logger.current.clear
|
404
|
+
assert_equal "Ruby Tuesday", event.name
|
405
|
+
assert Logger.current.commands.empty?
|
378
406
|
end
|
379
407
|
|
380
408
|
should "load attributes as a strings" do
|
@@ -400,14 +428,14 @@ class ModelTest < Test::Unit::TestCase
|
|
400
428
|
end
|
401
429
|
end
|
402
430
|
|
403
|
-
should "remove an element if sent
|
431
|
+
should "remove an element if sent delete" do
|
404
432
|
@event.create
|
405
433
|
@event.attendees << @person1
|
406
434
|
@event.attendees << @person2
|
407
435
|
@event.attendees << @person3
|
408
|
-
assert_equal ["1", "2", "3"], @event.attendees.
|
436
|
+
assert_equal ["1", "2", "3"], @event.attendees.key.sort
|
409
437
|
@event.attendees.delete(@person2)
|
410
|
-
assert_equal ["1", "3"], Event[@event.id].attendees.
|
438
|
+
assert_equal ["1", "3"], Event[@event.id].attendees.key.sort
|
411
439
|
end
|
412
440
|
|
413
441
|
should "return true if the set includes some member" do
|
@@ -423,7 +451,7 @@ class ModelTest < Test::Unit::TestCase
|
|
423
451
|
@event.attendees << @person1
|
424
452
|
|
425
453
|
assert_equal [@person1], @event.attendees.all
|
426
|
-
assert_equal @person1, @event.attendees[
|
454
|
+
assert_equal @person1, @event.attendees[@person1.id]
|
427
455
|
end
|
428
456
|
|
429
457
|
should "return the size of the set" do
|
@@ -451,7 +479,7 @@ class ModelTest < Test::Unit::TestCase
|
|
451
479
|
|
452
480
|
@event.attendees.replace([@person2, @person3])
|
453
481
|
|
454
|
-
assert_equal [@person2, @person3], @event.attendees.
|
482
|
+
assert_equal [@person2, @person3], @event.attendees.all.sort_by(&:id)
|
455
483
|
end
|
456
484
|
|
457
485
|
should "filter elements" do
|
@@ -473,91 +501,116 @@ class ModelTest < Test::Unit::TestCase
|
|
473
501
|
end
|
474
502
|
|
475
503
|
should "return an array" do
|
476
|
-
assert @post.
|
504
|
+
assert @post.related.all.kind_of?(Array)
|
477
505
|
end
|
478
506
|
|
479
507
|
should "append elements with push" do
|
480
|
-
@post.
|
481
|
-
@post.
|
508
|
+
@post.related.push Post.create
|
509
|
+
@post.related << Post.create
|
482
510
|
|
483
|
-
assert_equal ["
|
511
|
+
assert_equal ["2", "3"], @post.related.all.map { |model| model.id }
|
484
512
|
end
|
485
513
|
|
486
514
|
should "keep the inserting order" do
|
487
|
-
@post.
|
488
|
-
@post.
|
489
|
-
@post.
|
490
|
-
assert_equal ["
|
515
|
+
@post.related << Post.create
|
516
|
+
@post.related << Post.create
|
517
|
+
@post.related << Post.create
|
518
|
+
assert_equal ["2", "3", "4"], @post.related.all.map { |model| model.id }
|
491
519
|
end
|
492
520
|
|
493
521
|
should "keep the inserting order after saving" do
|
494
|
-
@post.
|
495
|
-
@post.
|
496
|
-
@post.
|
522
|
+
@post.related << Post.create
|
523
|
+
@post.related << Post.create
|
524
|
+
@post.related << Post.create
|
497
525
|
@post.save
|
498
|
-
assert_equal ["
|
526
|
+
assert_equal ["2", "3", "4"], Post[@post.id].related.map { |model| model.id }
|
527
|
+
end
|
528
|
+
|
529
|
+
should "allow slicing the list" do
|
530
|
+
post1 = Post.create
|
531
|
+
post2 = Post.create
|
532
|
+
post3 = Post.create
|
533
|
+
|
534
|
+
@post.related << post1
|
535
|
+
@post.related << post2
|
536
|
+
@post.related << post3
|
537
|
+
|
538
|
+
assert_equal post1, @post.related[0]
|
539
|
+
assert_equal post2, @post.related[1]
|
540
|
+
assert_equal post3, @post.related[-1]
|
541
|
+
|
542
|
+
assert_equal nil, @post.related[3]
|
543
|
+
|
544
|
+
assert_equal [post2, post3], @post.related[1, 2]
|
545
|
+
assert_equal [post2, post3], @post.related[1, -1]
|
546
|
+
|
547
|
+
assert_equal [], @post.related[4, 5]
|
548
|
+
|
549
|
+
assert_equal [post2, post3], @post.related[1..2]
|
550
|
+
assert_equal [post2, post3], @post.related[1..5]
|
551
|
+
|
552
|
+
assert_equal [], @post.related[4..5]
|
499
553
|
end
|
500
554
|
|
501
555
|
should "respond to each" do
|
502
|
-
@post.
|
503
|
-
@post.
|
504
|
-
@post.
|
556
|
+
@post.related << Post.create
|
557
|
+
@post.related << Post.create
|
558
|
+
@post.related << Post.create
|
505
559
|
|
506
|
-
i =
|
507
|
-
@post.
|
508
|
-
assert_equal i, c.to_i
|
560
|
+
i = 2
|
561
|
+
@post.related.each do |c|
|
562
|
+
assert_equal i, c.id.to_i
|
509
563
|
i += 1
|
510
564
|
end
|
511
565
|
end
|
512
566
|
|
513
567
|
should "return the size of the list" do
|
514
|
-
@post.
|
515
|
-
@post.
|
516
|
-
@post.
|
517
|
-
assert_equal 3, @post.
|
568
|
+
@post.related << Post.create
|
569
|
+
@post.related << Post.create
|
570
|
+
@post.related << Post.create
|
571
|
+
assert_equal 3, @post.related.size
|
518
572
|
end
|
519
573
|
|
520
574
|
should "return the last element with pop" do
|
521
|
-
@post.
|
522
|
-
@post.
|
523
|
-
assert_equal "
|
524
|
-
assert_equal "
|
525
|
-
assert @post.
|
575
|
+
@post.related << Post.create
|
576
|
+
@post.related << Post.create
|
577
|
+
assert_equal "3", @post.related.pop.id
|
578
|
+
assert_equal "2", @post.related.pop.id
|
579
|
+
assert @post.related.empty?
|
526
580
|
end
|
527
581
|
|
528
582
|
should "return the first element with shift" do
|
529
|
-
@post.
|
530
|
-
@post.
|
531
|
-
assert_equal "
|
532
|
-
assert_equal "
|
533
|
-
assert @post.
|
583
|
+
@post.related << Post.create
|
584
|
+
@post.related << Post.create
|
585
|
+
assert_equal "2", @post.related.shift.id
|
586
|
+
assert_equal "3", @post.related.shift.id
|
587
|
+
assert @post.related.empty?
|
534
588
|
end
|
535
589
|
|
536
590
|
should "push to the head of the list with unshift" do
|
537
|
-
@post.
|
538
|
-
@post.
|
539
|
-
assert_equal "
|
540
|
-
assert_equal "
|
541
|
-
assert @post.
|
591
|
+
@post.related.unshift Post.create
|
592
|
+
@post.related.unshift Post.create
|
593
|
+
assert_equal "2", @post.related.pop.id
|
594
|
+
assert_equal "3", @post.related.pop.id
|
595
|
+
assert @post.related.empty?
|
542
596
|
end
|
543
597
|
|
544
598
|
should "empty the list" do
|
545
|
-
@post.
|
546
|
-
@post.
|
599
|
+
@post.related.unshift Post.create
|
600
|
+
@post.related.clear
|
547
601
|
|
548
|
-
assert @post.
|
602
|
+
assert @post.related.empty?
|
549
603
|
end
|
550
604
|
|
551
605
|
should "replace the values in the list" do
|
552
|
-
@post.
|
606
|
+
@post.related.replace([Post.create, Post.create])
|
553
607
|
|
554
|
-
assert_equal ["
|
608
|
+
assert_equal ["2", "3"], @post.related.map { |model| model.id }
|
555
609
|
end
|
556
610
|
|
557
611
|
should "add models" do
|
558
612
|
@post.related.add(Post.create(:body => "Hello"))
|
559
|
-
|
560
|
-
assert_equal ["2"], @post.related.raw
|
613
|
+
assert_equal ["2"], @post.related.map { |model| model.id }
|
561
614
|
end
|
562
615
|
|
563
616
|
should "find elements in the list" do
|
@@ -573,7 +626,7 @@ class ModelTest < Test::Unit::TestCase
|
|
573
626
|
@post.related.unshift(Post.create(:body => "Hello"))
|
574
627
|
@post.related.unshift(Post.create(:body => "Goodbye"))
|
575
628
|
|
576
|
-
assert_equal ["3", "2"], @post.related.
|
629
|
+
assert_equal ["3", "2"], @post.related.map { |model| model.id }
|
577
630
|
|
578
631
|
assert_equal "3", @post.related.shift.id
|
579
632
|
|
@@ -614,8 +667,8 @@ class ModelTest < Test::Unit::TestCase
|
|
614
667
|
setup do
|
615
668
|
@calendar = Calendar.create
|
616
669
|
|
617
|
-
@calendar.holidays.
|
618
|
-
@calendar.holidays.
|
670
|
+
@calendar.holidays.key.rpush "2009-05-25"
|
671
|
+
@calendar.holidays.key.rpush "2009-07-09"
|
619
672
|
|
620
673
|
@calendar.subscribers << MyActiveRecordModel.find(1)
|
621
674
|
end
|
@@ -623,7 +676,7 @@ class ModelTest < Test::Unit::TestCase
|
|
623
676
|
should "apply a transformation" do
|
624
677
|
assert_equal [Date.new(2009, 5, 25), Date.new(2009, 7, 9)], @calendar.holidays.all
|
625
678
|
|
626
|
-
assert_equal [
|
679
|
+
assert_equal [1], @calendar.subscribers.all.map { |model| model.id }
|
627
680
|
assert_equal [MyActiveRecordModel.find(1)], @calendar.subscribers.all
|
628
681
|
end
|
629
682
|
|
@@ -642,13 +695,13 @@ class ModelTest < Test::Unit::TestCase
|
|
642
695
|
context "Sorting lists and sets" do
|
643
696
|
setup do
|
644
697
|
@post = Post.create(:body => "Lorem")
|
645
|
-
@post.
|
646
|
-
@post.
|
647
|
-
@post.
|
698
|
+
@post.related << Post.create
|
699
|
+
@post.related << Post.create
|
700
|
+
@post.related << Post.create
|
648
701
|
end
|
649
702
|
|
650
703
|
should "sort values" do
|
651
|
-
assert_equal %w{
|
704
|
+
assert_equal %w{2 3 4}, @post.related.sort.map { |model| model.id }
|
652
705
|
end
|
653
706
|
end
|
654
707
|
|
@@ -716,10 +769,10 @@ class ModelTest < Test::Unit::TestCase
|
|
716
769
|
|
717
770
|
should "be able to decrement a counter" do
|
718
771
|
@event.decr(:votes)
|
719
|
-
assert_equal
|
772
|
+
assert_equal(-1, @event.votes)
|
720
773
|
|
721
774
|
@event.decr(:votes, 2)
|
722
|
-
assert_equal
|
775
|
+
assert_equal(-3, @event.votes)
|
723
776
|
end
|
724
777
|
end
|
725
778
|
|
@@ -752,8 +805,8 @@ class ModelTest < Test::Unit::TestCase
|
|
752
805
|
class ::Bar < Ohm::Model
|
753
806
|
attribute :name
|
754
807
|
counter :visits
|
755
|
-
set :friends
|
756
|
-
list :comments
|
808
|
+
set :friends, self
|
809
|
+
list :comments, self
|
757
810
|
|
758
811
|
def foo
|
759
812
|
bar.foo
|
@@ -774,12 +827,12 @@ class ModelTest < Test::Unit::TestCase
|
|
774
827
|
assert_equal "#<Bar:? name=nil friends=nil comments=nil visits=0>", bar.inspect
|
775
828
|
|
776
829
|
bar.update(:name => "Albert")
|
777
|
-
bar.friends <<
|
778
|
-
bar.friends <<
|
779
|
-
bar.comments <<
|
830
|
+
bar.friends << Bar.create
|
831
|
+
bar.friends << Bar.create
|
832
|
+
bar.comments << Bar.create
|
780
833
|
bar.incr(:visits)
|
781
834
|
|
782
|
-
assert_equal %Q{#<Bar:#{bar.id} name="Albert" friends=#<Set: ["
|
835
|
+
assert_equal %Q{#<Bar:#{bar.id} name="Albert" friends=#<Set (Bar): ["3", "2"]> comments=#<List (Bar): ["4"]> visits=1>}, Bar[bar.id].inspect
|
783
836
|
end
|
784
837
|
|
785
838
|
def assert_wrapper_exception(&block)
|
@@ -788,7 +841,7 @@ class ModelTest < Test::Unit::TestCase
|
|
788
841
|
rescue NoMethodError => exception_raised
|
789
842
|
end
|
790
843
|
|
791
|
-
assert_match
|
844
|
+
assert_match(/You tried to call SomeMissingConstant#\w+, but SomeMissingConstant is not defined on #{__FILE__}:\d+:in `bar'/, exception_raised.message)
|
792
845
|
end
|
793
846
|
|
794
847
|
should "inform about a miscatch by Wrapper when calling class methods" do
|
@@ -928,10 +981,7 @@ class ModelTest < Test::Unit::TestCase
|
|
928
981
|
end
|
929
982
|
|
930
983
|
setup do
|
931
|
-
Car.connect(:
|
932
|
-
end
|
933
|
-
|
934
|
-
teardown do
|
984
|
+
Car.connect(:db => 15)
|
935
985
|
Car.db.flushdb
|
936
986
|
end
|
937
987
|
|
@@ -939,11 +989,11 @@ class ModelTest < Test::Unit::TestCase
|
|
939
989
|
car = Car.create(:name => "Twingo")
|
940
990
|
make = Make.create(:name => "Renault")
|
941
991
|
|
942
|
-
assert_equal ["1"], Redis.
|
943
|
-
assert_equal [], Redis.
|
992
|
+
assert_equal ["1"], Redis.connect.smembers("Make:all")
|
993
|
+
assert_equal [], Redis.connect.smembers("Car:all")
|
944
994
|
|
945
|
-
assert_equal ["1"],
|
946
|
-
assert_equal [],
|
995
|
+
assert_equal ["1"], Car.db.smembers("Car:all")
|
996
|
+
assert_equal [], Car.db.smembers("Make:all")
|
947
997
|
|
948
998
|
assert_equal car, Car[1]
|
949
999
|
assert_equal make, Make[1]
|
@@ -957,13 +1007,13 @@ class ModelTest < Test::Unit::TestCase
|
|
957
1007
|
should "allow changing the database" do
|
958
1008
|
Car.create(:name => "Twingo")
|
959
1009
|
|
960
|
-
assert_equal ["1"], Car.all.
|
1010
|
+
assert_equal ["1"], Car.all.key.smembers
|
961
1011
|
|
962
|
-
Car.connect
|
963
|
-
assert_equal [], Car.all.
|
1012
|
+
Car.connect
|
1013
|
+
assert_equal [], Car.all.key.smembers
|
964
1014
|
|
965
|
-
Car.connect :db =>
|
966
|
-
assert_equal ["1"], Car.all.
|
1015
|
+
Car.connect :db => 15
|
1016
|
+
assert_equal ["1"], Car.all.key.smembers
|
967
1017
|
end
|
968
1018
|
end
|
969
1019
|
|
@@ -1081,4 +1131,14 @@ class ModelTest < Test::Unit::TestCase
|
|
1081
1131
|
assert_equal 'authorized', order.state
|
1082
1132
|
end
|
1083
1133
|
end
|
1134
|
+
|
1135
|
+
context "namespaced models" do
|
1136
|
+
should "be persisted" do
|
1137
|
+
SomeNamespace::Foo.create(:name => "foo")
|
1138
|
+
|
1139
|
+
assert_equal "hash", Ohm.redis.type("SomeNamespace::Foo:1")
|
1140
|
+
|
1141
|
+
assert_equal "foo", SomeNamespace::Foo[1].name
|
1142
|
+
end
|
1143
|
+
end
|
1084
1144
|
end
|
data/test/mutex_test.rb
CHANGED
@@ -68,12 +68,12 @@ class TestMutex < Test::Unit::TestCase
|
|
68
68
|
|
69
69
|
threads = []
|
70
70
|
|
71
|
-
n =
|
72
|
-
m =
|
71
|
+
n = 3
|
72
|
+
m = 2
|
73
73
|
|
74
|
-
n.times do
|
74
|
+
n.times do
|
75
75
|
threads << Thread.new do
|
76
|
-
m.times do
|
76
|
+
m.times do
|
77
77
|
@candidate.mutex do
|
78
78
|
sleep 0.1
|
79
79
|
@candidate.incr(:votes)
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "test_helper"))
|
2
|
+
|
3
|
+
class TestArray < Test::Unit::TestCase
|
4
|
+
test "should provide pattern matching" do
|
5
|
+
assert(Ohm::Pattern[1, Fixnum] === [1, 2])
|
6
|
+
assert(Ohm::Pattern[String, Array] === ["foo", ["bar"]])
|
7
|
+
end
|
8
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -6,7 +6,48 @@ rescue LoadError
|
|
6
6
|
end
|
7
7
|
|
8
8
|
require "contest"
|
9
|
+
|
10
|
+
def silence_warnings
|
11
|
+
original_verbose, $VERBOSE = $VERBOSE, nil
|
12
|
+
yield
|
13
|
+
ensure
|
14
|
+
$VERBOSE = original_verbose
|
15
|
+
end
|
16
|
+
|
17
|
+
$VERBOSE = true
|
18
|
+
|
19
|
+
class Logger
|
20
|
+
def self.current
|
21
|
+
Thread.current[:logger] ||= new
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize
|
25
|
+
clear
|
26
|
+
end
|
27
|
+
|
28
|
+
def clear
|
29
|
+
@lines = []
|
30
|
+
end
|
31
|
+
|
32
|
+
def debug(message)
|
33
|
+
@lines << message.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
def debug?; true; end
|
37
|
+
alias info debug
|
38
|
+
alias warn debug
|
39
|
+
alias error debug
|
40
|
+
|
41
|
+
def commands
|
42
|
+
@lines.map { |line| line[/Redis >> ([A-Z].+?)$/, 1] }.compact
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
9
46
|
require "ohm"
|
10
47
|
|
11
|
-
|
12
|
-
|
48
|
+
class Test::Unit::TestCase
|
49
|
+
setup do
|
50
|
+
Ohm.redis = Redis.connect(:logger => Logger.current)
|
51
|
+
Ohm.flush
|
52
|
+
end
|
53
|
+
end
|
data/test/upgrade_script_test.rb
CHANGED
metadata
CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 0
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.1.0.
|
9
|
+
- rc5
|
10
|
+
version: 0.1.0.rc5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michel Martens
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-
|
19
|
+
date: 2010-08-31 00:00:00 -03:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -31,8 +31,7 @@ dependencies:
|
|
31
31
|
- 2
|
32
32
|
- 0
|
33
33
|
- 0
|
34
|
-
|
35
|
-
version: 2.0.0.rc3
|
34
|
+
version: 2.0.0
|
36
35
|
type: :runtime
|
37
36
|
version_requirements: *id001
|
38
37
|
- !ruby/object:Gem::Dependency
|
@@ -75,9 +74,9 @@ extensions: []
|
|
75
74
|
extra_rdoc_files: []
|
76
75
|
|
77
76
|
files:
|
78
|
-
- lib/ohm/collection.rb
|
79
77
|
- lib/ohm/compat-1.8.6.rb
|
80
78
|
- lib/ohm/key.rb
|
79
|
+
- lib/ohm/pattern.rb
|
81
80
|
- lib/ohm/utils/upgrade.rb
|
82
81
|
- lib/ohm/validations.rb
|
83
82
|
- lib/ohm/version.rb
|
@@ -91,9 +90,9 @@ files:
|
|
91
90
|
- test/errors_test.rb
|
92
91
|
- test/hash_key_test.rb
|
93
92
|
- test/indices_test.rb
|
94
|
-
- test/model_module_test.rb
|
95
93
|
- test/model_test.rb
|
96
94
|
- test/mutex_test.rb
|
95
|
+
- test/pattern_test.rb
|
97
96
|
- test/test_helper.rb
|
98
97
|
- test/upgrade_script_test.rb
|
99
98
|
- test/validations_test.rb
|