public void BaristaObjectPoolTryGetRemovedHandlesAreNull() { var bop = new BaristaObjectPool <JsValue, JavaScriptValueSafeHandle>(); var handle = new JavaScriptValueSafeHandle(); using (var rt = BaristaRuntimeFactory.CreateRuntime()) { using (var ctx = rt.CreateContext()) using (ctx.Scope()) { var value = ctx.CreateString("Test 123"); bop.TryAdd(value); handle = value.Handle; value.Dispose(); value = null; } rt.CollectGarbage(); } //m_provider = null; //m_serviceCollection.FreeBaristaCoreServices(); //m_serviceCollection = null; //GC.Collect(); //GC.WaitForPendingFinalizers(); //GC.WaitForFullGCComplete(); //GC.Collect(); bop.RemoveHandle(handle); bop.TryGet(handle, out JsValue retrievedValue); Assert.Null(retrievedValue); }
public void BaristaObjectPoolTryGetCannotRetrieveInvalidHandles() { var bop = new BaristaObjectPool <JsValue, JavaScriptValueSafeHandle>(); using (var rt = BaristaRuntimeFactory.CreateRuntime()) using (var ctx = rt.CreateContext()) using (ctx.Scope()) { var value = ctx.CreateString("Test 123"); bop.TryAdd(value); Assert.Throws <ArgumentNullException>(() => { bop.TryGet(JavaScriptValueSafeHandle.Invalid, out JsValue retrievedValue); }); Assert.Throws <ArgumentNullException>(() => { bop.TryGet(default(JavaScriptValueSafeHandle), out JsValue retrievedValue); }); } }
public void BaristaObjectPoolTryGetRetrievesAddedItems() { var bop = new BaristaObjectPool <JsValue, JavaScriptValueSafeHandle>(); using (var rt = BaristaRuntimeFactory.CreateRuntime()) using (var ctx = rt.CreateContext()) using (ctx.Scope()) { var value = ctx.CreateString("Test 123"); bop.TryAdd(value); bop.TryGet(value.Handle, out JsValue retrievedValue); Assert.Same(value, retrievedValue); } }