public void SingleOrNothing_Single_HasValue()
        {
            var src = new[] { 42 };
            var result = src.SingleOrNothing().HasValue;

            Assert.True(result);
        }
		public void SingleOrNothingTest()
		{
			var empty = new int[0];
			var nonEmpty = new[] { 1, 2, 1, 2 };

			AssertNothing(empty.SingleOrNothing());
			AssertNothing(empty.SingleOrNothing(Fail<int, bool>));
			AssertNothing(empty.SingleOrNothing(throwOnSeveral: false));
			AssertNothing(empty.SingleOrNothing(Fail<int, bool>, throwOnSeveral: false));

			Assert.Throws<InvalidOperationException>(() => nonEmpty.SingleOrNothing(throwOnSeveral: true));
			AssertNothing(nonEmpty.SingleOrNothing(throwOnSeveral: false));

			Assert.Throws<InvalidOperationException>(() => nonEmpty.SingleOrNothing(x => x == 2, throwOnSeveral: true));
			AssertNothing(nonEmpty.SingleOrNothing(x => x == 2, throwOnSeveral: false));
		}
        public void SingleOrNothing_Multiple_Throws()
        {
            var src = new[] { 42, 41 };

            Assert.Throws<InvalidOperationException>(() => src.SingleOrNothing());
        }