main
 1using jive;
 2using Machine.Specifications;
 3
 4namespace specs.unit.utility
 5{
 6  public class SpecificationExtensionsSpecs
 7  {
 8    public abstract class when_evaluating_two_conditions
 9    {
10      Establish c = () =>
11      {
12        left = Create.an<Specification<int>>();
13        right = Create.an<Specification<int>>();
14      };
15
16      static protected Moq.Mock<Specification<int>> left;
17      static protected Moq.Mock<Specification<int>> right;
18    }
19
20    [Subject(typeof (SpecificationExtensions))]
21    public class when_checking_if_two_conditions_are_met_and_they_are : when_evaluating_two_conditions
22    {
23      It should_return_true = () => result.should_be_true();
24
25      Establish c = () =>
26      {
27        right.Setup(x => x.is_satisfied_by(1)).Returns(true);
28        left.Setup(x => x.is_satisfied_by(1)).Returns(true);
29      };
30
31      Because b = () =>
32      {
33        result = left.Object.or(right.Object).is_satisfied_by(1);
34      };
35
36      static bool result;
37    }
38
39    [Subject(typeof (SpecificationExtensions))]
40    public class when_checking_if_one_of_two_conditions_are_met_and_the_left_one_is_not : when_evaluating_two_conditions
41    {
42      It should_return_true = () => result.should_be_true();
43
44      Establish c = () =>
45      {
46        right.Setup(x => x.is_satisfied_by(1)).Returns(true);
47        left.Setup(x => x.is_satisfied_by(1)).Returns(false);
48      };
49
50      Because b = () =>
51      {
52        result = left.Object.or(right.Object).is_satisfied_by(1);
53      };
54
55      static bool result;
56    }
57
58    [Subject(typeof (SpecificationExtensions))]
59    public class when_checking_if_one_of_two_conditions_are_met_and_the_right_one_is_not :
60      when_evaluating_two_conditions
61    {
62      It should_return_true = () => result.should_be_true();
63
64      Establish c = () =>
65      {
66        right.Setup(x => x.is_satisfied_by(1)).Returns(false);
67        left.Setup(x => x.is_satisfied_by(1)).Returns(true);
68      };
69
70      Because b = () =>
71      {
72        result = left.Object.or(right.Object).is_satisfied_by(1);
73      };
74
75      static bool result;
76    }
77  }
78}