public void when_take_or_null_stored_thing_it_should_be_found() { var sut = new ConcurrentPocket(); const string nameOfThing = "name of the thing"; const string thingItself = "the thing itself"; sut.Put(nameOfThing, thingItself); sut.TakeOrNull <string>(nameOfThing).Should().BeSameAs(thingItself, "the thing lies in the pocket"); }
public void when_take_or_null_missing_thing_in_pocket_it_find_nothing() { var sut = new ConcurrentPocket(); const string nameOfThing = "name of the thing"; const string thingItself = "the thing itself"; sut.Put(nameOfThing, thingItself); sut.TakeOrNull <string>("some other name").Should().BeNull("there is no thing with such name in the pocket"); }
public void when_take_or_null_stored_thing_with_unexpected_type_it_should_throw() { var pocket = new ConcurrentPocket(); const string nameOfThing = "name of the thing"; const string thingItself = "the thing itself"; pocket.Put(nameOfThing, thingItself); Action sut = () => pocket.TakeOrNull <given_pocket_extensions>(nameOfThing); sut.Should().Throw <InvalidCastException>("impossible to cast a string to the different type"); }
public void when_take_or_null_thing_with_invalid_name_given_it_should_throw() { var pocket = new ConcurrentPocket(); const string nameOfThing = "name of the thing"; const string thingItself = "the thing itself"; pocket.Put(nameOfThing, thingItself); Action sut = () => pocket.TakeOrNull <string>(name: null); sut.Should().Throw <ArgumentNullException>().Where( exception => exception.ParamName == "name", "null is not a valid name"); sut = () => pocket.TakeOrNull <string>(string.Empty); sut.Should().Throw <ArgumentNullException>().Where( exception => exception.ParamName == "name", "an empty string is not a valid name"); sut = () => pocket.TakeOrNull <string>(WhiteSpaceString); sut.Should().Throw <ArgumentNullException>().Where( exception => exception.ParamName == "name", "a whitespace is not a valid name"); }
public void when_take_or_null_something_from_empty_pocket_it_should_find_nothing() { var sut = new ConcurrentPocket(); sut.TakeOrNull <string>("some name").Should().BeNull("the pocket is empty"); }