public void TestEnumerationConverter()
        {
            EnumerationConverter enumerationConverter = new EnumerationConverter();

            Assert.True(enumerationConverter.CanConvertTo(typeof(DayOfWeek)));
            Assert.True(enumerationConverter.CanConvertTo(typeof(Animal)));
            Assert.True(enumerationConverter.CanConvertTo(typeof(PlatformID)));

            Assert.False(enumerationConverter.CanConvertTo(typeof(string)));
            Assert.False(enumerationConverter.CanConvertTo(typeof(int)));
            Assert.False(enumerationConverter.CanConvertTo(typeof(bool)));
            Assert.False(enumerationConverter.CanConvertTo(typeof(float)));
            Assert.False(enumerationConverter.CanConvertTo(typeof(Enum)));

            Assert.False(enumerationConverter.CanConvertFrom("abc"));
            Assert.False(enumerationConverter.CanConvertFrom("123"));
            Assert.False(enumerationConverter.CanConvertFrom(""));

            Assert.Equal(Animal.Cat, enumerationConverter.Convert(typeof(Animal), "Cat"));
            Assert.Equal(Animal.Dog, enumerationConverter.Convert(typeof(Animal), "Dog"));
            Assert.Equal(Animal.Bird, enumerationConverter.Convert(typeof(Animal), "Bird"));
            Assert.Equal(Animal.Bird, enumerationConverter.Convert(typeof(Animal), "2"));

            Assert.Throws <InvalidOperationException>(() => enumerationConverter.Convert(typeof(object), "Dog"));
            Assert.Throws <InvalidOperationException>(() => enumerationConverter.Convert(typeof(Animal), "Fish"));
        }
        public void WriteTests()
        {
            // Arrange
            var inputs = new Dictionary <string, SampleEnumeration>
            {
                { "\"Value1\"", SampleEnumeration.Value1 },
                { "\"Value2\"", SampleEnumeration.Value2 },
                { "\"Value3\"", SampleEnumeration.Value3 }
            };

            var target = new EnumerationConverter();

            // Act & Assert
            foreach (var(expectedResult, input) in inputs)
            {
                using var memoryStream = new MemoryStream();
                var writer = new Utf8JsonWriter(memoryStream);
                target.Write(writer, input, new JsonSerializerOptions());
                writer.Flush();
                memoryStream.Position = 0;

                using var reader = new StreamReader(memoryStream);
                var result = reader.ReadToEnd();

                Assert.Equal(expectedResult, result);
            }
        }
        public void ReadKnownValuesTests()
        {
            // Arrange
            var inputs = new Dictionary <string, SampleEnumeration>
            {
                { "\"Value1\"", SampleEnumeration.Value1 },
                { "\"valuE1\"", SampleEnumeration.Value1 },
                { "\"Value2\"", SampleEnumeration.Value2 },
                { "\"value2\"", SampleEnumeration.Value2 },
                { "\"Value3\"", SampleEnumeration.Value3 },
                { "\"value3\"", SampleEnumeration.Value3 }
            };

            var target = new EnumerationConverter();

            // Act & Assert
            foreach (var(json, expectedResult) in inputs)
            {
                Enumeration?result = null;

                var utf8JsonBytes = Encoding.UTF8.GetBytes(json);
                var reader        = new Utf8JsonReader(utf8JsonBytes, true, new JsonReaderState());
                while (reader.Read())
                {
                    result = target.Read(ref reader, typeof(SampleEnumeration), new JsonSerializerOptions());
                }

                Assert.Equal(expectedResult, result);
            }
        }
Example #4
0
 public void Test_ConvertHorizontalAlignment_HabaneroToVWG_Center()
 {
     //---------------Set up test pack-------------------
     //---------------Execute Test ----------------------
     Gizmox.WebGUI.Forms.HorizontalAlignment horizontalAlignment =
         EnumerationConverter.HorizontalAlignmentToVWG(HorizontalAlignment.Center);
     //---------------Test Result -----------------------
     Assert.AreEqual(typeof(Gizmox.WebGUI.Forms.HorizontalAlignment), horizontalAlignment.GetType());
     Assert.AreEqual(Gizmox.WebGUI.Forms.HorizontalAlignment.Center.ToString(), horizontalAlignment.ToString());
 }
        /// <summary>
        /// Adds an enumeration conversion for the given type
        /// </summary>
        /// <typeparam name="T">The type to convert to an enumeration</typeparam>
        /// <typeparam name="TItem">The returning type of the IEnumerable items</typeparam>
        /// <param name="expr">How to convert the type to IEnumerable</param>
        /// <returns>The builder for chaining calls</returns>
        public CompilerSettingsBuilder AddEnumerationConverter <T, TItem>(Expression <Func <T, IEnumerable <TItem> > > expr)
        {
            var @param        = Expression.Parameter(typeof(object));
            var convertLambda = Expression.Lambda <Func <object, IEnumerable> >(
                Expression.Invoke(expr, Expression.Convert(param, typeof(T))),
                @param);

            EnumerationConverters[typeof(T)] = new EnumerationConverter(convertLambda, typeof(TItem));

            return(this);
        }
Example #6
0
        public void Test_ConvertHorizontalAlignment_VWGToHabanero_Right()
        {
            //---------------Set up test pack-------------------
            //---------------Execute Test ----------------------
            HorizontalAlignment horizontalAlignment =
                EnumerationConverter.HorizontalAlignmentToHabanero(Gizmox.WebGUI.Forms.HorizontalAlignment.Right);

            //---------------Test Result -----------------------
            Assert.AreEqual(typeof(HorizontalAlignment), horizontalAlignment.GetType());
            Assert.AreEqual(HorizontalAlignment.Right.ToString(), horizontalAlignment.ToString());
        }
        public void CanConvertTests(Type requestedType, bool expectedResult)
        {
            // Arrange
            var target = new EnumerationConverter();

            // Act
            var result = target.CanConvert(requestedType);

            // Assert
            Assert.Equal(expectedResult, result);
        }
        public void ReadUnknownValuesTests()
        {
            // Arrange
            var target = new EnumerationConverter();

            // Act
            Enumeration?result = null;

            var utf8JsonBytes = Encoding.UTF8.GetBytes("\"UNKNOWN_VALUE\"");
            var reader        = new Utf8JsonReader(utf8JsonBytes, true, new JsonReaderState());

            while (reader.Read())
            {
                result = target.Read(ref reader, typeof(SampleEnumeration), new JsonSerializerOptions());
            }

            // Assert
            Assert.Null(result);
        }
Example #9
0
 public ValueInfo GetInfo(string name)
 {
     Configuration.Argument arg = this.CurrentRecipe.ArgumentsByName[name];
     if (arg == null)
     {
         return(null);
     }
     // We need to cache the ArgumentMetaData, otherwise the Wizard validation for repeated arguments will fail
     if (!metaData.ContainsKey(arg))
     {
         ITypeResolutionService typeResolutionService =
             (ITypeResolutionService)GetService(typeof(ITypeResolutionService));
         Type argType = null;
         if (typeResolutionService != null)
         {
             argType = typeResolutionService.GetType(arg.Type);
         }
         else
         {
             argType = Type.GetType(arg.Type);
         }
         TypeConverter converter = null;
         if (arg.Converter != null)
         {
             Type converterType = null;
             if (typeResolutionService != null)
             {
                 converterType = typeResolutionService.GetType(arg.Converter.Type);
             }
             else
             {
                 converterType = Type.GetType(arg.Converter.Type);
             }
             if (converterType != null)
             {
                 converter = (TypeConverter)Activator.CreateInstance(converterType);
             }
         }
         if (converter == null && argType != null)
         {
             TypeConverter cinstance = TypeDescriptor.GetConverter(argType);
             if (argType.IsEnum)
             {
                 converter = new EnumerationConverter(argType);
             }
             else if (argType.IsCOMObject ||
                      Attribute.GetCustomAttribute(argType, typeof(ComImportAttribute), true) != null)
             {
                 converter = new ComObjectConverter(argType);
             }
             else if (cinstance != null && cinstance.GetType() != typeof(ComponentConverter))
             {
                 // Only use converters that are not the generic ComponentConverter.
                 converter = cinstance;
             }
         }
         ValueInfo argumentMetaData = new ValueInfo(
             arg.Name,
             arg.Required,
             argType,
             converter);
         metaData[arg] = argumentMetaData;
     }
     return((ValueInfo)metaData[arg]);
 }
Example #10
0
 public EnumerationConverterTests()
 {
     Sut = new EnumerationConverter <BooleanEnumeration>();
 }