Пример #1
0
        public void State_ManyTest()
        {
            #region Create objects
            DebugLog("Create 1000 objects");
            for (int ii = 0; ii < 1000; ii++)
            {
                xObjects[ii] = new Class_StateInfo_Data("Name" + ii, "Description" + ii);
                yObjects[ii] = new Class_StateInfo_Data("Property" + ii, "Value" + ii);
            }
            #endregion

            #region Assign objects
            var sw = new Stopwatch();
            sw.Start();
            for (int ii = 0; ii < 1000; ii++)
            {
                xObjects[ii].zObject().State_Set(yObjects[ii]);
            }
            sw.Stop();
            var time1 = sw.ElapsedTicks;
            DebugLog("Assignment of objects = " + time1);
            GarbageCollectAll();
            #endregion

            #region Normal check time
            sw = new Stopwatch();
            sw.Start();
            var r = new Random();
            for (int ii = 0; ii < 1000; ii++)
            {
                var jj = r.Next(1, 1000);
                Assert.Equal("Property" + jj, yObjects[jj].Name);
                Assert.Equal("Value" + jj, yObjects[jj].Description);
            }
            sw.Stop();
            var time2 = sw.ElapsedTicks;
            DebugLog("Normal check = " + time2);
            #endregion

            #region Assignment checks
            sw = new Stopwatch();
            sw.Start();
            for (int ii = 0; ii < 1000; ii++)
            {
                var jj      = r.Next(1, 1000);
                var yObject = xObjects[jj].zObject().State_Get <Class_StateInfo_Data>();
                Assert.Equal("Property" + jj, yObject.Name);
                Assert.Equal("Value" + jj, yObject.Description);
            }
            sw.Stop();
            var time3 = sw.ElapsedTicks;
            DebugLog("Assignment checks = " + time3);
            #endregion
        }
Пример #2
0
        public void StateComplete_Test()
        {
            #region Testdata
            // Assign new state to object and assign result values
            var y1        = new object();
            var y1_result = new Class_StateInfo_Data("Name1", "Description1");
            var y1_state  = _lamed.Types.Class.StateInfo.Key_Get <Class_StateInfo_Data>(y1);
            y1_state.Name        = "Name1";
            y1_state.Description = "Description1";

            var y2        = new object();
            var y2_result = new Class_StateInfo_Data("Name2", "Description2");
            var y2_state  = _lamed.Types.Class.StateInfo.Key_Get <Class_StateInfo_Data>(y2, false); // Note the false parameter - do not save the state
            Assert.Equal(null, y2_state);
            #endregion

            // Clear the memory
            y1_state = null;
            y2_state = null;
            GarbageCollectAll();

            // Test results for y1
            Class_StateInfo_Data y1_stateGet1 = _lamed.Types.Class.StateInfo.Key_Get <Class_StateInfo_Data>(y1);
            object y1_stateGet2 = _lamed.Types.Class.StateInfo.Key_Get(y1);
            string errorMsg;
            Assert.True(_lamed.lib.Test.ObjectsAreEqual(y1_stateGet1, y1_stateGet2, out errorMsg), errorMsg);  // state01_new1 == state01_new2
            Assert.True(_lamed.lib.Test.ObjectsAreEqual(y1_result, y1_stateGet1, out errorMsg), errorMsg);     // y1_result == y1_stateGet1
            Assert.True(_lamed.lib.Test.ObjectsAreEqual(y1_result, y1_stateGet2, out errorMsg), errorMsg);     // y1_result == y1_stateGet2

            // Test results for y2
            Class_StateInfo_Data y2_StateGet1 = _lamed.Types.Class.StateInfo.Key_Get <Class_StateInfo_Data>(y2);
            Assert.False(_lamed.lib.Test.ObjectsAreEqual(y2_result, y2_StateGet1, out errorMsg), errorMsg);  // y2_result != y2_StateGet1  [false parameter]

            #region Error condition
            Assert.Throws <InvalidOperationException>(() => _lamed.Types.Class.StateInfo.Key_Get <xTypes_Class>(y1));

            // Re-assign property & retest error condition
            _lamed.Types.Class.StateInfo.Key_Set(y1, this);
            _lamed.Types.Class.StateInfo.Key_Get <xTypes_Class>(y1);  // No exception is thrown
            #endregion
        }