Пример #1
0
        public void TestInteropStackItem()
        {
            using (var engine = CreateEngine(null))
            {
                using (var o1 = new DisposableDummy())
                    using (var o2 = new DisposableDummy())
                        using (var bInterop1 = engine.CreateInterop(o1))
                            using (var bInterop2 = engine.CreateInterop(o2))
                            {
                                Assert.AreEqual(bInterop1.Value, o1);
                                Assert.AreEqual(bInterop2.Value, o2);

                                Assert.IsFalse(o1.IsDisposed);
                                Assert.IsFalse(o2.IsDisposed);
                            }
            }
        }
Пример #2
0
        public void TestStacksEngine()
        {
            using (var engine = CreateEngine(null))
            {
                // Empty stack

                Assert.AreEqual(engine.ResultStack.Count, 0);
                Assert.IsFalse(engine.ResultStack.TryPeek(0, out IStackItem obj));

                // Check integer

                foreach (var bi in TestBigIntegers)
                {
                    using (var it = engine.CreateInteger(bi))
                        CheckItem(engine, it);
                }

                // Check bool

                using (var it = engine.CreateBool(true))
                    CheckItem(engine, it);

                using (var it = engine.CreateBool(false))
                    CheckItem(engine, it);

                // Check ByteArray

                for (int x = 0; x < 100; x++)
                {
                    using (var it = engine.CreateByteArray(new BigInteger(Rand.Next()).ToByteArray()))
                        CheckItem(engine, it);
                }

                // Check Interops

                var dic = new Dictionary <string, string>()
                {
                    { "key", "value" }
                };

                using (var it = engine.CreateInterop(dic))
                    CheckItem(engine, it);

                // Check disposed object

                {
                    var dis = new DisposableDummy();
                    using (var it = engine.CreateInterop(dis))
                        CheckItem(engine, it);

                    using (var it = engine.CreateInterop(dis))
                        engine.ResultStack.Push(it);
                }

                GC.Collect();
                GC.WaitForPendingFinalizers();

                using (var id = engine.ResultStack.Pop <InteropStackItem>())
                {
                    Assert.IsTrue(id != null && id.Value is DisposableDummy dd && !dd.IsDisposed);
                }
            }
        }