Updated RubySpec source to 55122684.
[rbx.git] / spec / frozen / 1.8 / language / and_spec.rb
blob5f65a356fe7b42142286b855e5bba625a6fecae5
1 require File.dirname(__FILE__) + '/../spec_helper'
3 describe "The '&&' statement" do
4   
5   it "short-circuits evaluation at the first condition to be false" do
6     x = nil
7     true && false && x = 1
8     x.should be_nil
9   end
10   
11   it "evalutes to the first condition not to be true" do
12     ("yes" && 1 && nil && true).should == nil
13     ("yes" && 1 && false && true).should == false
14   end
15   
16   it "evalutes to the last condition if all are true" do
17     ("yes" && 1).should == 1
18     (1 && "yes").should == "yes"
19   end
20   
21   it "evaluates the full set of chained conditions during assignment" do
22     x, y = nil
23     x = 1 && y = 2
24     # "1 && y = 2" is evaluated and then assigned to x
25     x.should == 2
26   end
28 end
30 describe "The 'and' statement" do
31   it "short-circuits evaluation at the first condition to be false" do
32     x = nil
33     true and false and x = 1
34     x.should be_nil
35   end
36   
37   it "evalutes to the first condition not to be true" do
38     ("yes" and 1 and nil and true).should == nil
39     ("yes" and 1 and false and true).should == false
40   end
41   
42   it "evalutes to the last condition if all are true" do
43     ("yes" and 1).should == 1
44     (1 and "yes").should == "yes"
45   end
46   
47   it "when used in assignment, evaluates and assigns expressions individually" do
48     x, y = nil
49     x = 1 and y = 2
50     # evaluates (x=1) and (y=2)
51     x.should == 1
52   end
53   
54 end