Exemple #1
0
        public void RenumerateDetailsAfterDeleteTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                const string First  = "Первый";
                const string Second = "Второй";
                const string Third  = "Третий";
                const string Fourth = "Четвертый";
                const string Fifth  = "Пятый";
                IDataService ds     = dataService;

                Кошка aggregator = new Кошка
                {
                    ДатаРождения = NullableDateTime.Now,
                    Тип          = ТипКошки.Дикая,
                    Порода       = new Порода()
                };
                aggregator.Лапа.AddRange(
                    new Лапа {
                    Цвет = First
                },
                    new Лапа {
                    Цвет = Second
                },
                    new Лапа {
                    Цвет = Third
                },
                    new Лапа {
                    Цвет = Fourth
                });
                ds.UpdateObject(aggregator);

                // Для проверки того, что у свойства Номер есть атрибут Order.
                int[] initialNumbers = aggregator.Лапа.Cast <Лапа>().Select(x => x.Номер).ToArray();

                // Удаляются второй и третий элементы.
                aggregator.Лапа.ItemByIndex(1).SetStatus(ObjectStatus.Deleted);
                aggregator.Лапа.ItemByIndex(2).SetStatus(ObjectStatus.Deleted);
                aggregator.Лапа.Renumerate();
                ds.UpdateObject(aggregator);

                // Новый элемент добавляется в конец массива.
                aggregator.Лапа.Add(new Лапа {
                    Цвет = Fifth
                });
                ds.UpdateObject(aggregator);

                Кошка loadedAggr = new Кошка();
                loadedAggr.SetExistObjectPrimaryKey(aggregator.__PrimaryKey);
                ds.LoadObject(Кошка.Views.КошкаE, loadedAggr);

                string expectedNumbers = string.Join(string.Empty, 1, 2, 3, 4);
                string actualNumbers   = string.Join(string.Empty, initialNumbers);
                string expectedOrder   = string.Join(string.Empty, First, Fourth, Fifth);
                string actualOrder     = string.Join(String.Empty, loadedAggr.Лапа.Cast <Лапа>().Select(x => x.Цвет));

                Assert.Equal(expectedNumbers, actualNumbers);
                Assert.Equal(expectedOrder, actualOrder);
            }
        }
Exemple #2
0
        public void AgregatorPropertyAddToViewTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                var ds = (SQLDataService)dataService;

                if (ds is OracleDataService)
                {
                    // TODO: Fix multithreading support for OracleDataService and Long names.
                    continue;
                }

                ds.OnGenerateSQLSelect -= ThreadTesting_OnGenerateSQLSelect;
                ds.OnGenerateSQLSelect += ThreadTesting_OnGenerateSQLSelect;
                output.WriteLine($"start {ds.GetType().Name}");

                Порода порода = new Порода()
                {
                    Название = "Беспородная"
                };
                Кошка кошка = new Кошка()
                {
                    Кличка = nameof(AgregatorPropertyAddToViewTest), Порода = порода, ДатаРождения = NullableDateTime.Now, Тип = ТипКошки.Дикая
                };
                кошка.Лапа.Add(new Лапа()
                {
                    Номер = 1
                });
                ds.UpdateObject(кошка);

                MultiThreadingTestTool multiThreadingTestTool = new MultiThreadingTestTool(MultiThreadMethod);
                multiThreadingTestTool.StartThreads(150, ds);

                var exception = multiThreadingTestTool.GetExceptions();

                if (exception != null)
                {
                    foreach (var item in exception.InnerExceptions)
                    {
                        output.WriteLine(item.Value.ToString());
                    }

                    throw exception.InnerException;
                }

                ds.OnGenerateSQLSelect -= ThreadTesting_OnGenerateSQLSelect;

                кошка.SetStatus(ObjectStatus.Deleted);
                порода.SetStatus(ObjectStatus.Deleted);
                DataObject[] dataObjsForDel = new DataObject[] { кошка, порода };
                ds.UpdateObjects(ref dataObjsForDel);
            }
        }
        public void DetailsStringLoadingTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange
                SQLDataService ds = (SQLDataService)dataService;

                const string First    = "Первый";
                const string Second   = "Второй";
                const string Third    = "Третий";
                const string Fourth   = "Четвертый";
                const int    catCount = 1000;

                for (int i = 0; i < catCount; i++)
                {
                    Кошка aggregator = new Кошка
                    {
                        ДатаРождения = (NullableDateTime)DateTime.Now,
                        Тип          = ТипКошки.Дикая,
                        Порода       = new Порода {
                            Название = "Чеширская" + i
                        },
                        Кличка = "Мурка" + i
                    };
                    aggregator.Лапа.AddRange(
                        new Лапа {
                        Цвет = First
                    },
                        new Лапа {
                        Цвет = Second
                    },
                        new Лапа {
                        Цвет = Third
                    },
                        new Лапа {
                        Цвет = Fourth
                    });

                    ds.UpdateObject(aggregator);
                }

                LoadingCustomizationStruct lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Кошка), Кошка.Views.КошкаE);

                // Act
                ObjectStringDataView[] dataObjectDefs = ds.LoadStringedObjectView('|', lcs);

                // Assert
                Assert.Equal(catCount, dataObjectDefs.Length);
            }
        }
Exemple #4
0
        public void GetLcsTestSelfInvert()
        {
            var кошка = new Кошка();

            IQueryable <Кошка> queryList       = new List <Кошка>().AsQueryable();
            IQueryable <Кошка> query           = from pn in queryList where кошка == pn select pn;
            Expression         queryExpression = query.Expression;

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction =
                    this.ldef.GetFunction(
                        this.ldef.funcEQ, кошка.__PrimaryKey, new VariableDef(this.ldef.GuidType, SQLWhereLanguageDef.StormMainObjectKey))
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка)));

            Assert.True(Equals(expected, actual));
        }
Exemple #5
0
        public void DeleteCascadeDetailTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange.
                SQLDataService ds = dataService as SQLDataService;

                Кошка кошка = new Кошка
                {
                    ДатаРождения = (NullableDateTime)DateTime.Now,
                    Тип          = ТипКошки.Дикая,
                    Порода       = new Порода {
                        Название = "Чеширская"
                    },
                    Кличка = "Мурка"
                };
                var лапа = new Лапа {
                    Номер = 1
                };
                var перелом = new Перелом()
                {
                    Тип = ТипПерелома.Закрытый, Дата = DateTime.Now
                };
                кошка.Лапа.Add(лапа);
                лапа.Перелом.Add(перелом);
                ds.UpdateObject(кошка);
                // Act & Assert.
                var aggregatorForUpdateActual =
                    ds.Query <Кошка>(Кошка.Views.КошкаE)
                    .First(x => x.__PrimaryKey == кошка.__PrimaryKey);
                aggregatorForUpdateActual.SetStatus(ObjectStatus.Deleted);
                ds.UpdateObject(aggregatorForUpdateActual);


                var aggregatorForUpdateDeleted = ds.Query <Кошка>(Кошка.Views.КошкаE).FirstOrDefault(x => x.__PrimaryKey == кошка.__PrimaryKey);
                var detailDeleted = ds.Query <Перелом>(Перелом.Views.ПереломE).FirstOrDefault(x => x.__PrimaryKey == перелом.__PrimaryKey);

                Assert.Null(aggregatorForUpdateDeleted);
                Assert.Null(detailDeleted);
            }
        }
Exemple #6
0
        public void TestEnum()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange.
                Кошка cat1 = new Кошка {
                    Тип = ТипКошки.Домашняя
                };
                Кошка cat2 = new Кошка {
                    Тип = ТипКошки.Дикая
                };
                Кошка cat3 = new Кошка {
                    Тип = ТипКошки.НетЗначения
                };
                var objs = new DataObject[] { cat1, cat2, cat3 };
                var ds   = (SQLDataService)dataService;
                ds.UpdateObjects(ref objs);

                var expected = ds.Query <Кошка>(Кошка.Views.КошкаL).FirstOrDefault(w => w.Тип == ТипКошки.Домашняя);

                // Assert.
                Assert.NotNull(expected);
            }
        }
        public void DetailsLoadingTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                //TODO: Fix OracleDataService error.
                if (dataService is OracleDataService)
                {
                    continue;
                }
                // Arrange
                SQLDataService ds = (SQLDataService)dataService;

                const string First    = "Первый";
                const string Second   = "Второй";
                const string Third    = "Третий";
                const string Fourth   = "Четвертый";
                const int    catCount = 1000;

                for (int i = 0; i < catCount; i++)
                {
                    Кошка aggregator = new Кошка
                    {
                        ДатаРождения = (NullableDateTime)DateTime.Now,
                        Тип          = ТипКошки.Дикая,
                        Порода       = new Порода {
                            Название = "Чеширская" + i
                        },
                        Кличка = "Мурка" + i
                    };
                    aggregator.Лапа.AddRange(
                        new Лапа {
                        Цвет = First
                    },
                        new Лапа {
                        Цвет = Second
                    },
                        new Лапа {
                        Цвет = Third
                    },
                        new Лапа {
                        Цвет = Fourth
                    });

                    ds.UpdateObject(aggregator);
                }

                LoadingCustomizationStruct lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Кошка), Кошка.Views.КошкаE);

                // Act
                DataObject[] dataObjects = ds.LoadObjects(lcs);

                // Assert
                Assert.Equal(catCount, dataObjects.Length);

                foreach (Кошка dataObject in dataObjects)
                {
                    Assert.Equal(4, dataObject.Лапа.Count);
                    Assert.True(dataObject.Лапа.Cast <Лапа>().Any(paw => paw.Цвет == First));
                    Assert.True(dataObject.Лапа.Cast <Лапа>().Any(paw => paw.Цвет == Second));
                    Assert.True(dataObject.Лапа.Cast <Лапа>().Any(paw => paw.Цвет == Third));
                    Assert.True(dataObject.Лапа.Cast <Лапа>().Any(paw => paw.Цвет == Fourth));
                }
            }
        }
Exemple #8
0
        public void DeleteUpdateAssociationTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange.
                SQLDataService ds = dataService as SQLDataService;

                //TODO: Fix OracleDataService error.
                if (dataService is OracleDataService)
                {
                    continue;
                }
                var masterBreedType = new ТипПороды {
                    Название = "тип породы1", ДатаРегистрации = DateTime.Now
                };
                var innerMasterBreed = new Порода {
                    Название = "порода1", ТипПороды = masterBreedType
                };
                var innerMasterCat = new Кошка
                {
                    Кличка       = "кошка",
                    ДатаРождения = (NullableDateTime)DateTime.Now,
                    Тип          = ТипКошки.Дикая,
                    Порода       = innerMasterBreed
                };
                var innerKitten = new Котенок {
                    КличкаКотенка = "котеночек", Кошка = innerMasterCat
                };

                // Act
                ds.UpdateObject(innerKitten);

                LoadingCustomizationStruct lcsKitten    = LoadingCustomizationStruct.GetSimpleStruct(typeof(Котенок), Котенок.Views.КотенокE);
                LoadingCustomizationStruct lcsCat       = LoadingCustomizationStruct.GetSimpleStruct(typeof(Кошка), Кошка.Views.КошкаE);
                LoadingCustomizationStruct lcsBreed     = LoadingCustomizationStruct.GetSimpleStruct(typeof(Порода), Порода.Views.ПородаE);
                LoadingCustomizationStruct lcsBreedType = LoadingCustomizationStruct.GetSimpleStruct(typeof(ТипПороды), ТипПороды.Views.ТипПородыE);

                DataObject[] dataObjectsKitten     = ds.LoadObjects(lcsKitten);
                DataObject[] dataObjectsCats       = ds.LoadObjects(lcsCat);
                DataObject[] dataObjectsBreed      = ds.LoadObjects(lcsBreed);
                DataObject[] dataObjectsBreedTypes = ds.LoadObjects(lcsBreedType);

                int countKittenBefore    = ds.GetObjectsCount(lcsKitten);
                int countCatBefore       = ds.GetObjectsCount(lcsCat);
                int countBreedBefore     = ds.GetObjectsCount(lcsBreed);
                int countBreedTypeBefore = ds.GetObjectsCount(lcsBreed);

                List <DataObject> objectsForUpdateList = new List <DataObject>();

                foreach (Котенок котенок in dataObjectsKitten)
                {
                    котенок.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(котенок);
                }

                foreach (Кошка кошка in dataObjectsCats)
                {
                    кошка.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(кошка);
                }

                foreach (Порода порода in dataObjectsBreed)
                {
                    порода.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(порода);
                }

                foreach (ТипПороды типПороды in dataObjectsBreedTypes)
                {
                    типПороды.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(типПороды);
                }

                DataObject[] objectsForUpdate = objectsForUpdateList.ToArray();

                ds.UpdateObjects(ref objectsForUpdate);

                int countKittenAfter    = ds.GetObjectsCount(lcsKitten);
                int countCatAfter       = ds.GetObjectsCount(lcsCat);
                int countBreedAfter     = ds.GetObjectsCount(lcsBreed);
                int countBreedTypeAfter = ds.GetObjectsCount(lcsBreedType);

                // Assert
                Assert.Equal(1, countKittenBefore);
                Assert.Equal(1, countCatBefore);
                Assert.Equal(1, countBreedBefore);
                Assert.Equal(1, countBreedTypeBefore);

                Assert.Equal(0, countKittenAfter);
                Assert.Equal(0, countCatAfter);
                Assert.Equal(0, countBreedAfter);
                Assert.Equal(0, countBreedTypeAfter);
            }
        }
Exemple #9
0
        public void DetailsDeleteTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange
                SQLDataService ds = (SQLDataService)dataService;

                const string First  = "Первый";
                const string Second = "Второй";
                const string Third  = "Третий";
                const string Fourth = "Четвертый";

                ТипЛапы передняяЛапа = new ТипЛапы {
                    Актуально = true, Название = "Передняя"
                };
                ТипЛапы задняяЛапа = new ТипЛапы {
                    Актуально = true, Название = "Задняя"
                };


                Кошка aggregator = new Кошка
                {
                    ДатаРождения = (NullableDateTime)DateTime.Now,
                    Тип          = ТипКошки.Дикая,
                    Порода       = new Порода {
                        Название = "Чеширская"
                    },
                    Кличка = "Мурка"
                };
                aggregator.Лапа.AddRange(
                    new Лапа {
                    Цвет = First, ТипЛапы = передняяЛапа
                },
                    new Лапа {
                    Цвет = Second, ТипЛапы = передняяЛапа
                },
                    new Лапа {
                    Цвет = Third, ТипЛапы = задняяЛапа
                },
                    new Лапа {
                    Цвет = Fourth, ТипЛапы = задняяЛапа
                });

                ds.UpdateObject(aggregator);

                LoadingCustomizationStruct lcsCat      = LoadingCustomizationStruct.GetSimpleStruct(typeof(Кошка), Кошка.Views.КошкаE);
                LoadingCustomizationStruct lcsPaws     = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лапа), Лапа.Views.ЛапаFull);
                LoadingCustomizationStruct lcsPawsType = LoadingCustomizationStruct.GetSimpleStruct(typeof(ТипЛапы), ТипЛапы.Views.ТипЛапыE);

                DataObject[] dataObjectsCats      = ds.LoadObjects(lcsCat);
                DataObject[] dataObjectsPawsTypes = ds.LoadObjects(lcsPawsType);

                // Act
                int countCatBefore      = ds.GetObjectsCount(lcsCat);
                int countPawsBefore     = ds.GetObjectsCount(lcsPaws);
                int countPawsTypeBefore = ds.GetObjectsCount(lcsPawsType);

                List <DataObject> objectsForUpdateList = new List <DataObject>();

                foreach (Кошка кошка in dataObjectsCats)
                {
                    кошка.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(кошка);
                }

                foreach (ТипЛапы типЛапы in dataObjectsPawsTypes)
                {
                    типЛапы.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(типЛапы);
                }

                DataObject[] objectsForUpdate = objectsForUpdateList.ToArray();

                ds.UpdateObjects(ref objectsForUpdate);

                int countCatAfter      = ds.GetObjectsCount(lcsCat);
                int countPawsAfter     = ds.GetObjectsCount(lcsPaws);
                int countPawsTypeAfter = ds.GetObjectsCount(lcsPawsType);

                // Assert
                Assert.Equal(1, countCatBefore);
                Assert.Equal(4, countPawsBefore);
                Assert.Equal(2, countPawsTypeBefore);

                Assert.Equal(0, countCatAfter);
                Assert.Equal(0, countPawsAfter);
                Assert.Equal(0, countPawsTypeAfter);
            }
        }
        public void TestСhainWhere()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange.
                var ds = (SQLDataService)dataService;

                ТипПороды типПороды = new ТипПороды()
                {
                    Название = "Простая", ДатаРегистрации = DateTime.Now
                };

                Порода породаДикая = new Порода()
                {
                    Название = "Дикая"
                };
                Порода породаПерсидская = new Порода()
                {
                    Название = "Персидская", ТипПороды = типПороды
                };
                Порода породаБезПороды = new Порода()
                {
                    Название = "БезПороды", Иерархия = породаДикая
                };

                ds.UpdateObject(породаДикая);
                ds.UpdateObject(породаПерсидская);
                ds.UpdateObject(породаБезПороды);

                var вася = new Кошка
                {
                    Кличка       = "Вася",
                    ДатаРождения = (NullableDateTime)DateTime.Now,
                    Порода       = породаПерсидская,
                    Тип          = ТипКошки.Домашняя,
                    Агрессивная  = false
                };
                var кузя = new Кошка
                {
                    Кличка       = "Кузя",
                    ДатаРождения = (NullableDateTime)DateTime.Now,
                    Порода       = породаПерсидская,
                    Тип          = ТипКошки.Дикая,
                    Агрессивная  = false
                };

                ds.UpdateObject(вася);
                ds.UpdateObject(кузя);

                // Act.
                var iqueryable =
                    ds.Query <Кошка>(Кошка.Views.КошкаE)
                    .Where(к => к.Агрессивная)
                    .Where(cat => cat.Порода.__PrimaryKey.Equals(породаПерсидская.__PrimaryKey));
                Кошка агрессивнаяКошка = iqueryable.FirstOrDefault();

                // Assert.
                // В тестовом наборе нет агрессивных кошек, следовательно FirstOrDefault должен вернуть null.
                Assert.Equal(null, агрессивнаяКошка);
            }
        }