public TestCase(Expression <Func <IReadOnlyList <OptionPosition>, OptionPosition, bool> > expression) { Expression = expression; Name = expression.ToString(); Predicate = expression.Compile(); Legs = new List <OptionPosition>(); _predicate = new Lazy <OptionStrategyLegPredicate>( () => OptionStrategyLegPredicate.Create(Expression) ); }
public void CreatesStrikePredicate() { var predicate = OptionStrategyLegPredicate.Create( (legs, p) => p.Strike < legs[0].Strike ); var position = new OptionPosition(Put[95m], 1); var positiveSet = new List <OptionPosition> { new OptionPosition(Put[100m], 1) }; Assert.IsTrue(predicate.Matches(positiveSet, position)); var negativeSet = new List <OptionPosition> { new OptionPosition(Put[90m], 1) }; Assert.IsFalse(predicate.Matches(negativeSet, position)); }