Jeg har lavet en BDD style ironRuby test af Julegolf konkurrencen på kodehoved.dk:
require 'test'
require 'c:\temp\JuleGolfLib.dll'
Nsp = JuleGolfLib
describe "Jule Golf" do
it "should return integer when given 'en' and 'et'" do
juleGolf = Nsp::TTN
juleGolf.TextToNumber("et").should == 1;
juleGolf.TextToNumber("en").should == 1;
end
it "should return integer when given numbers below 10 and above 1" do
juleGolf = Nsp::TTN
juleGolf.TextToNumber("to").should == 2;
juleGolf.TextToNumber("tre").should == 3;
juleGolf.TextToNumber("fire").should == 4;
juleGolf.TextToNumber("fem").should == 5;
juleGolf.TextToNumber("seks").should == 6;
juleGolf.TextToNumber("syv").should == 7;
juleGolf.TextToNumber("otte").should == 8;
juleGolf.TextToNumber("ni").should == 9;
end
it "should return integer when given numbers from the 10 tabel" do
juleGolf = Nsp::TTN
juleGolf.TextToNumber("ti").should == 10;
juleGolf.TextToNumber("tyve").should == 20;
juleGolf.TextToNumber("tredive").should == 30;
juleGolf.TextToNumber("fyrre").should == 40;
juleGolf.TextToNumber("halvtreds").should == 50;
juleGolf.TextToNumber("tres").should == 60;
juleGolf.TextToNumber("halvfjerds").should == 70;
juleGolf.TextToNumber("firs").should == 80;
juleGolf.TextToNumber("halvfems").should == 90;
end
it "should return integer when given the teens" do
juleGolf = Nsp::TTN
juleGolf.TextToNumber("elleve").should == 11;
juleGolf.TextToNumber("tolv").should == 12;
juleGolf.TextToNumber("tretten").should == 13;
juleGolf.TextToNumber("fjorten").should == 14;
juleGolf.TextToNumber("femten").should == 15;
juleGolf.TextToNumber("seksten").should == 16;
juleGolf.TextToNumber("sytten").should == 17;
juleGolf.TextToNumber("atten").should == 18;
juleGolf.TextToNumber("nitten").should == 19;
end
it "should return integer when given random numbers below 100" do
juleGolf = Nsp::TTN
juleGolf.TextToNumber("niogtyve").should == 29;
juleGolf.TextToNumber("toogtredive").should == 32;
juleGolf.TextToNumber("femoghalvtreds").should == 55;
juleGolf.TextToNumber("toogfyrre").should == 42;
juleGolf.TextToNumber("niogtredive").should == 39;
juleGolf.TextToNumber("toogtres").should == 62;
juleGolf.TextToNumber("fireoghalvfjerds").should == 74;
juleGolf.TextToNumber("enogfirs").should == 81;
juleGolf.TextToNumber("nioghalvfems").should == 99;
end
it "should be able to test through static methods" do
juleGolf = Nsp::TTN
juleGolf.TextToNumber("niogtyve").should == 29;
end
end
Test biblioteket ser sådan ud:
# no prefix or _ local variable
# $ global variable
# @ instance variable
# @@ class (static) variable
$examples = 0
$messages = []
class PositiveExpectation
def initialize(obj)
@obj = obj
end
def ==(other)
$examples += 1
if @obj != other
$messages << "Want #{other.inspect} got #{@obj.inspect}"
print "E "
else
print "OK "
end
end
end
class Object
def should
PositiveExpectation.new(self)
end
end
def it(description)
print "\n it #{description}: "
yield
end
def describe(description)
print "#{description}"
yield
puts "\nend\n"
end
at_exit do
puts "#{$messages.length} / #{$examples} failed"
if $messages.length > 0
puts "Failures: "
$messages.each { |m| puts "- #{m}"}
end
end