コード例 #1
0
        public void GetInitializedPropertiesTest()
        {
            var dObj = new DataObjectForTest {
                Name = "Вася"
            };

            string[] expected =
            {
                Information.ExtractPropertyPath <DataObjectForTest>(x => x.Name),
                Information.ExtractPropertyPath <DataObjectForTest>(x => x.Height),
                Information.ExtractPropertyPath <DataObjectForTest>(x => x.BirthDate),
                Information.ExtractPropertyPath <DataObjectForTest>(x => x.Gender),
                Information.ExtractPropertyPath <DataObjectForTest>(x => x.__PrimaryKey)
            };

            string[] actual = dObj.GetInitializedProperties();
            Assert.True(EquivalenceMethods.EqualStringArrays(expected, actual));

            var obj = new ClassWithCaptions();

            string[] expected1 =
            {
                Information.ExtractPropertyPath <ClassWithCaptions>(x => x.InformationTestClass4),
                Information.ExtractPropertyPath <ClassWithCaptions>(x => x.__PrimaryKey)
            };

            string[] actual1 = obj.GetInitializedProperties();
            Assert.True(EquivalenceMethods.EqualStringArrays(expected1, actual1));
        }
コード例 #2
0
        public void ToStringTest()
        {
            // Входной параметр: объект класса DataObjectForTest со свойствами Name = Кеша, Gender = false, Height = 170.
            var obj = new DataObjectForTest {
                Name = "Кеша", Gender = false, Height = 170
            };
            string actual = obj.ToString();

            // Ожидаемый результат: строка "DataObjectForTest(Name=Кеша, Gender=False, Height=170)"
            Assert.Equal("DataObjectForTest(Gender=False, Height=170, Name=Кеша)", actual);

            // Добавляем объекту динамичемкие свойства.
            obj.DynamicProperties.Add("property1", new DataObjectForTest());
            obj.DynamicProperties.Add("IntMasterProperty", "some string");

            // Ожидаемый результат: строка "DataObjectForTest(Name=Кеша, Gender=False, Height=170,property1={ef52b97-dd64-4cf2-a5a8-2aed7a074420}, property3=somestring)"
            string actual1 = obj.ToString();

            // Однакоко строки не эквиваленты засчёт того, что свойство property1 формируется динамически.
            Assert.NotEqual("DataObjectForTest(Name=Кеша, Gender=False, Height=170,property1={ef52b97-dd64-4cf2-a5a8-2aed7a074420}, property3=somestring)", actual1);

            // Берём метод ToString с параметрами Name, Height.
            string actual2 = obj.ToString(new[] { "Name", "Height" });

            // Ожидаемый результат: строка "DataObjectForTest(Name=Кеша, Height=170)"
            Assert.Equal("DataObjectForTest(Height=170, Name=Кеша)", actual2);
        }
コード例 #3
0
        public void CopySysPropsArgumentExceptionTest()
        {
            var exception = Xunit.Record.Exception(() =>
            {
                var dObj = new DataObjectForTest();
                dObj.CopySysProps(null);
            });

            Assert.IsType(typeof(ArgumentException), exception);
        }
コード例 #4
0
        public void KeyGenGenerateUniqueTest()
        {
            ICSSoft.STORMNET.DataObject dataObject = new DataObjectForTest();

            // Установка флага уникального ключа в false.
            dataObject.PrimaryKeyIsUnique = false;
            var result = KeyGenerator.GenerateUnique(dataObject, null);

            // Проверка смены флага уникального ключа на true.
            Assert.Equal(true, dataObject.PrimaryKeyIsUnique);
        }
コード例 #5
0
        public void SetLoadingStateTest()
        {
            // Входной параметр: новый объект класса DataObjectForTest.
            var obj = new DataObjectForTest();

            obj.SetLoadingState(LoadingState.Loaded);
            obj.SetLoadingState(LoadingState.NotLoaded);

            // Ожидаемый результат: сосотяние загрузки объекта = NotLoaded.
            Assert.True(obj.GetLoadingState() == LoadingState.NotLoaded);
        }
コード例 #6
0
        public void AddLoadedPropertiesNullReferenceExceptionTest()
        {
            var exception = Xunit.Record.Exception(() =>
            {
                // Входной параметр: новый объект класса DataObjectForTest.
                var obj = new DataObjectForTest();
                obj.AddLoadedProperties((string[])null);
            });

            Assert.IsType(typeof(NullReferenceException), exception);
        }
コード例 #7
0
        public void UnlockObjectDifferentKeyExceptionTest()
        {
            var exception = Xunit.Record.Exception(() =>
            {
                var dObj = new DataObjectForTest();
                dObj.LockObject(666);
                dObj.UnLockObject(6);
            });

            Assert.IsType(typeof(UnlockObjectDifferentKeyException), exception);
        }
コード例 #8
0
        public void SetDataCopyTest()
        {
            // Входной параметр: новый объект класса DataObjectForTest.
            var obj  = new DataObjectForTest();
            var obj1 = new DataObjectForTest();

            obj.Name = "Семён";
            obj.SetDataCopy(obj1);

            // Ожидаемый результат: подтверждение наличия внутренней копии у исходгного объекта данных.
            Assert.NotNull(obj.GetDataCopy());
        }
コード例 #9
0
        public void UnLockObjectTest()
        {
            // Входной параметр: новый объект класса DataObjec4Test.
            var dObj = new DataObjectForTest();

            dObj.LockObject(666);
            Assert.True(dObj.IsReadOnly);

            // Ожидаемый результат: объект сначала блокируется, потом блокировка снимается.
            dObj.UnLockObject(666);
            Assert.False(dObj.IsReadOnly);
        }
コード例 #10
0
        public void DisableInitDataCopyTest()
        {
            // Входной параметр: новый объект класса DataObjectForTest().
            var dObj   = new DataObjectForTest();
            var result = new DataObjectForTest();

            dObj.CopyTo(result, true, true, true);
            dObj.DisableInitDataCopy();

            // Ожидаемый результат: несмотря на отключение инициализации копии данных у исходного объкекта, данные у исходного объекта и его копии эквивалентны.
            Assert.Equal(dObj.GetDataCopy(), result.GetDataCopy());
        }
コード例 #11
0
        public void ClearPrototypingTest()
        {
            // Входные параметры: два объекта класса DataObjectForTest.
            var dObj   = new DataObjectForTest();
            var result = new DataObjectForTest();

            dObj.Prototyping();
            dObj.CopySysProps(result);
            dObj.ClearPrototyping();

            // Ожидаемый результат: значение свойства __PrototypeKey у исходного объекта со снятой прототипизацией и копии исходного объекта не эквивалентны.
            Assert.NotEqual(dObj.__PrototypeKey, result.__PrototypeKey);
        }
コード例 #12
0
        public void IsReadOnlyTest()
        {
            // Входной параметр: новый объект класса DataObjec4Test.
            var dObj = new DataObjectForTest();

            dObj.LockObject(null);

            // Ожидаемый результат: объект не залочен.
            Assert.False(dObj.IsReadOnly);
            dObj.LockObject(666);

            // Ожидаемый результат: объект залочен.
            Assert.True(dObj.IsReadOnly);
        }
コード例 #13
0
        public void GetInitializedPropertiesWithMasterTest()
        {
            // Входной параметр: объект класса DataObjectForTest.
            var dObj   = new DataObjectForTest();
            var actual = dObj.GetInitializedProperties(true);

            // Ожидаемый результат: массив строк {"Name", "Height", "BirthDate", "Gender", "_PrimaryKey"}.
            var expected = new string[] { "Name", "Height", "BirthDate", "Gender", "__PrimaryKey" };

            Assert.True(EquivalenceMethods.EqualStringArrays(actual, expected));
            var actual1 = dObj.GetInitializedProperties(false);

            Assert.True(EquivalenceMethods.EqualStringArrays(actual1, expected));
        }
コード例 #14
0
        public void SetStatusTest()
        {
            // Входной параметр: новый объект класса DataObjectForTest.
            var obj = new DataObjectForTest();

            obj.SetLoadingState(LoadingState.NotLoaded);
            obj.SetStatus(ObjectStatus.Deleted);
            obj.SetStatus(ObjectStatus.Altered);
            obj.SetStatus(ObjectStatus.Deleted);
            obj.SetStatus(ObjectStatus.UnAltered);

            // Ожидаемый результат: статус объекта = Created.
            Assert.True(obj.GetStatus() == ObjectStatus.Created);
        }
コード例 #15
0
        public void GetPresentationValueDelegateTest()
        {
            const string Expected = "MySuperPuperPresentationValue";

            // Установим делегат для предоставления презентационного значения для объекта
            STORMNET.DataObject.GetPresentationValueDelegate = dataObject => Expected;

            // Вытащим презентационное значение для любого объекта
            var actual = new DataObjectForTest().GetPresentationValue();

            Assert.Equal(Expected, actual);

            // Вернем на исходную делегат для предоставления презентационного значения для объекта
            STORMNET.DataObject.GetPresentationValueDelegate = null;
        }
コード例 #16
0
        public void CopySysPropsTest()
        {
            // Входной параметр: новый объект класса DataObjectForTest().
            var dObj = new DataObjectForTest {
                Name = "Вася", __PrimaryKey = "C2EE01FC-1664-4005-AADB-968809E32E33"
            };
            var result = new DataObjectForTest();

            dObj.CopySysProps(result);
            result.GetInitializedProperties();

            // Ожидаемый результат: значения поля __PrimaryKey у исходного и скопированого объектов совпадают, а значения поля Name - нет.
            Assert.Equal(dObj.__PrimaryKey, result.__PrimaryKey);
            Assert.NotEqual(dObj.Name, result.Name);
        }
コード例 #17
0
        /// <summary>
        /// Создаётся объект DataObjectForTest, вправляется ему новый гуид, Name присваивается в Вася, выполняется InitDataCopy и присваивается Height = 200 (Статус UnAltered).
        /// </summary>
        /// <returns>
        /// DataObjectForTest с новым гуидом, именем "Вася", ростом = 200.
        /// </returns>
        internal virtual STORMNET.DataObject CreateDataObject()
        {
            // TODO: Instantiate an appropriate concrete class.
            var target = new DataObjectForTest();

            target.SetExistObjectPrimaryKey(Guid.NewGuid());

            target.Name = "Вася";

            target.InitDataCopy();

            target.Height = 200;

            return(target);
        }
コード例 #18
0
        public void DynamicPropertiesTest()
        {
            // Входные параметры: новый объект типа DataObjectForTest, новый гуид.
            var          dObj = new DataObjectForTest();
            var          g    = new Guid("{C2EE01FC-1664-4005-AADB-968809E32E33}");
            const string Key  = "myProp";

            dObj.DynamicProperties[Key] = g;
            object dp = dObj.DynamicProperties[Key];

            Assert.Equal(g, dp);
            dObj.InitDataCopy();
            object dp1 = dObj.DynamicProperties[Key];

            Assert.Equal(g, dp1);
        }
コード例 #19
0
        public void InitDataCopyTest()
        {
            try
            {
                var obj = new DataObjectForTest();
                obj.DisableInitDataCopy();
                obj.InitDataCopy();
                obj.GetDataCopy();
            }
            catch
            {
                Assert.True(false, "Assert.Fail");
            }

            // Ожидаемый результат: отсутствие исключений, возникающих при использовании метода InitDataCopy().
        }
コード例 #20
0
        public void GetPresentationValueTest()
        {
            // Входной параметр: новый объект типа DataObjectForTest.
            var dObj = new DataObjectForTest();

            // Ожидаемый результат: строка "DataObjectForTest(Gender=True, Height=0)"
            Assert.Equal(null, dObj.GetPresentationValue());

            // Входной параметр: новый объект типа DataObjectForTest со значением свойств: Name="Поросенок Пётр", Gender=false.
            var dObj1 = new DataObjectForTest {
                Name = "Поросенок Пётр", Gender = false
            };

            // Ожидаемый результат: "Поросенок Пётр"
            Assert.Equal("Поросенок Пётр", dObj1.GetPresentationValue());
        }
コード例 #21
0
        public void CopyToObjectDataCopyTest()
        {
            // Входные параметры: два объекта класса DataObjectForTest.
            var source = (DataObjectForTest)CreateDataObject();

            STORMNET.DataObject target = new DataObjectForTest();

            // Ожидаемый результат: В объект target копируется объект source.
            source.CopyTo(target, true, true, true);
            target.InitDataCopy();
            Assert.Equal(((DataObjectForTest)source.GetDataCopy()).Name, ((DataObjectForTest)target.GetDataCopy()).Name);

            ((DataObjectForTest)source.GetDataCopy()).Name = "Коля";
            Assert.NotEqual(((DataObjectForTest)source.GetDataCopy()).Name, ((DataObjectForTest)target.GetDataCopy()).Name);
            Console.WriteLine(((DataObjectForTest)source.GetDataCopy()).Name + " " + ((DataObjectForTest)target.GetDataCopy()).Name);
        }
コード例 #22
0
        public void LockObjectTest()
        {
            var exception = Xunit.Record.Exception(() =>
            {
                // Входной параметр: новый объект класса DataObjec4Test.
                var dObj = new DataObjectForTest();

                // Ожидаемый результат: объект переведён в заблокирогванное состояние.
                dObj.LockObject(1);
                Assert.True(dObj.IsReadOnly);

                // Вызываем LockObject второй раз, но уже с другим ключом для того, чтобы выпало исключение.
                dObj.LockObject(2);
            });

            Assert.IsType(typeof(DataObjectIsReadOnlyException), exception);
        }
コード例 #23
0
        public void SetStatusFromCreatedTest()
        {
            // Входной параметр: новый объкт класса DataObjectForTest.
            var source = new DataObjectForTest();

            source.SetStatus(ObjectStatus.Altered);

            // Ожидаемый результат: изменение статуса объекта на Created.
            Assert.Equal(source.GetStatus(), ObjectStatus.Created);
            source.SetStatus(ObjectStatus.UnAltered);
            Assert.Equal(source.GetStatus(), ObjectStatus.Created);
            source.SetStatus(ObjectStatus.Created);
            Assert.Equal(source.GetStatus(), ObjectStatus.Created);
            source.SetStatus(ObjectStatus.Deleted);

            // Ожидаемый результат: изменение статуса объекта на Deleted.
            Assert.Equal(source.GetStatus(), ObjectStatus.Deleted);
        }