Hello everyone, this is really urgent so ill be quick, here is some ruby code that i know works:
require 'csv' class Motorcycle attr_reader :name, :weight @@count = 0 def self.find (name) found = nil ObjectSpace.each_object(Motorcycle) { |o| found = o if o.name == name } return found end def self.create File.new('motorcycles.csv').readlines[1..-1].map{ |line| Motorcycle.new( *line.split( ',' ) ) } end def initialize (name, weight) @name = name @weight = weight self.class.count += 1 end def self.count return @@count end def self.count=( count ) @@count = count end def available_colors colors=[] colorsFile = File.read('colors.csv').split("\n").map { |line| line.split(',') } for i in (0..colorsFile.flatten.length) do if (colorsFile.flatten[i].to_s == self.name.to_s) colors.push(colorsFile.flatten[i+1]) end end return colors end def contains (name,color) if(self.name.to_s == name) else return color end end def has_abs? File.open( 'abs.txt' ) do |io| io.each {|line| line.chomp! ; return true if line.include? self.name.to_s} end return false end end Motrocicle.create the code must pass this tests on rspec: describe Motorcycle do describe "loading the motorcycle list" do it "should load 2 motorcycles from the CSV" do Motorcycle.count.should == 2 end end describe "finding a motorcycle by name" do it "should return an instance of the Motorcycle class" do Motorcycle.find("1200 RT").should be_a Motorcycle end end describe "#weight" do it "should have a weight of 800 pounds for the 1200 RT" do Motorcycle.find("1200 RT").weight.should == '800 pounds' end it "should have a weight of 500 pounds for the 600 GS" do Motorcycle.find("600 GS").weight.should == '500 pounds' end end describe "#available colors" do it "should find 'red' and 'black' as available colors for the BMW 1200 RT" do Motorcycle.find("1200 RT").available_colors.should == [ 'red', 'black' ] end it "should find 'green' and 'blue' as available colors for the BMW 600 GS" do Motorcycle.find("600 GS").available_colors.should == [ 'green', 'blue' ] end end describe "#has_abs?" do it "should be true for a motorcycle that appears in abs_motorcycles.txt" do Motorcycle.find("1200 RT").has_abs?.should be_true end it "should be false for a motorcycle that does not appear in abs_motorcycles.txt" do Motorcycle.find("600 GS").has_abs?.should be_false end end end problem is, after the first test (where it counts the amount of motrocicle instances) every instance is a nil, thats t say, every test is failed except for the fist one. here is the output log: Failures: 1) Motorcycle finding a motorcycle by name should return an instance of the Motorcycle class Failure/Error: Unable to find matching line from backtrace expected nil to be a kind of Motorcycle # ./motoapp.rb:76 2) Motorcycle#weight should have a weight of 800 pounds for the 1200 RT Failure/Error: Unable to find matching line from backtrace NoMethodError: undefined method `weight' for nil:NilClass # ./motoapp.rb:82 3) Motorcycle#weight should have a weight of 500 pounds for the 600 GS Failure/Error: Unable to find matching line from backtrace NoMethodError: undefined method `weight' for nil:NilClass # ./motoapp.rb:86 4) Motorcycle#available colors should find 'red' and 'black' as available colors for the BMW 1200 RT Failure/Error: Unable to find matching line from backtrace NoMethodError: undefined method `available_colors' for nil:NilClass # ./motoapp.rb:92 5) Motorcycle#available colors should find 'green' and 'blue' as available colors for the BMW 600 GS Failure/Error: Unable to find matching line from backtrace NoMethodError: undefined method `available_colors' for nil:NilClass # ./motoapp.rb:96 6) Motorcycle#has_abs? should be true for a motorcycle that appears in abs_motorcycles.txt Failure/Error: Unable to find matching line from backtrace NoMethodError: undefined method `has_abs?' for nil:NilClass # ./motoapp.rb:102 7) Motorcycle#has_abs? should be false for a motorcycle that does not appear in abs_motorcycles.txt Failure/Error: Unable to find matching line from backtrace NoMethodError: undefined method `has_abs?' for nil:NilClass # ./motoapp.rb:106 Finished in 0.01223 seconds 8 examples, 7 failures i have been inclined to think this is some kind of bug or something due to my result doing the manual test like this: puts Motorcycle.count puts Motorcycle.find("1200 RT") puts Motorcycle.find("1200 RT").weight puts Motorcycle.find("600 GS").weight puts Motorcycle.find("1200 RT").available_colors puts Motorcycle.find("600 GS").available_colors puts Motorcycle.find("1200 RT").has_abs? puts Motorcycle.find("600 GS").has_abs? which give me this output: 2 #<Motorcycle:0x7fd8bffcfd88> 800 pounds 500 pounds red black green blue true false so i'm really pretty much on a dead end, ¿does anyone have a clue as to what could be happening?. -- Posted via http://www.ruby-forum.com/. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users