[Fact] // See http://caliburnmicro.codeplex.com/discussions/430917 public async Task TryCloseStressTest() { var conductor = new Conductor <IScreen> .Collection.OneActive(); var conducted = Enumerable.Range(0, 10000) .Select(i => new Screen { DisplayName = i.ToString(CultureInfo.InvariantCulture) }); conductor.Items.AddRange(conducted); var defered1 = new DeferredCloseScreen { DisplayName = "d1", IsClosable = true }; var defered2 = new DeferredCloseScreen { DisplayName = "d2", IsClosable = true }; conductor.Items.Insert(0, defered1); conductor.Items.Insert(500, defered2); var actualCanClose = await conductor.CanClose(); Assert.True(actualCanClose); await defered1.TryClose(); await defered2.TryClose(); }
[Fact] // See http://caliburnmicro.codeplex.com/discussions/430917 public void TryCloseStressTest() { var conductor = new Conductor <IScreen> .Collection.OneActive(); var conducted = Enumerable.Range(0, 10000) .Select(i => new Screen { DisplayName = i.ToString(CultureInfo.InvariantCulture) }); conductor.Items.AddRange(conducted); var defered1 = new DeferredCloseScreen { DisplayName = "d1", IsClosable = true }; var defered2 = new DeferredCloseScreen { DisplayName = "d2", IsClosable = true }; conductor.Items.Insert(0, defered1); conductor.Items.Insert(500, defered2); var finished = false; conductor.CanClose(canClose => { finished = true; Assert.True(canClose); }); Assert.False(finished); defered1.TryClose(); defered2.TryClose(); Assert.True(finished); }
[Fact] // See http://caliburnmicro.codeplex.com/discussions/430917 public void TryCloseStressTest() { var conductor = new Conductor<IScreen>.Collection.OneActive(); var conducted = Enumerable.Range(0, 10000) .Select(i => new Screen {DisplayName = i.ToString(CultureInfo.InvariantCulture)}); conductor.Items.AddRange(conducted); var defered1 = new DeferredCloseScreen {DisplayName = "d1", IsClosable = true}; var defered2 = new DeferredCloseScreen {DisplayName = "d2", IsClosable = true}; conductor.Items.Insert(0, defered1); conductor.Items.Insert(500, defered2); var finished = false; conductor.CanClose(canClose => { finished = true; Assert.True(canClose); }); Assert.False(finished); defered1.TryClose(); defered2.TryClose(); Assert.True(finished); }