public void TestThatItRoutes() { var messagesToSend = 63; var until = TestUntil.Happenings(messagesToSend); var erpsToTest = new[] { ERPSystemCode.Alpha, ERPSystemCode.Beta, ERPSystemCode.Charlie }; var routerTestActorProtocols = World.ActorFor( new[] { typeof(IInvoiceSubmitter), typeof(IInvoiceSubmitterSubscription) }, typeof(InvoiceSubmissionRouter), until); var routerProtocols = Protocols.Two <IInvoiceSubmitter, IInvoiceSubmitterSubscription>(routerTestActorProtocols); var routerAsInvoiceSubmitter = routerProtocols._1; var routerAsInvoiceSubmitterSubscription = routerProtocols._2; var alphaSubmitterTestActor = TestWorld.ActorFor <IInvoiceSubmitter>(typeof(ERPSpecificInvoiceSubmitter), ERPSystemCode.Alpha, until); routerAsInvoiceSubmitterSubscription.Subscribe(alphaSubmitterTestActor.ActorAs <IInvoiceSubmitter>()); var betaSubmitterTestActor = TestWorld.ActorFor <IInvoiceSubmitter>(typeof(ERPSpecificInvoiceSubmitter), ERPSystemCode.Beta, until); routerAsInvoiceSubmitterSubscription.Subscribe(betaSubmitterTestActor.ActorAs <IInvoiceSubmitter>()); var charlieSubmitterTestActor = TestWorld.ActorFor <IInvoiceSubmitter>(typeof(ERPSpecificInvoiceSubmitter), ERPSystemCode.Charlie, until); routerAsInvoiceSubmitterSubscription.Subscribe(charlieSubmitterTestActor.ActorAs <IInvoiceSubmitter>()); var random = new Random(); var countByERP = new int[erpsToTest.Length]; Array.Fill(countByERP, 0); for (var i = 0; i < messagesToSend; ++i) { var erpIndex = random.Next(3); var erp = erpsToTest[erpIndex]; var invoice = Invoice.With(erp, i, RandomMoney(random)); routerAsInvoiceSubmitter.SubmitInvoice(invoice); countByERP[erpIndex] += 1; } until.Completes(); var alphaSubmitter = (ERPSpecificInvoiceSubmitter)alphaSubmitterTestActor.ActorInside; Assert.Equal(countByERP[0], alphaSubmitter.submitted.Count); foreach (var invoice in alphaSubmitter.submitted) { Assert.Equal(ERPSystemCode.Alpha, invoice.erp); } var betaSubmitter = (ERPSpecificInvoiceSubmitter)betaSubmitterTestActor.ActorInside; Assert.Equal(countByERP[1], betaSubmitter.submitted.Count); foreach (var invoice in betaSubmitter.submitted) { Assert.Equal(ERPSystemCode.Beta, invoice.erp); } var charlieSubmitter = (ERPSpecificInvoiceSubmitter)charlieSubmitterTestActor.ActorInside; Assert.Equal(countByERP[2], charlieSubmitter.submitted.Count); foreach (var invoice in charlieSubmitter.submitted) { Assert.Equal(ERPSystemCode.Charlie, invoice.erp); } }
public void SetUp() { _world = new TestWorld(); _entityManager = _world.GetEntityManager(); }
public TestMailbox() { world = TestWorld.Instance !; queue = new ConcurrentQueue <IMessage>(); suspendedOverrides = new AtomicReference <Stack <List <Type> > >(new Stack <List <Type> >()); }
public TestMailbox() { world = TestWorld.Instance; }