9 @result = Result.new({})
12 describe "#initialize" do
13 it "should initialize empty values for all output fields" do
14 result = Result.new({:rspec1 => {}, :rspec2 => {}})
15 result[:rspec1].should == nil
16 result[:rspec2].should == nil
19 it "should set default values for all output fields" do
20 result = Result.new({:rspec1 => {:default => 1}, :rspec2 => {}})
21 result[:rspec1].should == 1
22 result[:rspec2].should == nil
27 it "should only allow trusted types of data to be saved" do
28 expect { @result["rspec"] = Time.now }.to raise_error
30 @result["rspec"] = 1.1
31 @result["rspec"] = "rspec"
32 @result["rspec"] = true
33 @result["rspec"] = false
36 it "should set the correct value" do
37 @result["rspec"] = "rspec value"
38 @result.instance_variable_get("@data").should == {:rspec => "rspec value"}
41 it "should only allow valid data types" do
42 expect { @result["rspec"] = Time.now }.to raise_error(/Can only store .+ data but got Time for key rspec/)
46 describe "#include" do
47 it "should return the correct list of keys" do
50 @result.keys.sort.should == [:x, :y]
54 describe "#include?" do
55 it "should correctly report that a key is present or absent" do
56 @result.include?("rspec").should == false
57 @result.include?(:rspec).should == false
58 @result["rspec"] = "rspec"
59 @result.include?("rspec").should == true
60 @result.include?(:rspec).should == true
65 it "should retrieve the correct information" do
66 @result["rspec"].should == nil
67 @result[:rspec].should == nil
68 @result["rspec"] = "rspec value"
69 @result["rspec"].should == "rspec value"
70 @result[:rspec].should == "rspec value"
74 describe "#method_missing" do
75 it "should raise the correct exception for unknown keys" do
76 expect { @result.nosuchdata }.to raise_error(NoMethodError)
79 it "should retrieve the correct data" do
80 @result["rspec"] = "rspec value"
81 @result.rspec.should == "rspec value"