Example #1
0
        public void LambdaConstructorBindingTest()
        {
            var expected = true;
            var typeResolutionService = new KnownTypeResolver(typeof(TypeFilter));
            var lambda = CSharpExpression.Parse <TypeFilter>("new TypeFilter((t, c) => t != null)", typeResolutionService).Compile().Invoke();
            var actual = lambda.Invoke(typeof(bool), null);

            Assert.Equal(expected, actual);
        }
        public void LambdaConstructorBindingTest()
        {
            var expected = true;
            var typeResolutionService = new KnownTypeResolver(typeof(Predicate <int>));
            var lambda = CSharpExpression.ParseFunc <Predicate <int> >("new Predicate<int>(x => x > 0)", typeResolutionService).Compile().Invoke();
            var actual = lambda.Invoke(1);

            Assert.Equal(expected, actual);
        }
Example #3
0
        public void GenericInvocationTest(string expression, int expected)
        {
            var typeResolutionService = new KnownTypeResolver(typeof(ExecutorTests.TestGenericClass <>), typeof(ExecutorTests.TestGenericClass <> .TestSubClass <,>));

            expression = CSharpExpression.ParseFunc <int>(expression, typeResolutionService).Body.Render();
            this.output.WriteLine("Rendered: " + expression);
            var actual = CSharpExpression.ParseFunc <int>(expression, typeResolutionService).CompileAot(forceAot: true).Invoke();

            Assert.Equal(expected, actual);
        }
Example #4
0
        public void LambdaConstructorTest()
        {
            var typeResolutionService = new KnownTypeResolver(typeof(Func <Type, object, bool>));
            var expression            = CSharpExpression.ParseFunc <Func <Type, object, bool> >("new Func<Type, object, bool>((t, c) => t != null)", typeResolutionService).Body.Render();

            this.output.WriteLine("Rendered: " + expression);
            var expected = true;
            var lambda   = CSharpExpression.ParseFunc <Func <Type, object, bool> >(expression, typeResolutionService).CompileAot(forceAot: true).Invoke();
            var actual   = lambda.Invoke(typeof(bool), null);

            Assert.Equal(expected, actual);
        }
        public void NullResolveTest(string expression, object expected)
        {
            var knownTypeResolver = new KnownTypeResolver(typeof(MyClass), typeof(ExecutorTests.TestGenericClass <>));
            var actual            = CSharpExpression.Evaluate <object>(expression, knownTypeResolver);

            if (expected == null)
            {
                Assert.Null(actual);
            }
            else
            {
                Assert.Equal(expected, actual);
            }
        }
Example #6
0
 /// <summary>
 /// Resolves a type by name.
 /// Gets called by the WCF framework when deserializing.
 /// </summary>
 /// <param name="typeName"></param>
 /// <param name="typeNamespace"></param>
 /// <param name="declaredType"></param>
 /// <param name="knownTypeResolver"></param>
 /// <returns></returns>
 public override Type ResolveName(string typeName, string typeNamespace, Type declaredType,
                                  System.Runtime.Serialization.DataContractResolver knownTypeResolver)
 {
     try
     {
         return(KnownTypeResolver.ResolveType(Encoder.SafeDecode(typeName)) ??
                (KnownTypeResolver.IsKnownType(declaredType)
                    ? declaredType
                    : knownTypeResolver.ResolveName(typeName, typeNamespace, declaredType,
                                                    DummyDataContractResolver)));
     }
     catch (Exception ex)
     {
         Log.Error(ex);
         throw;
     }
 }
Example #7
0
        public void SimpleTypeResolutionTest(Type expected)
        {
            var typeName     = MakeTypeReference(expected, fullName: false);
            var typeFullName = MakeTypeReference(expected, fullName: true);

            output.WriteLine("Name: " + typeName);
            output.WriteLine("Full Name: " + typeFullName);

            var knownTypeResolver = new KnownTypeResolver(expected);

            var actual    = default(Type);
            var nameFound = knownTypeResolver.TryGetType(typeName, out actual);

            Assert.True(nameFound, "Name is not found");
            Assert.Equal(expected, actual);

            var fullNameFound = knownTypeResolver.TryGetType(typeFullName, out actual);

            Assert.True(fullNameFound, "Full name is not found");
            Assert.Equal(expected, actual);
        }
Example #8
0
        /// <summary>
        /// Checks if type is considered a known type.
        /// Gets called by the WCF framework when serializing.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="declaredType"></param>
        /// <param name="knownTypeResolver"></param>
        /// <param name="typeName"></param>
        /// <param name="typeNamespace"></param>
        /// <returns></returns>
        public override bool TryResolveType(Type type, Type declaredType,
                                            System.Runtime.Serialization.DataContractResolver knownTypeResolver, out XmlDictionaryString typeName,
                                            out XmlDictionaryString typeNamespace)
        {
            try
            {
                if (!KnownTypeResolver.IsKnownType(type))
                {
                    return(knownTypeResolver.TryResolveType(type, declaredType, DummyDataContractResolver, out typeName,
                                                            out typeNamespace));
                }

                XmlDictionary dictionary = new XmlDictionary();
                typeName      = dictionary.Add(Encoder.SafeEncode(type.AssemblyQualifiedName()));
                typeNamespace = dictionary.Add("http://p2p.com");
                return(true);
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }
Example #9
0
        public void KnownTypeResolverConstructorTest(Type expected)
        {
            var knownTypeResolver = new KnownTypeResolver(expected);

            Assert.NotNull(knownTypeResolver);
        }