public void TestEnumLinqToLcsWithVariable() { // Arrange. var testProvider = new TestLcsQueryProvider <FullTypesMainAgregator>(); PoleEnum poleEnum = PoleEnum.Attribute1; var predicate1 = (Expression <Func <FullTypesMainAgregator, bool> >)(o => o.PoleEnum == poleEnum); new Query <FullTypesMainAgregator>(testProvider).Where(predicate1).ToArray(); Expression queryExpression = testProvider.InnerExpression; var expected = new LoadingCustomizationStruct(null) { LimitFunction = ldef.GetFunction( ldef.funcEQ, new VariableDef(ldef.StringType, Information.ExtractPropertyPath <FullTypesMainAgregator>(x => x.PoleEnum)), EnumCaption.GetCaptionFor(PoleEnum.Attribute1)) }; // Act. LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, FullTypesMainAgregator.Views.FullView); // Assert. Assert.True(Equals(expected, actual)); }
public void TestValueEnum() { // 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; // Контрольное значение. PoleEnum testValue = PoleEnum.Attribute1; // Создаём тестовый объект. var fullTypesMaster = new FullTypesMaster1() { PoleEnum = testValue }; // Сохранение данных. var updateObjectsArray = new DataObject[] { fullTypesMaster }; ds.UpdateObjects(ref updateObjectsArray); // Выбор представления. var view = FullTypesMaster1.Views.FullMasterView; // Применение функции ограничения. var query = ds.Query <FullTypesMaster1>(view) .Where(x => x.PoleEnum == testValue); // Act. FullTypesMaster1 result = query.FirstOrDefault(); // Assert. Assert.NotNull(result); Assert.Equal(fullTypesMaster.__PrimaryKey, result.__PrimaryKey); } }