public void TestSomeStringValueIntToStringPoleString() { // Arrange. int intValue = 1; var someString = intValue.ToString(); foreach (IDataService dataService in DataServices) { if (dataService is OracleDataService && typeof(SQLDataService).Assembly.ImageRuntimeVersion.StartsWith("v2")) { ///TODO: Исправить конвертацию для OracleDataService decimal в char, если используется System.Data.OracleClient (в Net3.5). ///Для версии Net4.0 и выше используется Oracle.ManagedDataAccess.Client, для которого исправление не требуется. continue; } var ds = (SQLDataService)dataService; var fullTypesMaster = new FullTypesMaster1() { PoleString = someString }; var updateObjectsArray = new DataObject[] { fullTypesMaster }; ds.UpdateObjects(ref updateObjectsArray); var view = FullTypesMaster1.Views.FullMasterView; var query = ((SQLDataService)dataService) .Query <FullTypesMaster1>(view) .Where(x => x.PoleString == someString || x.PoleInt.ToString() == someString); // Act. FullTypesMaster1 result = query.FirstOrDefault(); // Assert. Assert.NotNull(result); Assert.Equal(fullTypesMaster.__PrimaryKey, result.__PrimaryKey); } }
public void TestSomeStringValueString() { // Arrange. var someString = "Тестовая строка"; foreach (IDataService dataService in DataServices) { var ds = (SQLDataService)dataService; var fullTypesMaster = new FullTypesMaster1() { PoleString = someString }; var updateObjectsArray = new DataObject[] { fullTypesMaster }; ds.UpdateObjects(ref updateObjectsArray); var view = FullTypesMaster1.Views.FullMasterView; // Происходит падение теста так как генерируется запрос вида: // WHERE ( ( "PoleString" = N'Тестовая строка') OR ( "PoleInt" = N'Тестовая строка')). var query = ((SQLDataService)dataService) .Query <FullTypesMaster1>(view) .Where(x => x.PoleString == someString || x.PoleInt.ToString() == someString); // Act. FullTypesMaster1 result = query.FirstOrDefault(); // Assert. Assert.NotNull(result); Assert.Equal(fullTypesMaster.__PrimaryKey, result.__PrimaryKey); } }
public void TestSomeStringValueNullableGuidNotNull() { // Arrange. Guid?eqGuid = new Guid("{72FCA622-A01E-494C-BE1C-0821178594FB}"); var someString = eqGuid.ToString(); foreach (IDataService dataService in DataServices) { var ds = (SQLDataService)dataService; var fullTypesMaster = new FullTypesMaster1() { PoleString = someString }; var updateObjectsArray = new DataObject[] { fullTypesMaster }; ds.UpdateObjects(ref updateObjectsArray); var view = FullTypesMaster1.Views.FullMasterView; // Происходит падение теста так как генерируется запрос вида: // WHERE ( ( "PoleString" = N'72fca622-a01e-494c-be1c-0821178594fb') // OR ( "PoleInt" = N'72fca622-a01e-494c-be1c-0821178594fb')). var query = ((SQLDataService)dataService) .Query <FullTypesMaster1>(view) .Where(x => x.PoleString == someString || x.PoleInt.ToString() == someString); // Act. FullTypesMaster1 result = query.FirstOrDefault(); // Assert. Assert.NotNull(result); Assert.Equal(fullTypesMaster.__PrimaryKey, result.__PrimaryKey); } }
public void TestSomeStringValueGuid() { // Arrange. var someString = Guid.NewGuid().ToString(); foreach (IDataService dataService in DataServices) { var ds = (SQLDataService)dataService; var fullTypesMaster = new FullTypesMaster1() { PoleString = someString }; var updateObjectsArray = new DataObject[] { fullTypesMaster }; ds.UpdateObjects(ref updateObjectsArray); var view = FullTypesMaster1.Views.FullMasterView; // Происходит падение теста так как генерируется запрос вида: // WHERE ( ( "StringField " = N'7e30b4d0-5f62-494e-aa8b-4c8ffce49f78') // OR ( "IntField" = N'7e30b4d0-5f62-494e-aa8b-4c8ffce49f78')). var query = ((SQLDataService)dataService) .Query <FullTypesMaster1>(view) .Where(x => x.PoleString == someString || x.PoleInt.ToString() == someString); // Act. FullTypesMaster1 result = query.FirstOrDefault(); // Assert. Assert.NotNull(result); Assert.Equal(fullTypesMaster.__PrimaryKey, result.__PrimaryKey); } }
public void NullableDateTimeTest() { foreach (IDataService dataService in DataServices) { // Arrange. // Добавляются объекты данных в БД, чтобы проверить обработку // NullableDateTime в linq-выражениях. // Мастер. var testMasterObject = new FullTypesMaster1(); testMasterObject.PoleInt = 1; // Первый объект для проверки работы linq-выражений, // если поле типа NullDateTime принимает значение null. var testObj1 = new FullTypesMainAgregator(); testObj1.PoleNullDateTime = null; testObj1.FullTypesMaster1 = testMasterObject; // Второй объект для проверки работы linq-выражений, // если поле типа NullDateTime принимает значение текущего даты-времени. var testObj2 = new FullTypesMainAgregator(); testObj2.PoleNullDateTime = DateTime.Now; testObj2.FullTypesMaster1 = testMasterObject; // Третий объект для проверки работы linq-выражений, // если поле типа NullDateTime принимает конкретное значение. var testObj3 = new FullTypesMainAgregator(); testObj3.PoleNullableDateTime = (NullableDateTime) new DateTime(2015, 11, 14, 10, 37, 44); testObj3.FullTypesMaster1 = testMasterObject; // Список объектов данных, которые нужно сохранить. List <ICSSoft.STORMNET.DataObject> objectsToUpdate = new List <ICSSoft.STORMNET.DataObject>(); objectsToUpdate.AddRange(new ICSSoft.STORMNET.DataObject[] { testMasterObject, testObj1, testObj2, testObj3 }); ICSSoft.STORMNET.DataObject[] objectsToUpdateArray = objectsToUpdate.ToArray(); dataService.UpdateObjects(ref objectsToUpdateArray); // Контролдьная дата-время. var gaugeNullableDateTime = new NullableDateTime { Value = DateTime.Today.AddDays(-7) }; // Act. // Для testObj3 должно выполниться только первое условие под .Where. List <FullTypesMainAgregator> testList = dataService .Query <FullTypesMainAgregator>(FullTypesMainAgregator.Views.FullView.Name) .Where(w => w.PoleNullableDateTime <= (NullableDateTime)DateTime.Now && w.PoleNullableDateTime >= gaugeNullableDateTime) .ToList(); } }
public void TestQueryNullableValue() { foreach (IDataService dataService in DataServices) { if (dataService is OracleDataService && typeof(SQLDataService).Assembly.ImageRuntimeVersion.StartsWith("v2")) { ///TODO: Исправить конвертацию для OracleDataService decimal в char, если используется System.Data.OracleClient (в Net3.5). ///Для версии Net4.0 и выше используется Oracle.ManagedDataAccess.Client, для которого исправление не требуется. continue; } var ds = (SQLDataService)dataService; NullableDateTime date = new NullableDateTime(); date.Value = DateTime.Now; NullableDecimal dec = new NullableDecimal(); dec.Value = new decimal(77.111); NullableDecimal decGreater = new NullableDecimal(); decGreater.Value = dec.Value + new decimal(0.001); NullableInt i = new NullableInt(); i.Value = 77; FullTypesMaster1 fullTypes = new FullTypesMaster1() { PoleNullableDateTime = date, PoleNullableDecimal = dec, PoleNullableInt = i }; // Сохранение данных. var updateObjectsArray = new ICSSoft.STORMNET.DataObject[] { fullTypes }; ds.UpdateObjects(ref updateObjectsArray); // Выбор представления. var view = FullTypesMaster1.Views.FullMasterView; List <FullTypesMaster1> list; // Проверка поиска NullableDateTime. list = ds.Query <FullTypesMaster1>(view).Where(d => d.PoleNullableDateTime.Value <= date.Value).ToList(); Assert.Equal(1, list.Count); // Проверка поиска NullableDecimal. list = ds.Query <FullTypesMaster1>(view).Where(d => d.PoleNullableDecimal.Value < decGreater.Value).ToList(); Assert.Equal(1, list.Count); // Проверка поиска NullableInt. list = ds.Query <FullTypesMaster1>(view).Where(d => d.PoleNullableInt.Value == i.Value).ToList(); Assert.Equal(1, list.Count); } }
public void TestValueNullableGuidNotNull() { // Arrange. foreach (IDataService dataService in DataServices) { //TODO: Fix OracleDataService error. if (dataService is OracleDataService) { continue; } var ds = (SQLDataService)dataService; // Контрольное значение. Guid?testValue = Guid.NewGuid(); // Создаём тестовый объект. var fullTypesMaster = new FullTypesMaster1() { PoleNullGuid = testValue }; // Сохранение данных. var updateObjectsArray = new DataObject[] { fullTypesMaster }; ds.UpdateObjects(ref updateObjectsArray); // Выбор представления. var view = FullTypesMaster1.Views.FullMasterView; // Применение функции ограничения. var query = ((SQLDataService)dataService) .Query <FullTypesMaster1>(view) .Where(x => x.PoleNullGuid == testValue).ToList(); // Act. FullTypesMaster1 result = query.FirstOrDefault(); // Assert. Assert.NotNull(result); Assert.Equal(fullTypesMaster.__PrimaryKey, result.__PrimaryKey); } }
public void TestValueGuid() { // Arrange. foreach (IDataService dataService in DataServices) { if (dataService is OracleDataService && typeof(SQLDataService).Assembly.ImageRuntimeVersion.StartsWith("v2")) { ///TODO: Исправить конвертацию для OracleDataService decimal в char, если используется System.Data.OracleClient (в Net3.5). ///Для версии Net4.0 и выше используется Oracle.ManagedDataAccess.Client, для которого исправление не требуется. continue; } var ds = (SQLDataService)dataService; // Контрольное значение. var testValue = Guid.NewGuid(); // Создаём тестовый объект. var fullTypesMaster = new FullTypesMaster1() { PoleGuid = testValue }; // Сохранение данных. var updateObjectsArray = new DataObject[] { fullTypesMaster }; ds.UpdateObjects(ref updateObjectsArray); // Выбор представления. var view = FullTypesMaster1.Views.FullMasterView; // Применение функции ограничения. var query = ((SQLDataService)dataService) .Query <FullTypesMaster1>(view) .Where(x => x.PoleGuid == testValue); // Act. FullTypesMaster1 result = query.FirstOrDefault(); // Assert. Assert.NotNull(result); Assert.Equal(fullTypesMaster.__PrimaryKey, result.__PrimaryKey); } }
public void Test_funcExistDetails() { // TODO Удалить данную строчку, как исправят баг 94309. // IDataService dataService = DataServices[0]; // TODO Вернуть данную строчку, как исправят баг 94309. foreach (IDataService dataService in DataServices) { // Arrange. var ds = (SQLDataService)dataService; // Контрольные значене. const int controlInt = 1; // Сначала создаём структуру данных, требуемую для теста. var testMasterObject = new FullTypesMaster1(); var testFullTypesMainAgregator = new FullTypesMainAgregator { FullTypesMaster1 = testMasterObject }; // Создание детейлов, которые не подходят под условие ограничения. testFullTypesMainAgregator.FullTypesDetail1.Add(new FullTypesDetail1 { PoleInt = controlInt }); testFullTypesMainAgregator.FullTypesDetail2.Add(new FullTypesDetail2 { PoleInt = 2 }); var updateObjectsArray = new DataObject[] { testMasterObject, testFullTypesMainAgregator }; // Сохранение данных. ds.UpdateObjects(ref updateObjectsArray); // Выбор представления. var view = FullTypesMainAgregator.Views.FullViewWithDetail1; var view2 = FullTypesDetail1.Views.FullDetailView; var view3 = FullTypesDetail2.Views.FullTypesDetail2E; var lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(FullTypesMainAgregator), view); string cmp = Information.ExtractPropertyPath <FullTypesDetail1>(x => x.FullTypesMainAgregator); string name1 = Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.FullTypesDetail1); string name2 = Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.FullTypesDetail2); var detail = new DetailVariableDef(_ldef.GetObjectType("Details"), name1, view2, cmp, new[] { SQLWhereLanguageDef.StormMainObjectKey }); var detail2 = new DetailVariableDef(_ldef.GetObjectType("Details"), name2, view3, cmp, new[] { SQLWhereLanguageDef.StormMainObjectKey }); // Проверка существования детейлов такого, что: lcs.LimitFunction = _ldef.GetFunction(_ldef.funcExistDetails, detail, detail2, _ldef.GetFunction( // Равны. _ldef.funcEQ, // Хотя бы одно значение в поле Int у первого детейла. new VariableDef(_ldef.NumericType, Information.ExtractPropertyPath <FullTypesDetail1>(x => x.PoleInt)), // И значение в поле Int у второго детейла. new VariableDef(_ldef.NumericType, Information.ExtractPropertyPath <FullTypesDetail2>(x => x.PoleInt)))); // Act. var dos = ds.LoadObjects(lcs); // Assert. Assert.Equal(dos.Length, 0); // Создание детейла, который подходит под условте ограничения. testFullTypesMainAgregator.FullTypesDetail2.Add(new FullTypesDetail2 { PoleInt = controlInt }); // Сохранение новых данных. ds.UpdateObjects(ref updateObjectsArray); // Act. var dos2 = ds.LoadObjects(lcs); // Assert. Assert.Equal(dos2.Length, 1); } }
public void Test_funcExistAll() { // TODO Удалить данную строчку, как исправят баг 94309. // IDataService dataService = DataServices[0]; // TODO Вернуть данную строчку, как исправят баг 94309. foreach (IDataService dataService in DataServices) { // Arrange. var ds = (SQLDataService)dataService; // Контрольные значене. const int controlInt = 1; const bool controlBool = true; // Сначала создаём структуру данных, требуемую для теста. var testMasterObject = new FullTypesMaster1(); var testFullTypesMainAgregator = new FullTypesMainAgregator { FullTypesMaster1 = testMasterObject }; // Создание детейла, который не подходит под условие ограничения. testFullTypesMainAgregator.FullTypesDetail1.Add(new FullTypesDetail1 { PoleInt = 2, PoleBool = false }); var updateObjectsArray = new DataObject[] { testMasterObject, testFullTypesMainAgregator }; // Сохранение данных. ds.UpdateObjects(ref updateObjectsArray); // Выбор представления. var view = FullTypesMainAgregator.Views.FullViewWithDetail1; var view2 = FullTypesDetail1.Views.FullDetailView; var lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(FullTypesMainAgregator), view); string cmp = Information.ExtractPropertyPath <FullTypesDetail1>(x => x.FullTypesMainAgregator); string name = Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.FullTypesDetail1); var detail = new DetailVariableDef(_ldef.GetObjectType("Details"), name, view2, cmp, new[] { SQLWhereLanguageDef.StormMainObjectKey }); // Проверка существования детейла такого, что: lcs.LimitFunction = _ldef.GetFunction(_ldef.funcExistAll, detail, // Поле int в детейле равно контрольному значению(controlInt = 1). _ldef.GetFunction(_ldef.funcEQ, new VariableDef(_ldef.NumericType, Information.ExtractPropertyPath <FullTypesDetail1>(x => x.PoleInt)), controlInt), // Или поле bool в детейле равно контрольному значению (controlBool=true). _ldef.GetFunction(_ldef.funcEQ, new VariableDef(_ldef.BoolType, Information.ExtractPropertyPath <FullTypesDetail1>(x => x.PoleBool)), controlBool)); // Act. var dos = ds.LoadObjects(lcs); // Assert. Assert.Equal(dos.Length, 0); // Создание детейла, который подходит под условие ограничения. testFullTypesMainAgregator.FullTypesDetail1.Add(new FullTypesDetail1 { PoleInt = controlInt, PoleBool = controlBool }); // Сохранение новых данных. ds.UpdateObjects(ref updateObjectsArray); // Act. var dos2 = ds.LoadObjects(lcs); // Assert. Assert.Equal(dos2.Length, 1); } }
public void Test_paramYearDIFF() { // TODO Удалить данную строчку, как исправят баг 94309. // IDataService dataService = DataServices[0]; // TODO Вернуть данную строчку, как исправят баг 94309. foreach (IDataService dataService in DataServices) { // Arrange. var ds = (SQLDataService)dataService; // Контрольные значене. DateTime controlDate = new DateTime(2016, 2, 2); const int firstDate = 1; const int secondDate = 3; var controlValue = new List <int>() { firstDate, secondDate }; // Сначала создаём структуру данных, требуемую для теста. var testMasterObject = new FullTypesMaster1(); // Дата, которая будет подходить под условия ограничения. var firstDateTrue = new FullTypesMainAgregator { PoleDateTime = new DateTime(2015, 2, 1), PoleInt = firstDate, FullTypesMaster1 = testMasterObject }; // Дата, которая не будет подходить под условия ограничения. var firstDateFalse = new FullTypesMainAgregator { PoleDateTime = new DateTime(2016, 2, 2), PoleInt = 2, FullTypesMaster1 = testMasterObject, }; // Дата, которая будет подходить под условия ограничения. var secondDateTrue = new FullTypesMainAgregator { PoleDateTime = new DateTime(2014, 2, 2), PoleInt = secondDate, FullTypesMaster1 = testMasterObject }; // Дата, которая не будет подходить под условия ограничения. var secondDateFalse = new FullTypesMainAgregator { PoleDateTime = new DateTime(2015, 2, 2), PoleInt = 4, FullTypesMaster1 = testMasterObject }; var updateObjectsArray = new DataObject[] { testMasterObject, firstDateTrue, firstDateFalse, secondDateTrue, secondDateFalse }; // Сохранение данных. ds.UpdateObjects(ref updateObjectsArray); // Выбор представления. var view = FullTypesMainAgregator.Views.FullView; var lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(FullTypesMainAgregator), view); lcs.LimitFunction = _ldef.GetFunction( _ldef.funcL, _ldef.GetFunction( _ldef.funcDateAdd, _ldef.GetFunction(_ldef.paramYearDIFF), 1, new VariableDef(_ldef.DateTimeType, Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.PoleDateTime))), _ldef.GetFunction(_ldef.funcOnlyDate, controlDate)); // Act. // Получение, массива значений поля PoleInt. var poleIntValue = ds.LoadObjects(lcs).Cast <FullTypesMainAgregator>().Select(x => x.PoleInt).ToList(); // Получение массивов Объединения и Пересечения обьектов(controlValue и PoleInt) var unionValue = poleIntValue.Union(controlValue).ToList(); var intersectValue = poleIntValue.Intersect(controlValue).ToList(); // Assert. Assert.Equal(controlValue.Count, unionValue.Count); Assert.Equal(controlValue.Count, intersectValue.Count); } }
public void Test_funcDayOfWeek() { // TODO Удалить данную строчку, как исправят баг 94309. // IDataService dataService = DataServices[0]; // TODO Вернуть данную строчку, как исправят баг 94309. foreach (IDataService dataService in DataServices) { // Arrange. var ds = (SQLDataService)dataService; // Контрольные значене. const int firstMonday = 1; const int secondMonday = 3; var controlValue = new List <int>() { firstMonday, secondMonday }; // Сначала создаём структуру данных, требуемую для теста. var testMasterObject = new FullTypesMaster1(); // Понедельник. var monday1 = new FullTypesMainAgregator { PoleDateTime = new DateTime(2016, 1, 11, 10, 37, 44), PoleInt = firstMonday, FullTypesMaster1 = testMasterObject }; // Пятница. var friday1 = new FullTypesMainAgregator { PoleDateTime = new DateTime(2016, 1, 22, 10, 37, 44), PoleInt = 2, FullTypesMaster1 = testMasterObject, }; // Понедельник. var monday2 = new FullTypesMainAgregator { PoleDateTime = new DateTime(2015, 12, 28, 10, 37, 44), PoleInt = secondMonday, FullTypesMaster1 = testMasterObject }; var updateObjectsArray = new DataObject[] { testMasterObject, monday1, friday1, monday2 }; // Сохранение данных. ds.UpdateObjects(ref updateObjectsArray); // Выбор представления. var view = FullTypesMainAgregator.Views.FullView; var lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(FullTypesMainAgregator), view); // Функция ограничения. // Применение функции ограничения. lcs.LimitFunction = _ldef.GetFunction( _ldef.funcEQ, _ldef.GetFunction( _ldef.funcDayOfWeek, new VariableDef(_ldef.DateTimeType, Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.PoleDateTime))), 1); // Act. // Получение, массива значений поля PoleInt. var poleIntValue = ds.LoadObjects(lcs).Cast <FullTypesMainAgregator>().Select(x => x.PoleInt).ToList(); // Получение массивов Объединения и Пересечения обьектов(controlValue и PoleInt) var unionValue = poleIntValue.Union(controlValue).ToList(); var intersectValue = poleIntValue.Intersect(controlValue).ToList(); // Assert. Assert.Equal(controlValue.Count, unionValue.Count); Assert.Equal(controlValue.Count, intersectValue.Count); } }