public void Test_Empty_Strike()
        {
            var input = new List <ContractDetails> {
                new ContractDetails()
            };

            Assert.Throws <InvalidDataException>(() => ContractDetailsStrikeEx.SelectStrike(input, 3, 0))
            .WriteMessageTo(Write);
        }
        public void Test_Strike_Single()
        {
            var input = new List <ContractDetails> {
                new ContractDetails {
                    Contract = { Strike = 100 }
                }
            };

            var output = ContractDetailsStrikeEx.SelectStrike(input, 0, 0);

            Assert.Equal(input.Single(), output.Single());

            output = ContractDetailsStrikeEx.SelectStrike(input, 0, 100);
            Assert.Equal(input.Single(), output.Single());

            output = ContractDetailsStrikeEx.SelectStrike(input, 1, 100);
            Assert.True(!output.Any());
        }
        public void Test_Strike_Multiple()
        {
            var input = new List <ContractDetails>
            {
                new ContractDetails {
                    Contract = { Strike = 100 }
                },
                new ContractDetails {
                    Contract = { Strike = 110 }
                },
                new ContractDetails {
                    Contract = { Strike = 100 }
                },
                new ContractDetails {
                    Contract = { Strike = 80 }
                },
                new ContractDetails {
                    Contract = { Strike = 220 }
                },
                new ContractDetails {
                    Contract = { Strike = 50 }
                }
            };

            var output = ContractDetailsStrikeEx.SelectStrike(input, 0, 10);

            Assert.Equal(50, output.Single().Contract.Strike);

            output = ContractDetailsStrikeEx.SelectStrike(input, 1, 75);
            Assert.Equal(2, output.Count);

            output = ContractDetailsStrikeEx.SelectStrike(input, 0, 221);
            Assert.True(!output.Any());

            output = ContractDetailsStrikeEx.SelectStrike(input, 5, 0);
            Assert.True(!output.Any());
        }