public void priority_handling() { var startToken = token; using (var sut = new WindsorContainer()) { var startableFacility = new JarvisStartableFacility(new TestLogger()); sut.AddFacility(startableFacility); sut.Register(Component .For <TestStartableMethod>() .StartUsingMethod(t => t.StartMethod) .StopUsingMethod(t => t.StopMethod)); sut.Register(Component .For <TestStartable>() .WithStartablePriorityHighest()); startableFacility.StartAllIStartable(); Assert.That(token, Is.EqualTo(startToken + 2));//two component started. var first = sut.Resolve <TestStartable>(); Assert.That(first.StartToken, Is.EqualTo(startToken + 1)); var second = sut.Resolve <TestStartableMethod>(); Assert.That(second.StartToken, Is.EqualTo(startToken + 2)); } Assert.That(token, Is.EqualTo(startToken));//stop called }
public void Startable_work_with_concrete_class() { var startToken = token; using (var sut = new WindsorContainer()) { var startableFacility = new JarvisStartableFacility(new TestLogger()); sut.AddFacility(startableFacility); sut.Register(Component.For <TestStartable>()); startableFacility.StartAllIStartable(); Assert.That(token, Is.EqualTo(startToken + 1)); //one component started. } Assert.That(token, Is.EqualTo(startToken)); //stop called }