require File.expand_path(File.dirname(__FILE__)+"/spec_helper.rb") describe Distribution::Exponential do shared_examples_for "exponential engine" do it "should return correct pdf" do if @engine.respond_to? :pdf [0.5,1,1.5].each {|l| 1.upto(5) {|x| @engine.pdf(x,l).should be_within(1e-10).of(l*Math.exp(-l*x)) } } else pending("No #{@engine}.pdf") end end it "should return correct cdf" do if @engine.respond_to? :cdf [0.5,1,1.5].each {|l| 1.upto(5) {|x| @engine.cdf(x,l).should be_within(1e-10).of(1-Math.exp(-l*x)) } } else pending("No #{@engine}.cdf") end end it "should return correct p_value" do if @engine.respond_to? :p_value [0.5,1,1.5].each {|l| 1.upto(5) {|x| pr=@engine.cdf(x,l) @engine.p_value(pr,l).should be_within(1e-10).of(x) } } else pending("No #{@engine}.p_value") end end end describe "singleton" do before do @engine=Distribution::Exponential end it_should_behave_like "exponential engine" end describe Distribution::Exponential::Ruby_ do before do @engine=Distribution::Exponential::Ruby_ end it_should_behave_like "exponential engine" end if Distribution.has_gsl? describe Distribution::Exponential::GSL_ do before do @engine=Distribution::Exponential::GSL_ end it_should_behave_like "exponential engine" end end # if Distribution.has_java? # describe Distribution::Exponential::Java_ do # before do # @engine=Distribution::Exponential::Java_ # end # it_should_behave_like "exponential engine" # # end # end end