public async Task Should_properly_handle_activation() { ITupleSource <Member> leftSource = new TestTupleSource <Member>(new Tuple <Member>(new Member() { MemberId = 27, Name = "Frank" })); IFactSource <Address> rightSource = new TestFactSource <Address>(); var testSink = new TestTupleSink <Address>(); IBetaNode <Member, Address> betaNode = new JoinNode <Member, Address>(leftSource, rightSource, new BetaCondition <Member, Address>((m, a) => true)); betaNode.Connect(testSink); var sessionContext = new TestSession(); var factContext = new TestFactContext <Address>(sessionContext, new Address() { MemberId = 42, PostalCode = "68106" }); await betaNode.Insert(factContext); Assert.That(testSink.Tuples.Count(), Is.EqualTo(1)); }
public async Task Should_handle_inverse_activation() { ITupleSource <Member> leftSource = new TestTupleSource <Member>(); IFactSource <Address> rightSource = new TestFactSource <Address>( new Address() { MemberId = 27, PostalCode = "68106" }, new Address() { MemberId = 27, PostalCode = "74011" }, new Address() { MemberId = 42, PostalCode = "74011" }); var testSink = new TestTupleSink <Address>(); IBetaNode <Member, Address> betaNode = new JoinNode <Member, Address>(leftSource, rightSource, new BetaCondition <Member, Address>((m, a) => m.Right.MemberId == a.MemberId)); betaNode.Connect(testSink); var sessionContext = new TestSession(); var tupleContext = new TestTupleContext <Member>(sessionContext, new Member { MemberId = 27, Name = "Frank" }); await betaNode.Insert(tupleContext); Assert.That(testSink.Tuples.Count(), Is.EqualTo(2)); }