コード例 #1
0
        public void roundtrip_Constant_string()
        {
            ConstantExpression expr = Expression.Constant("a");
            var result = (ConstantExpression)SerializableExpression.ToExpression(SerializableExpression.FromExpression(expr, iftFactory));

            AssertExpressions.AreEqual(result, expr);
        }
コード例 #2
0
        public void roundtrip_Constant_object()
        {
            ISomething         value = new Something();
            ConstantExpression expr  = Expression.Constant(value);
            var result = (ConstantExpression)SerializableExpression.ToExpression(SerializableExpression.FromExpression(expr, iftFactory));

            AssertExpressions.AreEqual(result, expr);
        }
コード例 #3
0
        public void roundtrip_Constant_interface()
        {
            ISomething         value = new Something();
            ConstantExpression expr  = Expression.Constant(value, typeof(ISomething));
            var result = (ConstantExpression)SerializableExpression.ToExpression(SerializableExpression.FromExpression(expr, iftFactory));

            AssertExpressions.AreEqual(result, expr);
            Assert.That(result.Type, Is.EqualTo(typeof(ISomething)));
        }
コード例 #4
0
        public void roundtrip_MemberAccess_to_string_Length_property_should_optimize_constness()
        {
            string           testString = "farglbl";
            var              objExpr    = Expression.Constant(testString);
            MemberExpression expr       = Expression.MakeMemberAccess(objExpr, typeof(string).GetMember("Length").First());

            var result = SerializableExpression.ToExpression(SerializableExpression.FromExpression(expr, scope.Resolve <InterfaceType.Factory>()));

            AssertExpressions.AreEqual(result, Expression.Constant(testString.Length));
        }
コード例 #5
0
        public IEnumerable <IDataObject> GetList(IZetboxContext ctx, InterfaceType ifType, int maxListCount, bool eagerLoadLists, IEnumerable <Expression> filter, IEnumerable <OrderBy> orderBy, out List <IStreamable> auxObjects)
        {
            int resultCount = 0;
            List <IStreamable> tmpAuxObjects = null;
            var _ifType = ifType.ToSerializableType();
            var ticks   = _perfCounter.IncrementGetList(ifType);

            try
            {
                var _filter = filter != null?filter.Select(f => SerializableExpression.FromExpression(f, _iftFactory)).ToArray() : null;

                var _orderBy = orderBy != null?orderBy.Select(o => new OrderByContract()
                {
                    Type = o.Type, Expression = SerializableExpression.FromExpression(o.Expression, _iftFactory)
                }).ToArray() : null;

                byte[] bytes = null;

                MakeRequest(() =>
                {
                    bytes = _service.GetList(
                        ZetboxGeneratedVersionAttribute.Current,
                        _ifType,
                        maxListCount,
                        eagerLoadLists,
                        _filter,
                        _orderBy);
                });

                Logging.Facade.DebugFormat("GetList retrieved: {0:n0} bytes", bytes.Length);

                IEnumerable <IDataObject> result = null;
                using (var sr = _readerFactory(new BinaryReader(new MemoryStream(bytes))))
                {
                    result = ReceiveObjects(ctx, sr, out tmpAuxObjects).Cast <IDataObject>();
                }
                resultCount = result.Count();
                auxObjects  = tmpAuxObjects;
                return(result);
            }
            finally
            {
                _perfCounter.DecrementGetList(ifType, resultCount, ticks);
            }
        }
コード例 #6
0
 public void FromExpression_null_fails()
 {
     Assert.That(() => SerializableExpression.FromExpression(null, iftFactory), Throws.InstanceOf <ArgumentNullException>());
 }