コード例 #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
        /// <summary>
        /// Returns a list of objects from the datastore, matching the specified filters.
        /// </summary>
        /// <param name="version">Current version of generated Zetbox.Objects assembly</param>
        /// <param name="type">Type of Objects</param>
        /// <param name="maxListCount">Max. ammount of objects</param>
        /// <param name="eagerLoadLists">If true list properties will be eager loaded</param>
        /// <param name="filter">Serializable linq expression used a filter</param>
        /// <param name="orderBy">List of derializable linq expressions used as orderby</param>
        /// <returns>the found objects</returns>
        public byte[] GetList(Guid version, SerializableType type, int maxListCount, bool eagerLoadLists, SerializableExpression[] filter, OrderByContract[] orderBy)
        {
            using (Logging.Facade.DebugTraceMethodCallFormat("GetList", "type={0}", type))
            {
                DebugLogIdentity();
                try
                {
                    if (type == null)
                    {
                        throw new ArgumentNullException("type");
                    }
                    var ifType      = _iftFactory(type.GetSystemType());
                    int resultCount = 0;
                    var ticks       = _perfCounter.IncrementGetList(ifType);
                    try
                    {
                        using (IZetboxContext ctx = _ctxFactory())
                        {
                            var filterExpresstions = filter != null?filter.Select(f => SerializableExpression.ToExpression(f)).ToList() : null;

                            IEnumerable <IStreamable> lst = _sohFactory
                                                            .GetServerObjectHandler(ifType)
                                                            .GetList(version, ctx, maxListCount,
                                                                     filterExpresstions,
                                                                     orderBy != null ? orderBy.Select(o => new OrderBy(o.Type, SerializableExpression.ToExpression(o.Expression))).ToList() : null);
                            resultCount = lst.Count();
                            return(SendObjects(lst, eagerLoadLists).ToArray());
                        }
                    }
                    finally
                    {
                        _perfCounter.DecrementGetList(ifType, resultCount, ticks);
                    }
                }
                catch (Exception ex)
                {
                    Helper.ThrowFaultException(ex);
                    // Never called, Handle errors throws an Exception
                    return(null);
                }
            }
        }
コード例 #6
0
 public void ToExpression_null_fails()
 {
     Assert.That(() => SerializableExpression.ToExpression(null), Throws.InstanceOf <ArgumentNullException>());
 }