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