rudil 0.0.1
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/History.txt +4 -0
 - data/Manifest.txt +15 -0
 - data/README.rdoc +80 -0
 - data/Rakefile +26 -0
 - data/lib/rudil/die.rb +31 -0
 - data/lib/rudil/throw.rb +38 -0
 - data/lib/rudil.rb +11 -0
 - data/script/console +10 -0
 - data/script/destroy +14 -0
 - data/script/generate +14 -0
 - data/spec/die_spec.rb +73 -0
 - data/spec/spec.opts +1 -0
 - data/spec/spec_helper.rb +13 -0
 - data/spec/throw_spec.rb +55 -0
 - data/tasks/rspec.rake +21 -0
 - metadata +81 -0
 
    
        data/History.txt
    ADDED
    
    
    
        data/Manifest.txt
    ADDED
    
    | 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            History.txt
         
     | 
| 
      
 2 
     | 
    
         
            +
            Manifest.txt
         
     | 
| 
      
 3 
     | 
    
         
            +
            README.rdoc
         
     | 
| 
      
 4 
     | 
    
         
            +
            Rakefile
         
     | 
| 
      
 5 
     | 
    
         
            +
            lib/rudil.rb
         
     | 
| 
      
 6 
     | 
    
         
            +
            lib/rudil/die.rb
         
     | 
| 
      
 7 
     | 
    
         
            +
            lib/rudil/throw.rb
         
     | 
| 
      
 8 
     | 
    
         
            +
            script/console
         
     | 
| 
      
 9 
     | 
    
         
            +
            script/destroy
         
     | 
| 
      
 10 
     | 
    
         
            +
            script/generate
         
     | 
| 
      
 11 
     | 
    
         
            +
            spec/die_spec.rb
         
     | 
| 
      
 12 
     | 
    
         
            +
            spec/spec.opts
         
     | 
| 
      
 13 
     | 
    
         
            +
            spec/spec_helper.rb
         
     | 
| 
      
 14 
     | 
    
         
            +
            spec/throw_spec.rb
         
     | 
| 
      
 15 
     | 
    
         
            +
            tasks/rspec.rake
         
     | 
    
        data/README.rdoc
    ADDED
    
    | 
         @@ -0,0 +1,80 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            = rudil
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * http://github.com/sMAshdot/rudil
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            == DESCRIPTION:
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            rudil is a dice library for ruby.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            == FEATURES/PROBLEMS:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            Roll dice with any number of sides.
         
     | 
| 
      
 12 
     | 
    
         
            +
            Methods for single and multiple rolls.
         
     | 
| 
      
 13 
     | 
    
         
            +
            Retrieve useful about the rolls easily.
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            == SYNOPSIS:
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            === simple rolling
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              require 'rudil'
         
     | 
| 
      
 20 
     | 
    
         
            +
              die = Rudil::Die.new
         
     | 
| 
      
 21 
     | 
    
         
            +
            or
         
     | 
| 
      
 22 
     | 
    
         
            +
              require 'rudil'
         
     | 
| 
      
 23 
     | 
    
         
            +
              include Rudil
         
     | 
| 
      
 24 
     | 
    
         
            +
              die = Die.new
         
     | 
| 
      
 25 
     | 
    
         
            +
            creates a 6-sided die per default
         
     | 
| 
      
 26 
     | 
    
         
            +
            but you could also use Die.new(n) to
         
     | 
| 
      
 27 
     | 
    
         
            +
            obtain a die with more sides.
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              die.roll
         
     | 
| 
      
 30 
     | 
    
         
            +
              => 3
         
     | 
| 
      
 31 
     | 
    
         
            +
            returns the result of a single roll
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              die.throw(5)
         
     | 
| 
      
 34 
     | 
    
         
            +
              => [6, 5, 3, 1, 3]
         
     | 
| 
      
 35 
     | 
    
         
            +
            returns results of any number of rolls as array
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            === analysing the results
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            start with a die
         
     | 
| 
      
 40 
     | 
    
         
            +
              die = Die.new(20)
         
     | 
| 
      
 41 
     | 
    
         
            +
              
         
     | 
| 
      
 42 
     | 
    
         
            +
            collect the rolls in a throw
         
     | 
| 
      
 43 
     | 
    
         
            +
              throw = Throw.new( die.throw(5) )
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            Throw is a subclass of array with a few convenience methods added.
         
     | 
| 
      
 46 
     | 
    
         
            +
            You can get information about
         
     | 
| 
      
 47 
     | 
    
         
            +
            - the lowest roll
         
     | 
| 
      
 48 
     | 
    
         
            +
            - the highest roll
         
     | 
| 
      
 49 
     | 
    
         
            +
            - the mean
         
     | 
| 
      
 50 
     | 
    
         
            +
            - the number of rolls above a certain value (or equal and above)
         
     | 
| 
      
 51 
     | 
    
         
            +
            - the number of rolls below a certain value (or equal and below) FIX (code sample of usage)
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            == INSTALL:
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            soon
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            == LICENSE:
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
            (The MIT License)
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            Copyright (c) 2009 FIXME full name
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 64 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 65 
     | 
    
         
            +
            'Software'), to deal in the Software without restriction, including
         
     | 
| 
      
 66 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 67 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 68 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 69 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 72 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 75 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 76 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
         
     | 
| 
      
 77 
     | 
    
         
            +
            IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
         
     | 
| 
      
 78 
     | 
    
         
            +
            CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
         
     | 
| 
      
 79 
     | 
    
         
            +
            TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
         
     | 
| 
      
 80 
     | 
    
         
            +
            SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            gem 'hoe', '>= 2.1.0'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'hoe'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require './lib/rudil'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            Hoe.plugin :newgem
         
     | 
| 
      
 8 
     | 
    
         
            +
            # Hoe.plugin :website
         
     | 
| 
      
 9 
     | 
    
         
            +
            # Hoe.plugin :cucumberfeatures
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            # Generate all the Rake tasks
         
     | 
| 
      
 12 
     | 
    
         
            +
            # Run 'rake -T' to see list of generated tasks (from gem root directory)
         
     | 
| 
      
 13 
     | 
    
         
            +
            $hoe = Hoe.spec 'rudil' do
         
     | 
| 
      
 14 
     | 
    
         
            +
              self.developer 'Marc-Antonio Bisotti', 'mail@marc-antonio.de'
         
     | 
| 
      
 15 
     | 
    
         
            +
              self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
         
     | 
| 
      
 16 
     | 
    
         
            +
              self.rubyforge_name       = self.name # TODO this is default value
         
     | 
| 
      
 17 
     | 
    
         
            +
              # self.extra_deps         = [['activesupport','>= 2.0.2']]
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            require 'newgem/tasks'
         
     | 
| 
      
 22 
     | 
    
         
            +
            Dir['tasks/**/*.rake'].each { |t| load t }
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            # TODO - want other tests/tasks run by default? Add them to the list
         
     | 
| 
      
 25 
     | 
    
         
            +
            # remove_task :default
         
     | 
| 
      
 26 
     | 
    
         
            +
            # task :default => [:spec, :features]
         
     | 
    
        data/lib/rudil/die.rb
    ADDED
    
    | 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rudil
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Die
         
     | 
| 
      
 3 
     | 
    
         
            +
                def initialize sides=6
         
     | 
| 
      
 4 
     | 
    
         
            +
                  unless sides >= 1 and sides <= 120
         
     | 
| 
      
 5 
     | 
    
         
            +
                    raise ArgumentError
         
     | 
| 
      
 6 
     | 
    
         
            +
                    # "120 sides should be enough for anybody."
         
     | 
| 
      
 7 
     | 
    
         
            +
                    #   - sMAshdot
         
     | 
| 
      
 8 
     | 
    
         
            +
                    # Such a die would be an Hexakis Icosahedron, and I challenge
         
     | 
| 
      
 9 
     | 
    
         
            +
                    # anyone to build it.
         
     | 
| 
      
 10 
     | 
    
         
            +
                    # The biggest manufactured die to date has 100 sides and is
         
     | 
| 
      
 11 
     | 
    
         
            +
                    # trademarked as Zocchihedron. It isn't a polyhedron anymore
         
     | 
| 
      
 12 
     | 
    
         
            +
                    # but rather a ball with flattened planes (think golfball).
         
     | 
| 
      
 13 
     | 
    
         
            +
                  else
         
     | 
| 
      
 14 
     | 
    
         
            +
                    @sides = sides
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                def throw times=1
         
     | 
| 
      
 19 
     | 
    
         
            +
                  if times <= 0
         
     | 
| 
      
 20 
     | 
    
         
            +
                    raise ArgumentError
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  Array.new(times).fill { roll }
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                def roll
         
     | 
| 
      
 26 
     | 
    
         
            +
                  # the part where randomness happens has it's own method
         
     | 
| 
      
 27 
     | 
    
         
            +
                  # to simplify unit-testing by permitting it to be stubbed.
         
     | 
| 
      
 28 
     | 
    
         
            +
                  rand(@sides)+1
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rudil/throw.rb
    ADDED
    
    | 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rudil
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Throw < Array
         
     | 
| 
      
 3 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 4 
     | 
    
         
            +
                  inspect
         
     | 
| 
      
 5 
     | 
    
         
            +
                end
         
     | 
| 
      
 6 
     | 
    
         
            +
                
         
     | 
| 
      
 7 
     | 
    
         
            +
                def lowest
         
     | 
| 
      
 8 
     | 
    
         
            +
                  sort.first 
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def highest
         
     | 
| 
      
 12 
     | 
    
         
            +
                  sort.last
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def mean
         
     | 
| 
      
 16 
     | 
    
         
            +
                  if size < 1
         
     | 
| 
      
 17 
     | 
    
         
            +
                    return nil
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  inject(0.0) { |sum, i| sum + i } / size 
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
                
         
     | 
| 
      
 22 
     | 
    
         
            +
                def above m
         
     | 
| 
      
 23 
     | 
    
         
            +
                  select { |n| n > m }.size
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                def eq_or_above m
         
     | 
| 
      
 27 
     | 
    
         
            +
                  select { |n| n >= m }.size
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                def below m
         
     | 
| 
      
 31 
     | 
    
         
            +
                  select { |n| n < m }.size
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                def eq_or_below m
         
     | 
| 
      
 35 
     | 
    
         
            +
                  select { |n| n <= m }.size
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/rudil.rb
    ADDED
    
    
    
        data/script/console
    ADDED
    
    | 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # File: script/console
         
     | 
| 
      
 3 
     | 
    
         
            +
            irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            libs =  " -r irb/completion"
         
     | 
| 
      
 6 
     | 
    
         
            +
            # Perhaps use a console_lib to store any extra methods I may want available in the cosole
         
     | 
| 
      
 7 
     | 
    
         
            +
            # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
         
     | 
| 
      
 8 
     | 
    
         
            +
            libs <<  " -r #{File.dirname(__FILE__) + '/../lib/rudil.rb'}"
         
     | 
| 
      
 9 
     | 
    
         
            +
            puts "Loading rudil gem"
         
     | 
| 
      
 10 
     | 
    
         
            +
            exec "#{irb} #{libs} --simple-prompt"
         
     | 
    
        data/script/destroy
    ADDED
    
    | 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            begin
         
     | 
| 
      
 5 
     | 
    
         
            +
              require 'rubigen'
         
     | 
| 
      
 6 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 7 
     | 
    
         
            +
              require 'rubygems'
         
     | 
| 
      
 8 
     | 
    
         
            +
              require 'rubigen'
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'rubigen/scripts/destroy'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ARGV.shift if ['--help', '-h'].include?(ARGV[0])
         
     | 
| 
      
 13 
     | 
    
         
            +
            RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
         
     | 
| 
      
 14 
     | 
    
         
            +
            RubiGen::Scripts::Destroy.new.run(ARGV)
         
     | 
    
        data/script/generate
    ADDED
    
    | 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            begin
         
     | 
| 
      
 5 
     | 
    
         
            +
              require 'rubigen'
         
     | 
| 
      
 6 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 7 
     | 
    
         
            +
              require 'rubygems'
         
     | 
| 
      
 8 
     | 
    
         
            +
              require 'rubigen'
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'rubigen/scripts/generate'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ARGV.shift if ['--help', '-h'].include?(ARGV[0])
         
     | 
| 
      
 13 
     | 
    
         
            +
            RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
         
     | 
| 
      
 14 
     | 
    
         
            +
            RubiGen::Scripts::Generate.new.run(ARGV)
         
     | 
    
        data/spec/die_spec.rb
    ADDED
    
    | 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # classes dealing with random numbers are not easily unit-tested.
         
     | 
| 
      
 4 
     | 
    
         
            +
            # this number represents the number of dice-throwing to do until
         
     | 
| 
      
 5 
     | 
    
         
            +
            # the Die is considered "tested enough"
         
     | 
| 
      
 6 
     | 
    
         
            +
            NB_OF_ROLLS = 180
         
     | 
| 
      
 7 
     | 
    
         
            +
            # 180 throws correspond to a 1-(19/20)^180=0.99990 chance of
         
     | 
| 
      
 8 
     | 
    
         
            +
            # throwing a certain number at least once on a twenty sided die
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            if NB_OF_ROLLS < 1
         
     | 
| 
      
 11 
     | 
    
         
            +
              raise ScriptError
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            describe Die do
         
     | 
| 
      
 15 
     | 
    
         
            +
              it "should not want to have less than 1 or more than 120 sides" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                lambda { Die.new(0) }.should raise_error(ArgumentError)
         
     | 
| 
      
 17 
     | 
    
         
            +
                lambda { Die.new(121) }.should raise_error(ArgumentError)
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              it "should roll an integer" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                die = Die.new
         
     | 
| 
      
 22 
     | 
    
         
            +
                die.roll.class.should == Fixnum
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              it "should not roll a number smaller than one" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                die = Die.new
         
     | 
| 
      
 27 
     | 
    
         
            +
                collection = Array.new(NB_OF_ROLLS).fill { die.roll }
         
     | 
| 
      
 28 
     | 
    
         
            +
                collection.sort[0].should == 1 
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              it "should not roll a number bigger than 6 per default" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                die = Die.new
         
     | 
| 
      
 33 
     | 
    
         
            +
                collection = Array.new(NB_OF_ROLLS).fill { die.roll }
         
     | 
| 
      
 34 
     | 
    
         
            +
                collection.sort[NB_OF_ROLLS - 1].should == 6 
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              it "should not roll a number bigger than the number of sides" do
         
     | 
| 
      
 38 
     | 
    
         
            +
                die = Die.new(20)
         
     | 
| 
      
 39 
     | 
    
         
            +
                collection = Array.new(NB_OF_ROLLS).fill { die.roll }
         
     | 
| 
      
 40 
     | 
    
         
            +
                collection.sort[NB_OF_ROLLS - 1].should == 20 
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              it "should be thrown once per default" do
         
     | 
| 
      
 44 
     | 
    
         
            +
                die = Die.new
         
     | 
| 
      
 45 
     | 
    
         
            +
                die.throw.length.should == 1
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              it "should be thrown as often as told" do
         
     | 
| 
      
 49 
     | 
    
         
            +
                die = Die.new
         
     | 
| 
      
 50 
     | 
    
         
            +
                die.throw(10).length.should == 10
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              it "should not want to be thrown less than once" do
         
     | 
| 
      
 54 
     | 
    
         
            +
                die = Die.new
         
     | 
| 
      
 55 
     | 
    
         
            +
                lambda { die.throw(-1) }.should raise_error(ArgumentError)
         
     | 
| 
      
 56 
     | 
    
         
            +
                lambda { die.throw(0) }.should raise_error(ArgumentError)
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
              
         
     | 
| 
      
 59 
     | 
    
         
            +
              it "should return the result after it has been thrown once" do
         
     | 
| 
      
 60 
     | 
    
         
            +
                die = Die.new()
         
     | 
| 
      
 61 
     | 
    
         
            +
                die.stub!(:roll).and_return(6)
         
     | 
| 
      
 62 
     | 
    
         
            +
                throw = die.throw(1)
         
     | 
| 
      
 63 
     | 
    
         
            +
                throw[0].should == 6
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              it "should return the result after it has been thrown any number of times" do
         
     | 
| 
      
 67 
     | 
    
         
            +
                die = Die.new()
         
     | 
| 
      
 68 
     | 
    
         
            +
                die.stub!(:roll).and_return(1,2,3,4,5,6)
         
     | 
| 
      
 69 
     | 
    
         
            +
                throw = die.throw(6)
         
     | 
| 
      
 70 
     | 
    
         
            +
                throw[0].should == 1
         
     | 
| 
      
 71 
     | 
    
         
            +
                throw[5].should == 6
         
     | 
| 
      
 72 
     | 
    
         
            +
              end
         
     | 
| 
      
 73 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec.opts
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --colour
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            begin
         
     | 
| 
      
 2 
     | 
    
         
            +
              require 'spec'
         
     | 
| 
      
 3 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 4 
     | 
    
         
            +
              require 'rubygems' unless ENV['NO_RUBYGEMS']
         
     | 
| 
      
 5 
     | 
    
         
            +
              gem 'rspec'
         
     | 
| 
      
 6 
     | 
    
         
            +
              require 'spec'
         
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            libdir = File.dirname(File.dirname(__FILE__)) + '/lib'
         
     | 
| 
      
 10 
     | 
    
         
            +
            $LOAD_PATH.unshift libdir unless $LOAD_PATH.include?(libdir)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            require 'rudil'
         
     | 
| 
      
 13 
     | 
    
         
            +
            include Rudil
         
     | 
    
        data/spec/throw_spec.rb
    ADDED
    
    | 
         @@ -0,0 +1,55 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Throw do
         
     | 
| 
      
 4 
     | 
    
         
            +
              it "should be pretty when casted into string" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                throw = Throw.new [1,2,3,4,5,6]
         
     | 
| 
      
 6 
     | 
    
         
            +
                throw.to_s.should == "[1, 2, 3, 4, 5, 6]"
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              it "should return its lowest roll" do
         
     | 
| 
      
 10 
     | 
    
         
            +
                throw = Throw.new []
         
     | 
| 
      
 11 
     | 
    
         
            +
                throw.lowest.should == nil
         
     | 
| 
      
 12 
     | 
    
         
            +
                throw = Throw.new [3]
         
     | 
| 
      
 13 
     | 
    
         
            +
                throw.lowest.should == 3
         
     | 
| 
      
 14 
     | 
    
         
            +
                throw = Throw.new [2,5,1,6]
         
     | 
| 
      
 15 
     | 
    
         
            +
                throw.lowest.should == 1
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              it "should return its highest roll" do
         
     | 
| 
      
 19 
     | 
    
         
            +
                throw = Throw.new []
         
     | 
| 
      
 20 
     | 
    
         
            +
                throw.highest.should == nil
         
     | 
| 
      
 21 
     | 
    
         
            +
                throw = Throw.new [3]
         
     | 
| 
      
 22 
     | 
    
         
            +
                throw.highest.should == 3
         
     | 
| 
      
 23 
     | 
    
         
            +
                throw = Throw.new [2,5,1,6]
         
     | 
| 
      
 24 
     | 
    
         
            +
                throw.highest.should == 6
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              it "should return its mean" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                throw = Throw.new []
         
     | 
| 
      
 29 
     | 
    
         
            +
                throw.mean.should == nil
         
     | 
| 
      
 30 
     | 
    
         
            +
                throw = Throw.new [1,2,3]
         
     | 
| 
      
 31 
     | 
    
         
            +
                throw.mean.should == 2.0
         
     | 
| 
      
 32 
     | 
    
         
            +
                throw = Throw.new [1,2,3,4]
         
     | 
| 
      
 33 
     | 
    
         
            +
                throw.mean.should == 2.5
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              it "should return number of rolls above a certain value" do
         
     | 
| 
      
 37 
     | 
    
         
            +
                throw = Throw.new [1,2,3,4,5,6]
         
     | 
| 
      
 38 
     | 
    
         
            +
                throw.above(3).should == 3
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              it "should return number of rolls equal or below a value" do
         
     | 
| 
      
 42 
     | 
    
         
            +
                throw = Throw.new [1,2,3,4,5,6]
         
     | 
| 
      
 43 
     | 
    
         
            +
                throw.eq_or_above(3).should == 4
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              it "should return number of rolls below a certain value" do
         
     | 
| 
      
 47 
     | 
    
         
            +
                throw = Throw.new [1,2,3,4,5,6]
         
     | 
| 
      
 48 
     | 
    
         
            +
                throw.below(3).should == 2
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
              it "should return number of rolls equal or above a value" do
         
     | 
| 
      
 52 
     | 
    
         
            +
                throw = Throw.new [1,2,3,4,5,6]
         
     | 
| 
      
 53 
     | 
    
         
            +
                throw.eq_or_below(3).should == 3
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
            end
         
     | 
    
        data/tasks/rspec.rake
    ADDED
    
    | 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            begin
         
     | 
| 
      
 2 
     | 
    
         
            +
              require 'spec'
         
     | 
| 
      
 3 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 4 
     | 
    
         
            +
              require 'rubygems' unless ENV['NO_RUBYGEMS']
         
     | 
| 
      
 5 
     | 
    
         
            +
              require 'spec'
         
     | 
| 
      
 6 
     | 
    
         
            +
            end
         
     | 
| 
      
 7 
     | 
    
         
            +
            begin
         
     | 
| 
      
 8 
     | 
    
         
            +
              require 'spec/rake/spectask'
         
     | 
| 
      
 9 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 10 
     | 
    
         
            +
              puts <<-EOS
         
     | 
| 
      
 11 
     | 
    
         
            +
            To use rspec for testing you must install rspec gem:
         
     | 
| 
      
 12 
     | 
    
         
            +
                gem install rspec
         
     | 
| 
      
 13 
     | 
    
         
            +
            EOS
         
     | 
| 
      
 14 
     | 
    
         
            +
              exit(0)
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            desc "Run the specs under spec/models"
         
     | 
| 
      
 18 
     | 
    
         
            +
            Spec::Rake::SpecTask.new do |t|
         
     | 
| 
      
 19 
     | 
    
         
            +
              t.spec_opts = ['--options', "spec/spec.opts"]
         
     | 
| 
      
 20 
     | 
    
         
            +
              t.spec_files = FileList['spec/**/*_spec.rb']
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,81 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: rudil
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.1
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Marc-Antonio Bisotti
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2009-10-11 00:00:00 +02:00
         
     | 
| 
      
 13 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 16 
     | 
    
         
            +
              name: hoe
         
     | 
| 
      
 17 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 18 
     | 
    
         
            +
              version_requirement: 
         
     | 
| 
      
 19 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 20 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 21 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 22 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 23 
     | 
    
         
            +
                    version: 2.3.3
         
     | 
| 
      
 24 
     | 
    
         
            +
                version: 
         
     | 
| 
      
 25 
     | 
    
         
            +
            description: rudil is a dice library for ruby.
         
     | 
| 
      
 26 
     | 
    
         
            +
            email: 
         
     | 
| 
      
 27 
     | 
    
         
            +
            - mail@marc-antonio.de
         
     | 
| 
      
 28 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            extra_rdoc_files: 
         
     | 
| 
      
 33 
     | 
    
         
            +
            - History.txt
         
     | 
| 
      
 34 
     | 
    
         
            +
            - Manifest.txt
         
     | 
| 
      
 35 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 36 
     | 
    
         
            +
            - History.txt
         
     | 
| 
      
 37 
     | 
    
         
            +
            - Manifest.txt
         
     | 
| 
      
 38 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 39 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 40 
     | 
    
         
            +
            - lib/rudil.rb
         
     | 
| 
      
 41 
     | 
    
         
            +
            - lib/rudil/die.rb
         
     | 
| 
      
 42 
     | 
    
         
            +
            - lib/rudil/throw.rb
         
     | 
| 
      
 43 
     | 
    
         
            +
            - script/console
         
     | 
| 
      
 44 
     | 
    
         
            +
            - script/destroy
         
     | 
| 
      
 45 
     | 
    
         
            +
            - script/generate
         
     | 
| 
      
 46 
     | 
    
         
            +
            - spec/die_spec.rb
         
     | 
| 
      
 47 
     | 
    
         
            +
            - spec/spec.opts
         
     | 
| 
      
 48 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
      
 49 
     | 
    
         
            +
            - spec/throw_spec.rb
         
     | 
| 
      
 50 
     | 
    
         
            +
            - tasks/rspec.rake
         
     | 
| 
      
 51 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 52 
     | 
    
         
            +
            homepage: http://github.com/sMAshdot/rudil
         
     | 
| 
      
 53 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            post_install_message: PostInstall.txt
         
     | 
| 
      
 56 
     | 
    
         
            +
            rdoc_options: 
         
     | 
| 
      
 57 
     | 
    
         
            +
            - --main
         
     | 
| 
      
 58 
     | 
    
         
            +
            - README.rdoc
         
     | 
| 
      
 59 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 60 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 61 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 62 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 63 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 64 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 65 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 66 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 67 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 68 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 69 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 70 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 71 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 72 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 73 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            rubyforge_project: rudil
         
     | 
| 
      
 76 
     | 
    
         
            +
            rubygems_version: 1.3.5
         
     | 
| 
      
 77 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 78 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 79 
     | 
    
         
            +
            summary: rudil is a dice library for ruby.
         
     | 
| 
      
 80 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     |