Пример #1
0
        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);
        }
Пример #2
0
        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);
                        });
                    }
        }
Пример #3
0
        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);
                    }
        }