def defaults(self): ''' By default should return None just once ''' spec = Spec(MockResult(MockCall(MockSpec(), ''))) spec.specified_times().should_be(1) spec.times_remaining().should_be(1) spec.then(spec.next()).should_be(None) spec.then(spec.times_remaining()).should_be(0) spec.then(spec.next()).should_raise(UnmetSpecification)
def supply_different_values_each_time(self): ''' supplies(a,b,...) should return a,b,... on successive calls ''' spec = Spec(MockResult(MockCall(MockSpec(), ''))) spec.when(spec.times(3)) spec.then(spec.supplies('x', 'y', 'z')).should_not_raise(ValueError) spec.then(spec.specified_times()).should_be(3) spec.then(spec.next()).should_be('x') spec.then(spec.next()).should_be('y') spec.then(spec.next()).should_be('z') spec.then(spec.next()).should_raise(UnmetSpecification)
def return_twice(self): ''' times(2) should return default (None) value just twice ''' spec = Spec(MockResult(MockCall(MockSpec(), ''))) spec.when(spec.times(2)) spec.then(spec.specified_times()).should_be(2) spec.then(spec.times_remaining()).should_be(2) spec.then(spec.times_remaining()).should_be(2) spec.then(spec.next()).should_be(None) spec.then(spec.times_remaining()).should_be(1) spec.then(spec.next()).should_be(None) spec.then(spec.times_remaining()).should_be(0) spec.then(spec.next()).should_raise(UnmetSpecification)
def supply_single_value_twice(self): ''' combining supplies(a_value) & times(2) (in any order) should return a_value, twice ''' spec = Spec(MockResult(MockCall(None, ''))) spec.when(spec.times(2), spec.supplies('f')) spec.then(spec.specified_times()).should_be(2) spec.then(spec.next()).should_be('f') spec.then(spec.next()).should_be('f') spec = Spec(MockResult(MockCall(None, ''))) spec.when(spec.supplies('f'), spec.times(2)) spec.then(spec.specified_times()).should_be(2) spec.then(spec.next()).should_be('f') spec.then(spec.next()).should_be('f')
def raise_exception(self): ''' raises(exception) should raise exceptions in the same fashion as will_suppply_values should return values ''' spec = Spec(MockResult(MockCall(MockSpec(), ''))) exception = ValueError('the number of the counting shall be three') spec.when(spec.raises(exception)) spec.then(spec.next()).should_raise(exception) spec.then(spec.times_remaining()).should_be(0) spec.then(spec.next()).should_raise(UnmetSpecification) spec = Spec(MockResult(MockCall(MockSpec(), ''))) exception = ValueError('the number of the counting shall be three') spec.when(spec.times(2), spec.raises(exception)) spec.then(spec.next()).should_raise(exception) spec.then(spec.next()).should_raise(exception) spec.then(spec.next()).should_raise(UnmetSpecification) spec = Spec(MockResult(MockCall(MockSpec(), ''))) exceptions = (ValueError('the number of the counting shall be three'), ValueError('Four shalt thou not count')) spec.when(spec.times(2), spec.raises(*exceptions)) spec.then(spec.next()).should_raise(exceptions[0]) spec.then(spec.next()).should_raise(exceptions[1]) spec.then(spec.next()).should_raise(UnmetSpecification)
def supply_single_value(self): ''' supplies(a_value) should return that value, once ''' spec = Spec(MockResult(MockCall(None, ''))) spec.when(spec.supplies('f')) spec.then(spec.specified_times()).should_be(1) spec.then(spec.next()).should_be('f')