예제 #1
0
        public void TestCreate()
        {
            var accessor = new ConcurrentObjectAccessor <TestClass>();

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
        }
예제 #2
0
        public void TestCreateWithName()
        {
            var accessor = new ConcurrentObjectAccessor <TestClass>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            Assert.AreEqual("Hello", accessor.Reference.Name);
        }
예제 #3
0
        public void TestSwapNewAndExecuteFunction()
        {
            var accessor = new ConcurrentObjectAccessor <TestClass>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            var retVal = accessor.SwapNewAndExecute(obj => obj.Name);

            Assert.AreEqual("Hello", retVal);
        }
        public void TestExecuteReadLockedFunction()
        {
            var accessor = new ConcurrentObjectAccessor <TestObject>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            var retVal = accessor.ExecuteReadLocked(obj => obj.Name);

            Assert.AreEqual("Hello", retVal);
        }
        public void TestSwapNewAndExecuteFunctionWithInit()
        {
            var accessor = new ConcurrentObjectAccessor <TestObject, TestObject>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            var retVal = accessor.SwapNewAndExecute(obj => { obj.Name = "Replaced"; }, obj => obj.Name);

            Assert.AreEqual("Hello", retVal);
            Assert.AreEqual("Replaced", accessor.Reference.Name);
        }
        public void TestSwapNewAndExecuteGatedFunction()
        {
            var accessor = new ConcurrentObjectAccessor <TestObject, TestObject>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            var retVal = accessor.SwapNewAndExecute(gate => true, obj => obj.Name);

            Assert.AreEqual("Hello", retVal);
            retVal = accessor.SwapNewAndExecute(gate => false, obj => obj.Name);
            Assert.AreEqual(null, retVal);
        }
        public void TestSwapNewAndExecuteProcedureWithInit()
        {
            var accessor = new ConcurrentObjectAccessor <TestObject, TestObject>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            string retVal = "";

            accessor.SwapNewAndExecute(obj => { obj.Name = "Replaced"; }, obj => { retVal = obj.Name; });
            Assert.AreEqual("Hello", retVal);
            Assert.AreEqual("Replaced", accessor.Reference.Name);
        }
예제 #8
0
        public void TestSwapNewAndExecuteProcedure()
        {
            var accessor = new ConcurrentObjectAccessor <TestClass>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            string retVal = "";

            accessor.SwapNewAndExecute(obj =>
            {
                retVal = obj.Name;
            });
            Assert.AreEqual("Hello", retVal);
        }
        public void TestExecuteReadLockedProcedure()
        {
            var accessor = new ConcurrentObjectAccessor <TestObject, TestObject>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            string retVal = "";

            accessor.ExecuteReadLocked(obj =>
            {
                retVal = obj.Name;
            });
            Assert.AreEqual("Hello", retVal);
        }
        public void TestSwapNewAndExecuteGatedProcedure()
        {
            var accessor = new ConcurrentObjectAccessor <TestObject, TestObject>("Hello");

            Assert.IsNotNull(accessor);
            Assert.IsNotNull(accessor.Reference);
            string retVal = "";

            accessor.SwapNewAndExecute(gate => true, cleanupOldReference: obj =>
            {
                retVal = obj.Name;
            });
            Assert.AreEqual("Hello", retVal);
            retVal = null;
            accessor.SwapNewAndExecute(gate => false, cleanupOldReference: obj =>
            {
                retVal = obj.Name;
            });
            Assert.AreEqual(null, retVal);
        }