pickup 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/pickup.rb CHANGED
@@ -28,7 +28,7 @@ class Pickup
28
28
  end
29
29
 
30
30
  class MappedList
31
- attr_reader :list, :func, :uniq
31
+ attr_reader :list, :func, :uniq, :max
32
32
 
33
33
  def initialize(list, func, uniq=false)
34
34
  @func = func
@@ -36,24 +36,6 @@ class Pickup
36
36
  @list = map_list(list)
37
37
  end
38
38
 
39
- def map_list(list)
40
- n = 0
41
- mapped_list = {}
42
- list.each do |k, v|
43
- n += v
44
- mapped_list[k] = {}
45
- mapped_list[k][:value] = n
46
- mapped_list[k][:picked] = false if uniq
47
- end
48
- mapped_list
49
- end
50
-
51
- def max
52
- @max ||= begin
53
- list.inject(0){|sum, (k,v)| sum+list[k][:value] }
54
- end
55
- end
56
-
57
39
  def random
58
40
  num = rand(max)
59
41
  get_random_item(num)
@@ -71,5 +53,19 @@ class Pickup
71
53
  list[key][:picked] = true if uniq
72
54
  key
73
55
  end
56
+
57
+ private
58
+
59
+ def map_list(list)
60
+ @max = 0
61
+ mapped_list = {}
62
+ list.each do |k, v|
63
+ mapped_list[k] = {}
64
+ mapped_list[k][:value] = @max
65
+ @max += v
66
+ mapped_list[k][:picked] = false if uniq
67
+ end
68
+ mapped_list
69
+ end
74
70
  end
75
71
  end
@@ -1,3 +1,3 @@
1
1
  class Pickup
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -23,7 +23,7 @@ describe Pickup do
23
23
 
24
24
  describe Pickup::MappedList do
25
25
  before do
26
- @mapped_list = {"selmon"=>{:value=>1, :picked=>false}, "carp"=>{:value=>5, :picked=>false}, "crucian"=>{:value=>8, :picked=>false}, "herring"=>{:value=>14, :picked=>false}, "sturgeon"=>{:value=>22, :picked=>false}, "gudgeon"=>{:value=>32, :picked=>false}, "minnow"=>{:value=>52, :picked=>false}}
26
+ @mapped_list = {"selmon"=>{:value=>0, :picked=>false}, "carp"=>{:value=>1, :picked=>false}, "crucian"=>{:value=>5, :picked=>false}, "herring"=>{:value=>8, :picked=>false}, "sturgeon"=>{:value=>14, :picked=>false}, "gudgeon"=>{:value=>22, :picked=>false}, "minnow"=>{:value=>32, :picked=>false}}
27
27
  @ml = Pickup::MappedList.new(@list, @func, true)
28
28
  @ml2 = Pickup::MappedList.new(@list, @func)
29
29
  end
@@ -33,21 +33,21 @@ describe Pickup do
33
33
  end
34
34
 
35
35
  it "should return selmon and then carp and then crucian for uniq pickup" do
36
- @ml.get_random_item(1).must_equal "selmon"
37
- @ml.get_random_item(1).must_equal "carp"
38
- @ml.get_random_item(1).must_equal "crucian"
36
+ @ml.get_random_item(0).must_equal "selmon"
37
+ @ml.get_random_item(0).must_equal "carp"
38
+ @ml.get_random_item(0).must_equal "crucian"
39
39
  end
40
40
 
41
41
  it "should return selmon 3 times for non-uniq pickup" do
42
- @ml2.get_random_item(1).must_equal "selmon"
43
- @ml2.get_random_item(1).must_equal "selmon"
44
- @ml2.get_random_item(1).must_equal "selmon"
42
+ @ml2.get_random_item(0).must_equal "selmon"
43
+ @ml2.get_random_item(0).must_equal "selmon"
44
+ @ml2.get_random_item(0).must_equal "selmon"
45
45
  end
46
46
 
47
47
  it "should return item from the beginning after end of list for uniq pickup" do
48
- @ml.get_random_item(30).must_equal "gudgeon"
49
- @ml.get_random_item(30).must_equal "minnow"
50
- @ml.get_random_item(30).must_equal "selmon"
48
+ @ml.get_random_item(20).must_equal "gudgeon"
49
+ @ml.get_random_item(20).must_equal "minnow"
50
+ @ml.get_random_item(20).must_equal "selmon"
51
51
  end
52
52
  end
53
53
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pickup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: