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); } }
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); } }
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)); }
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); } }
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)); } } }
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); } }
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, агрессивнаяКошка); } }