public void TestWithLocalVariableInAnonymousMethod() { var counter = new InstanceCounter(); var evSrc = new EventSource(); var evSink1 = new EventSink2(counter, evSrc); var evSink2 = new EventSink2(counter, evSrc); var evSink3 = new EventSink2(counter, evSrc); var evSink4 = new EventSink2(counter, evSrc); var evSink5 = new EventSink2(counter, evSrc); Assert.AreEqual(5, counter.Instances); evSink1.CreateLinkToSourceGoodStyle(); evSink2.CreateLinkToSourceGoodStyle(); evSink3.CreateLinkToSourceGoodStyle(); evSink4.CreateLinkToSourceGoodStyle(); evSink5.CreateLinkToSourceGoodStyle(); evSink1 = null; evSink2 = null; evSink3 = null; evSink4 = null; evSink5 = null; GC.Collect(); System.Threading.Thread.Sleep(500); GC.Collect(); Assert.AreEqual(0, counter.Instances); // all instances should be claimed because we used a local variable to create the anonymous methode }
public void Reset_Should_Replace_Default() { var defaultCount = new InstanceCounter(); var simpleLazyFactory = SimpleLazyFactory <IFooService> .CreateForTest(); var defaultFunc = simpleLazyFactory.Default(() => new FooService(defaultCount)).Resolve; var instanceCount = new InstanceCounter(); var theOne = new FooService(instanceCount); var resetFunc = simpleLazyFactory.Reset(() => theOne).Resolve; var fooService = defaultFunc(); var fooService2 = resetFunc(); fooService.ShouldEqual(fooService2); for (int i = 0; i < 10; i++) { defaultFunc(); } for (int i = 0; i < 10; i++) { resetFunc(); } defaultCount.TotalCount.ShouldEqual(0); instanceCount.TotalCount.ShouldEqual(1); }
public void TestWithInstanceVariableInAnonymousMethod() { var counter = new InstanceCounter(); var evSrc = new EventSource(); var evSink1 = new EventSink2(counter, evSrc); var evSink2 = new EventSink2(counter, evSrc); var evSink3 = new EventSink2(counter, evSrc); var evSink4 = new EventSink2(counter, evSrc); var evSink5 = new EventSink2(counter, evSrc); Assert.AreEqual(5, counter.Instances); evSink1.CreateLinkToSourceBadStyle(); evSink2.CreateLinkToSourceBadStyle(); evSink3.CreateLinkToSourceBadStyle(); evSink4.CreateLinkToSourceBadStyle(); evSink5.CreateLinkToSourceBadStyle(); evSink1 = null; evSink2 = null; evSink3 = null; evSink4 = null; evSink5 = null; GC.Collect(); System.Threading.Thread.Sleep(500); GC.Collect(); Assert.AreEqual(5, counter.Instances); // the 5 instances could not be claimed because we used the instance member in CreateLinkToSource1, }
public void TestWithoutAndWithWeakEventHandlerWithStorage() { var counter = new InstanceCounter(); var evSrc = new EventSource(); var evSink1 = new EventSink(counter); var evSink2 = new EventSink(counter); var evSink3 = new EventSink(counter); var evSink4 = new EventSink(counter); var evSink5 = new EventSink(counter); Assert.AreEqual(5, counter.Instances); evSrc.Changed += (evSink1.StoreTheWeakEventHandler = new WeakEventHandler(evSink1.EhChanged, (h) => evSrc.Changed -= h)); // with storage evSrc.Changed += (evSink1.StoreTheWeakEventHandler = new WeakEventHandler(evSink2.EhChanged, (h) => evSrc.Changed -= h)); // with storage evSrc.Changed += new WeakEventHandler(evSink3.EhChanged, (h) => evSrc.Changed -= h); // without storage evSrc.Changed += evSink4.EhChanged; evSrc.Changed += evSink5.EhChanged; evSink1 = null; evSink2 = null; evSink3 = null; evSink4 = null; evSink5 = null; GC.Collect(); System.Threading.Thread.Sleep(500); GC.Collect(); Assert.AreEqual(2, counter.Instances); // the 2 instances that are reachable by ordinary event handlers should be still reachable }
public TestComWrapperFactory(int?maximumOpenItemsPerType) { _appointment = new InstanceCounter <IAppointmentItemWrapper>(maximumOpenItemsPerType); _contactItem = new InstanceCounter <IContactItemWrapper>(maximumOpenItemsPerType); _taskItem = new InstanceCounter <ITaskItemWrapper>(maximumOpenItemsPerType); _distList = new InstanceCounter <IDistListItemWrapper>(maximumOpenItemsPerType); }
public void Instance_ShouldReturnTheInstance_WhenItIsCalled() { var counter = new InstanceCounter(); var lazy = new Lazy <InstanceCounter>(() => counter); var instanceCounter = lazy.Value; Assert.That(instanceCounter, Is.SameAs(counter)); }
public FooService(InstanceCounter instanceCount) { Counter = instanceCount; lock (_lock) { instanceCount.TotalCount++; this.LogHashCode(); } }
public void Default_Multi_Call_Should_Ex() { AssertHelper.ShouldThrows <Exception>(() => { var defaultCount = new InstanceCounter(); var simpleLazyFactory = SimpleLazyFactory <IFooService> .CreateForTest(); simpleLazyFactory.Default(() => new FooService(defaultCount)); simpleLazyFactory.Default(() => new FooService(defaultCount)); }); }
public void Default_Multi_Call_Should_Return_Same() { var defaultCount = new InstanceCounter(); var simpleLazyFactory = SimpleLazyFactory <IFooService> .CreateForTest(); var defaultFunc = simpleLazyFactory.Default(() => new FooService(defaultCount)).Resolve; var fooService = defaultFunc(); var fooService2 = defaultFunc(); defaultCount.TotalCount.ShouldEqual(1); fooService.ShouldEqual(fooService2); }
public void FixtureSetUp() { ObjectFactory.Initialize(expression => { expression.For(typeof(Lazy <>)).Use(typeof(Lazy <>)).CtorDependency <bool>("isThreadSafe").Is(true); expression.Scan(assemblyScanner => { assemblyScanner.TheCallingAssembly(); assemblyScanner.WithDefaultConventions(); }); }); InstanceCounter.Reset(); }
public void Default_Multi_Call_Should_Singleton() { var defaultCount = new InstanceCounter(); var simpleLazyFactory = SimpleLazyFactory <IFooService> .CreateForTest(); var defaultFunc = simpleLazyFactory.Default(() => new FooService(defaultCount)).Resolve; for (int i = 0; i < 10; i++) { defaultFunc(); } defaultCount.TotalCount.ShouldEqual(1); }
internal void WriteToFile(string fileName) { using (StreamWriter writer = new StreamWriter(fileName, false)) { writer.WriteLine("frame,update,draw,instances"); for (int i = 0; i < Count; i++) { writer.WriteLine(string.Format("{0},{1},{2},{3}", i, UpdateEvents.ElementAtOrDefault(i), DrawEvents.ElementAtOrDefault(i), InstanceCounter.ElementAtOrDefault(i))); } writer.Flush(); } }
public void Reset_Multi_Time_Should_Ok() { var counter1 = new InstanceCounter(); var counter2 = new InstanceCounter(); var simpleLazyFactory = SimpleLazyFactory <IFooService> .CreateForTest(); simpleLazyFactory.Reset(() => new FooService(counter1)); simpleLazyFactory.Reset(() => new FooService(counter2)); var resolve = simpleLazyFactory.Resolve; for (int i = 0; i < 3; i++) { var service = resolve(); } counter1.TotalCount.ShouldEqual(0); counter2.TotalCount.ShouldEqual(1); }
public EventSink2(InstanceCounter counter, EventSource src) { _counter = counter; _src = src; System.Threading.Interlocked.Increment(ref counter.Instances); }
public EventSink(InstanceCounter counter) { _counter = counter; System.Threading.Interlocked.Increment(ref counter.Instances); }
public SomeClass() { InstanceCounter <SomeClass> .Increase(); }