Sha256: 1352efe239d90743be4444a052f7fb2418fa41b9cd398d65b96f00419c20f30e

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

require 'spec_helper'

describe :frequency do

  it 'should pick an item from an array based on frequency key' do
    options = [
      { :name => 'one', :frequency => 10 },
      { :name => 'two', :frequency => 5 },
      { :name => 'three', :frequency => 1 }
    ]

    options.random_by_frequency(5.7).should == options[0]
    options.random_by_frequency(12).should == options[1]
    options.random_by_frequency(15).should == options[2]
  end

  it 'should pick an item from a hash based on frequency key' do
    options = {
      :one => { :name => 'one', :frequency => 10 },
      :two => { :name => 'two', :frequency => 5 },
      :three => { :name => 'three', :frequency => 1 }
    }

    options.random_by_frequency(5).should == :one
    options.random_by_frequency(12).should == :two
    options.random_by_frequency(15).should == :three
  end

  it 'should pick an item from a hash based on frequency value' do
    options = {
      'one' => 10,
      'two' => 5,
      'three' => 1
    }

    options.random_by_frequency(5).should == 'one'
    options.random_by_frequency(12).should == 'two'
    options.random_by_frequency(15).should == 'three'
  end

  it 'should be pretty close to probability' do
    options = {
      'one' => 1,
      'two' => 3
    }
    10000.times.count{ options.random_by_frequency == "two" }.should > 6000
  end

  it "should allow floating randomizations" do
    options = { :a => 0.1 }
    options.random_by_frequency.should eq :a
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bootstripe-0.2.23 spec/frequency_spec.rb