public void DisposeDisposesAllEngines() { var engines = new[] { new Mock<IJsEngine>(), new Mock<IJsEngine>(), new Mock<IJsEngine>(), new Mock<IJsEngine>(), }; var factory = new Mock<IEngineFactoryForMock>(); factory.SetupSequence(x => x.EngineFactory()) .Returns(engines[0].Object) .Returns(engines[1].Object) .Returns(engines[2].Object) .Returns(engines[3].Object); var config = new JsPoolConfig { StartEngines = 3, EngineFactory = factory.Object.EngineFactory }; var pool = new JsPool(config); pool.Dispose(); foreach (var engine in engines) { engine.Verify(x => x.Dispose()); } }
public void GetEngineReturnsAllAvailableEngines() { var engines = new[] { new Mock<IJsEngine>().Object, new Mock<IJsEngine>().Object, new Mock<IJsEngine>().Object, }; var factory = new Mock<IEngineFactoryForMock>(); factory.SetupSequence(x => x.EngineFactory()) // Initial call to factory is to determine engine type, we don't care // about that here. .Returns(new Mock<IJsEngine>().Object) .Returns(engines[0]) .Returns(engines[1]) .Returns(engines[2]); var config = new JsPoolConfig { StartEngines = 3, EngineFactory = factory.Object.EngineFactory }; var pool = new JsPool(config); var resultEngines = new[] { pool.GetEngine(), pool.GetEngine(), pool.GetEngine(), }; CollectionAssert.AreEquivalent(engines, resultEngines); }