コード例 #1
0
        public void Unbound_Parameter()
        {
            var uvs = new UnboundVariableScanner();

            var p = Expression.Parameter(typeof(int));

            uvs.Visit(p);

            Assert.IsTrue(uvs.UnboundVariables.SetEquals(new[] { p }));
        }
コード例 #2
0
        public void Bound_Lambda()
        {
            var uvs = new UnboundVariableScanner();

            var e = (Expression<Func<int, int>>)(x => x);

            uvs.Visit(e);

            Assert.AreEqual(0, uvs.UnboundVariables.Count);
        }
コード例 #3
0
        public void Unbound_Catch_Body()
        {
            var uvs = new UnboundVariableScanner();

            var p = Expression.Parameter(typeof(int));
            var e = Expression.TryCatch(Expression.Default(typeof(int)), Expression.Catch(typeof(Exception), p));

            uvs.Visit(e);

            Assert.IsTrue(uvs.UnboundVariables.SetEquals(new[] { p }));
        }
コード例 #4
0
        public void Bound_Catch()
        {
            var uvs = new UnboundVariableScanner();

            var p = Expression.Parameter(typeof(Exception));
            var e = Expression.TryCatch(Expression.Empty(), Expression.Catch(p, Expression.Empty()));

            uvs.Visit(e);

            Assert.AreEqual(0, uvs.UnboundVariables.Count);
        }
コード例 #5
0
        public void Bound_Block()
        {
            var uvs = new UnboundVariableScanner();

            var p = Expression.Parameter(typeof(int));
            var e = Expression.Block(new[] { p }, p);

            uvs.Visit(e);

            Assert.AreEqual(0, uvs.UnboundVariables.Count);
        }
コード例 #6
0
        public void Unbound_Nested()
        {
            var uvs = new UnboundVariableScanner();

            var p = Expression.Parameter(typeof(int));
            var x = Expression.Parameter(typeof(int));
            var y = Expression.Parameter(typeof(int));
            var z = Expression.Parameter(typeof(Exception));
            var e = Expression.Lambda(Expression.Block(new[] { x }, Expression.TryCatch(Expression.Default(typeof(int)), Expression.Catch(z, Expression.Add(x, y))), p), y);

            uvs.Visit(e);

            Assert.IsTrue(uvs.UnboundVariables.SetEquals(new[] { p }));
        }