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));
        }
Esempio n. 2
0
        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);
            }
        }