예제 #1
0
        public void ExpressionPropertyTests_EnumExpression()
        {
            var data = new
            {
                test = TestEnum.Two
            };

            var val = new EnumExpression <TestEnum>("three");

            Assert.Null(val.ExpressionText);
            Assert.Equal(TestEnum.Three, val.Value);
            Assert.Equal(val.ToString(), JsonConvert.DeserializeObject <EnumExpression <TestEnum> >(JsonConvert.SerializeObject(val, settings: settings), settings: settings).ToString());
            var(result, error) = val.TryGetValue(data);
            Assert.Equal(TestEnum.Three, result);
            Assert.Null(error);

            val = new EnumExpression <TestEnum>("=three");
            Assert.Null(val.ExpressionText);
            Assert.Equal(TestEnum.Three, val.Value);
            Assert.Equal(val.ToString(), JsonConvert.DeserializeObject <EnumExpression <TestEnum> >(JsonConvert.SerializeObject(val, settings: settings), settings: settings).ToString());
            (result, error) = val.TryGetValue(data);
            Assert.Equal(TestEnum.Three, result);
            Assert.Null(error);

            val = new EnumExpression <TestEnum>("=test");
            Assert.NotNull(val.ExpressionText);
            Assert.Equal(default(TestEnum), val.Value);
            Assert.Equal(val.ToString(), JsonConvert.DeserializeObject <EnumExpression <TestEnum> >(JsonConvert.SerializeObject(val, settings: settings), settings: settings).ToString());
            (result, error) = val.TryGetValue(data);
            Assert.Equal(TestEnum.Two, result);
            Assert.Null(error);

            val = new EnumExpression <TestEnum>(TestEnum.Three);
            Assert.Null(val.ExpressionText);
            Assert.Equal(TestEnum.Three, val.Value);
            Assert.Equal(val.ToString(), JsonConvert.DeserializeObject <EnumExpression <TestEnum> >(JsonConvert.SerializeObject(val, settings: settings), settings: settings).ToString());
            (result, error) = val.TryGetValue(data);
            Assert.Equal(TestEnum.Three, result);
            Assert.Null(error);

            val = new EnumExpression <TestEnum>("garbage");
            Assert.NotNull(val.ExpressionText);
            Assert.Equal(default(TestEnum), val.Value);
            Assert.Equal(val.ToString(), JsonConvert.DeserializeObject <EnumExpression <TestEnum> >(JsonConvert.SerializeObject(val, settings: settings), settings: settings).ToString());
            (result, error) = val.TryGetValue(data);
            Assert.Equal(default(TestEnum), result);
            Assert.Null(error);

            val = new EnumExpression <TestEnum>("=sum(garbage)");
            Assert.NotNull(val.ExpressionText);
            Assert.Equal(default(TestEnum), val.Value);
            Assert.Equal(val.ToString(), JsonConvert.DeserializeObject <EnumExpression <TestEnum> >(JsonConvert.SerializeObject(val, settings: settings), settings: settings).ToString());
            (result, error) = val.TryGetValue(data);
            Assert.Equal(default(TestEnum), result);
            Assert.NotNull(error);
        }
 public override void WriteJson(JsonWriter writer, EnumExpression <T> value, JsonSerializer serializer)
 {
     if (value.ExpressionText != null)
     {
         serializer.Serialize(writer, value.ToString());
     }
     else
     {
         serializer.Serialize(writer, value.Value);
     }
 }
            public void Returns_False_Whether_The_Entity_Property_Value_Is_Null_And_SelectedCondition_Is_NotIsNull()
            {
                var entity = new object();
                var propertyMetadataMock = new Mock <IPropertyMetadata>();

                propertyMetadataMock.Setup(metadata => metadata.GetValue(entity)).Returns(null);

                var enumExpression = new EnumExpression <TestEnum>(true)
                {
                    SelectedCondition = Condition.NotIsNull
                };

                Assert.IsFalse(enumExpression.CalculateResult(propertyMetadataMock.Object, entity));
            }
            public void Throws_NotSupportedException_Whether_The_SelectedCondition_Is_NotIsNull_And_Is_Not_Nullable()
            {
                var entity = new object();
                var propertyMetadataMock = new Mock <IPropertyMetadata>();

                propertyMetadataMock.Setup(metadata => metadata.GetValue(entity)).Returns(null);

                var enumExpression = new EnumExpression <TestEnum>(false)
                {
                    SelectedCondition = Condition.NotIsNull
                };

                Assert.Catch <NotSupportedException>(() => enumExpression.CalculateResult(propertyMetadataMock.Object, entity));
            }
예제 #5
0
        /// <summary>
        /// 根据枚举获取选项列表
        /// </summary>
        /// <typeparam name="TEnums">枚举类型</typeparam>
        /// <param name="isFirst">是否添加第一行</param>
        /// <param name="firstText">第一行文本</param>
        /// <param name="isDescription">是否使用描述</param>
        /// <param name="selectedValue">默认选中值</param>
        /// <returns></returns>
        public IEnumerable <SelectListItem> GetSelectListItemByEnum <TEnums>(bool isFirst = true, string firstText = "", bool isDescription = true, string selectedValue = "") where TEnums : new()
        {
            var items = EnumExpression.GetEnumList <TEnums>().Select(a => new SelectListItem
            {
                Value    = a.ToString("D"),
                Text     = isDescription ? a.GetEnumDescription() : a.ToString(),
                Selected = a.ToString("D") == selectedValue,
            }).ToList();

            if (isFirst)
            {
                items.Insert(0, GetFirstSelectListItem("", firstText));
            }
            return(items);
        }
            public void Returns_False_Whether_The_Entity_Property_Value_Is_Greater_Than_To_Value_And_SelectedCondition_Is_LessThanOrEqualTo()
            {
                var entity = new object();
                var propertyMetadataMock = new Mock <IPropertyMetadata>();

                propertyMetadataMock.Setup(metadata => metadata.GetValue(entity)).Returns(TestEnum.Enum2);

                var enumExpression = new EnumExpression <TestEnum>(false)
                {
                    Value             = TestEnum.Enum1,
                    SelectedCondition = Condition.LessThanOrEqualTo
                };

                Assert.IsFalse(enumExpression.CalculateResult(propertyMetadataMock.Object, entity));
            }
            public void Throws_NotSupportedException_Whether_The_SelectedCondition_Is_Not_Supported(Condition condition)
            {
                var entity = new object();
                var propertyMetadataMock = new Mock <IPropertyMetadata>();

                propertyMetadataMock.Setup(metadata => metadata.GetValue(entity)).Returns(TestEnum.Enum1);

                var enumExpression = new EnumExpression <TestEnum>(false)
                {
                    Value             = TestEnum.Enum1,
                    SelectedCondition = condition
                };

                Assert.Catch <NotSupportedException>(() => enumExpression.CalculateResult(propertyMetadataMock.Object, entity));
            }
 public override EnumExpression <T> ReadJson(JsonReader reader, Type objectType, EnumExpression <T> existingValue, bool hasExistingValue, JsonSerializer serializer)
 {
     if (reader.ValueType == typeof(string))
     {
         return(new EnumExpression <T>((string)reader.Value));
     }
     else
     {
         return(new EnumExpression <T>(JToken.Load(reader)));
     }
 }
예제 #9
0
 public virtual ICodeNode VisitEnumExpression(EnumExpression node)
 {
     return(node);
 }
예제 #10
0
        public static Expression GetEnumExpression(TypeDefinition enumDefinition, LiteralExpression targetedValue, TypeSystem typeSystem)
        {
            V_0 = EnumHelper.GetEnumBitSize(enumDefinition);
            V_1 = (long)0;
            V_4 = targetedValue.get_Value().GetType().get_FullName();
            if (V_4 != null)
            {
                if (String.op_Equality(V_4, "System.Int32"))
                {
                    if (V_0 != 32)
                    {
                        V_1 = (long)((Int32)targetedValue.get_Value());
                    }
                    else
                    {
                        V_1 = (ulong)((Int32)targetedValue.get_Value());
                    }
                }
                else
                {
                    if (String.op_Equality(V_4, "System.Int64"))
                    {
                        V_1 = (Int64)targetedValue.get_Value();
                    }
                    else
                    {
                        if (String.op_Equality(V_4, "System.UInt32"))
                        {
                            V_1 = (ulong)((UInt32)targetedValue.get_Value());
                        }
                        else
                        {
                            if (String.op_Equality(V_4, "System.UInt64"))
                            {
                                V_1 = (UInt64)targetedValue.get_Value();
                            }
                            else
                            {
                                if (String.op_Equality(V_4, "System.Byte"))
                                {
                                    V_1 = (ulong)((Byte)targetedValue.get_Value());
                                }
                                else
                                {
                                    if (String.op_Equality(V_4, "System.SByte"))
                                    {
                                        V_1 = (long)((SByte)targetedValue.get_Value());
                                    }
                                    else
                                    {
                                        if (String.op_Equality(V_4, "System.Int16"))
                                        {
                                            V_1 = (long)((Int16)targetedValue.get_Value());
                                        }
                                        else
                                        {
                                            if (String.op_Equality(V_4, "System.UInt16"))
                                            {
                                                V_1 = (ulong)((UInt16)targetedValue.get_Value());
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            stackVariable10 = enumDefinition.get_Fields();
            V_2             = new List <FieldDefinition>();
            V_6             = stackVariable10.GetEnumerator();
            try
            {
                while (V_6.MoveNext())
                {
                    V_7 = V_6.get_Current();
                    if (V_7.get_Constant() == null || V_7.get_Constant().get_Value() == null)
                    {
                        continue;
                    }
                    V_8 = (long)0;
                    V_4 = V_7.get_Constant().get_Value().GetType().get_FullName();
                    if (V_4 != null)
                    {
                        if (String.op_Equality(V_4, "System.Int32"))
                        {
                            V_8 = (ulong)((Int32)V_7.get_Constant().get_Value());
                        }
                        else
                        {
                            if (String.op_Equality(V_4, "System.UInt32"))
                            {
                                V_8 = (ulong)((UInt32)V_7.get_Constant().get_Value());
                            }
                            else
                            {
                                if (String.op_Equality(V_4, "System.Byte"))
                                {
                                    V_8 = (ulong)((Byte)V_7.get_Constant().get_Value());
                                }
                                else
                                {
                                    if (String.op_Equality(V_4, "System.SByte"))
                                    {
                                        V_8 = (ulong)((byte)((SByte)V_7.get_Constant().get_Value()));
                                    }
                                    else
                                    {
                                        if (String.op_Equality(V_4, "System.Int16"))
                                        {
                                            V_8 = (ulong)((ushort)((Int16)V_7.get_Constant().get_Value()));
                                        }
                                        else
                                        {
                                            if (String.op_Equality(V_4, "System.UInt16"))
                                            {
                                                V_8 = (ulong)((UInt16)V_7.get_Constant().get_Value());
                                            }
                                            else
                                            {
                                                if (String.op_Equality(V_4, "System.Int64"))
                                                {
                                                    V_8 = (Int64)V_7.get_Constant().get_Value();
                                                }
                                                else
                                                {
                                                    if (String.op_Equality(V_4, "System.UInt64"))
                                                    {
                                                        V_8 = (UInt64)V_7.get_Constant().get_Value();
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (V_8 != V_1)
                    {
                        if (V_8 == 0 || V_8 | V_1 != V_1)
                        {
                            continue;
                        }
                        V_2.Add(V_7);
                    }
                    else
                    {
                        V_9 = new EnumExpression(V_7, targetedValue.get_UnderlyingSameMethodInstructions());
                        goto Label1;
                    }
                }
                goto Label0;
            }
            finally
            {
                V_6.Dispose();
            }
Label1:
            return(V_9);

Label0:
            if (V_2.get_Count() < 2)
            {
                return(targetedValue);
            }
            V_3 = new BinaryExpression(21, new EnumExpression(V_2.get_Item(0), null), new EnumExpression(V_2.get_Item(1), null), typeSystem, null, false);
            V_3.set_ExpressionType(enumDefinition);
            V_10 = 2;
            while (V_10 < V_2.get_Count())
            {
                V_3 = new BinaryExpression(21, V_3, new EnumExpression(V_2.get_Item(V_10), null), typeSystem, null, false);
                V_3.set_ExpressionType(enumDefinition);
                V_10 = V_10 + 1;
            }
            return(V_3.CloneAndAttachInstructions(targetedValue.get_UnderlyingSameMethodInstructions()));
        }
예제 #11
0
 public virtual void Visit(EnumExpression node)
 {
     DefaultVisit(node);
 }
예제 #12
0
 public virtual void Visit(EnumExpression node)
 {
     DefaultVisit(node);
 }
            public void Initizalize_The_EnumValues_Property_With_All_Enum_Values(TestEnum value)
            {
                var enumExpression = new EnumExpression <TestEnum>(false);

                Assert.Contains(value, enumExpression.EnumValues);
            }
            public void Initizalize_The_Value_Property_With_The_First_Enum_Value()
            {
                var enumExpression = new EnumExpression <TestEnum>(false);

                Assert.AreEqual(TestEnum.Enum1, enumExpression.Value);
            }
예제 #15
0
 public override void VisitEnumExpression(EnumExpression node)
 {
     this.get_TypesDependingOn().UnionWith(Utilities.GetTypeReferenceTypesDepedningOn(node.get_ExpressionType()));
     this.VisitEnumExpression(node);
     return;
 }
예제 #16
0
 public virtual void VisitEnumExpression(EnumExpression node)
 {
 }
예제 #17
0
 public override void VisitEnumExpression(EnumExpression node)
 {
     TypesDependingOn.UnionWith(Utilities.GetTypeReferenceTypesDepedningOn(node.ExpressionType));
     base.VisitEnumExpression(node);
 }