Ejemplo n.º 1
0
        public void BaristaObjectPoolTryAddItemsCanOnlyBeAddedOnce()
        {
            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);
                        var result = bop.TryAdd(value);
                        Assert.False(result);
                        Assert.Equal(1, bop.Count);
                    }
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 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);
                    }
        }
Ejemplo n.º 4
0
        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);
                        });
                    }
        }
Ejemplo n.º 5
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);
                        });
                    }
        }