public void InstanceRestrictionEqualsIfAllSame()
        {
            Expression          exp  = Expression.Default(typeof(Egalitarian));
            Egalitarian         inst = new Egalitarian();
            BindingRestrictions x    = BindingRestrictions.GetInstanceRestriction(exp, inst);
            BindingRestrictions y    = BindingRestrictions.GetInstanceRestriction(exp, inst);

            Assert.Equal(x, y);
            Assert.Equal(x.GetHashCode(), y.GetHashCode());
            x = BindingRestrictions.GetInstanceRestriction(exp, null);
            y = BindingRestrictions.GetInstanceRestriction(exp, null);
            Assert.Equal(x, y);
            Assert.Equal(x.GetHashCode(), y.GetHashCode());
        }
        public void CustomRestrictionsEqualIfExpressionSame()
        {
            Expression          exp = Expression.Constant(false);
            BindingRestrictions x   = BindingRestrictions.GetExpressionRestriction(exp);
            BindingRestrictions y   = BindingRestrictions.GetExpressionRestriction(exp);

            Assert.Equal(x, y);
            Assert.Equal(x.GetHashCode(), y.GetHashCode());
        }
        public void TypeRestrictionEqualIfSameTypeAndExpression()
        {
            Expression          exp = Expression.Default(typeof(Egalitarian));
            BindingRestrictions x   = BindingRestrictions.GetTypeRestriction(exp, typeof(Egalitarian));
            BindingRestrictions y   = BindingRestrictions.GetTypeRestriction(
                exp, typeof(Egalitarian).MakeArrayType().GetElementType());

            Assert.Equal(x, y);
            Assert.Equal(x.GetHashCode(), y.GetHashCode());
        }