public void CreateCommandParameter_PropertyWithAlias_Set()
        {
            var factory       = new CommandParameterMapper(CommandParameterMapper.DefaultConverter);
            var testParameter = factory.CreateCommandParameter <TestParameterWithAlias>(new CommandLine
            {
                { "bar", "abc" },
            });

            Assert.IsNotNull(testParameter);
            Assert.AreEqual("abc", testParameter.Foo);
        }
        public void CreateCommandParameter_BasicTypes_AllSet()
        {
            var factory       = new CommandParameterMapper(CommandParameterMapper.DefaultConverter);
            var testParameter = factory.CreateCommandParameter <TestParameter>(new CommandLine
            {
                { nameof(TestParameter.StringProperty), "abc" },
                { nameof(TestParameter.Int32Property), "123" },
                { nameof(TestParameter.BooleanPropertey), "true" },
                { nameof(TestParameter.Int32ArrayProperty), "4" },
                { nameof(TestParameter.Int32ArrayProperty), "5" },
                { nameof(TestParameter.Int32ArrayProperty), "6" },
                { nameof(TestParameter.DateTimeProperty), "2017/5/1" },
            });

            Assert.IsNotNull(testParameter);
            Assert.AreEqual("abc", testParameter.StringProperty);
            Assert.AreEqual(123, testParameter.Int32Property);
            Assert.AreEqual(true, testParameter.BooleanPropertey);
            CollectionAssert.AreEqual(new[] { 4, 5, 6 }, testParameter.Int32ArrayProperty);
            Assert.AreEqual(new DateTime(2017, 5, 1), testParameter.DateTimeProperty);
        }
 public void CreateCommandParameter_DuplicateNames_Throws()
 {
     var factory = new CommandParameterMapper(CommandParameterMapper.DefaultConverter);
     var ex      = Assert.That.ThrowsExceptionFiltered <DynamicException>(() => factory.CreateCommandParameter <TestParameterWithDuplicateNames>(new CommandLine()));
 }