public void BaristaObjectPoolAddOrGetThrowsOnInvalidHandles() { 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"); Assert.Throws <ArgumentNullException>(() => { var addedVal = bop.GetOrAdd(JavaScriptValueSafeHandle.Invalid, () => { return(ctx.CreateValue <JsString>(value.Handle)); }); }); Assert.Throws <ArgumentNullException>(() => { var addedVal = bop.GetOrAdd(default(JavaScriptValueSafeHandle), () => { return(ctx.CreateValue <JsString>(value.Handle)); }); }); } }
public void BaristaObjectPoolCanBeCreated() { var bop = new BaristaObjectPool <JsValue, JavaScriptValueSafeHandle>(); Assert.NotNull(bop); Assert.Equal(0, bop.Count); }
public void BaristaObjectPoolCanAddOrGetItemsThatHaveBeenDisposed() { var bop = new BaristaObjectPool <JsValue, JavaScriptValueSafeHandle>(); using (var rt = BaristaRuntimeFactory.CreateRuntime()) using (var ctx = rt.CreateContext()) using (ctx.Scope()) { var str = "Hello, World."; var handle = ctx.Engine.JsCreateString(str, (ulong)str.Length); var addedVal = bop.GetOrAdd(handle, () => { return(new JsString(rt.Engine, ctx, handle)); }); addedVal.Dispose(); addedVal = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.WaitForFullGCComplete(); GC.Collect(); var added2Val = bop.GetOrAdd(handle, () => { return(ctx.CreateValue <JsString>(handle)); }); Assert.Equal(1, bop.Count); } }
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 BaristaObjectPoolCanTryAddItems() { 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.Equal(1, bop.Count); } }
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); } }
public void BaristaObjectPoolTryAddItemsCannotBeNull() { 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"); Assert.Throws <ArgumentNullException>(() => { bop.TryAdd(null); }); } }
public void BaristaObjectPoolCanAddOrGetItems() { 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"); var addedVal = bop.GetOrAdd(value.Handle, () => { return(ctx.CreateValue <JsString>(value.Handle)); }); Assert.Equal(1, bop.Count); Assert.Same(value, addedVal); } }
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); }); } }