예제 #1
0
        internal void AddPositionalOption_Should_Throw_PositionalOptionListConflictException_PositionalOption_Reverse()
        {
            // Arrange
            var mapper = new ArgsMapper <OneListStringOptionWithOneBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Option);

            // Assert
            Assert.Throws <PositionalOptionListConflictException>(() =>
                                                                  mapper.AddPositionalOption(x => x.Options)
                                                                  );
        }
예제 #2
0
        internal void AddPositionalOption_Should_Throw_OptionLongNameAlreadyExistsException()
        {
            // Arrange
            var mapper = new ArgsMapper <OneBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Option);

            // Assert
            Assert.Throws <OptionLongNameAlreadyExistsException>(() =>
                                                                 mapper.AddPositionalOption(x => x.Option)
                                                                 );
        }
예제 #3
0
        internal void AddPositionalOption_Should_Throw_PositionalOptionListConflictException_PositionalOption_List()
        {
            // Arrange
            var mapper = new ArgsMapper <TwoListStringOptionArgs>();

            mapper.AddPositionalOption(x => x.Options1);

            // Assert
            Assert.Throws <PositionalOptionListConflictException>(() =>
                                                                  mapper.AddPositionalOption(x => x.Options2)
                                                                  );
        }
예제 #4
0
        internal void Mapper_AddPositionalOption_List_Should_Be_Initialized_With_Property()
        {
            // Arrange
            var mapper = new ArgsMapper <OneListStringOptionArgs>();

            mapper.AddPositionalOption(x => x.Option);
        }
예제 #5
0
        internal void MapperResult_Should_Have_Error_When_Args_Exceeded_PositionalOption_Definitions()
        {
            // Arrange
            var mapper = new ArgsMapper <ThreeIntOptionsArgs>();

            mapper.AddPositionalOption(x => x.Option1);
            mapper.AddPositionalOption(x => x.Option2);
            mapper.AddPositionalOption(x => x.Option3);

            // Act
            var result = mapper.Map("1", "2", "3", "4");

            // Assert
            Assert.True(result.HasError);
            Assert.Equal("There is no matched option for value '4'.", result.ErrorMessage);
        }
예제 #6
0
        internal void Mapper_AddPositionalOption_Should_Be_Initialized_With_Property_LongName()
        {
            // Arrange
            var mapper = new ArgsMapper <OneBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Option, "option");
        }
예제 #7
0
        internal void Mapper_AddPositionalOption_Should_Be_Initialized_With_Property_Settings()
        {
            // Arrange
            var mapper = new ArgsMapper <OneBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Option, optionSettings => {
            });
        }
예제 #8
0
        internal void Mapper_AddPositionalOption_List_Should_Be_Initialized_With_Settings()
        {
            // Arrange
            var mapper = new ArgsMapper <OneListStringOptionWithOneBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Options, optionSettings => {
            });
        }
예제 #9
0
        internal void PositionalOption_Single_String_Values_Should_Be_Matched_After_Separator()
        {
            // Arrange
            var mapper = new ArgsMapper <ThreeStringOptionsArgs>();

            mapper.AddPositionalOption(x => x.Option1);
            mapper.AddPositionalOption(x => x.Option2);
            mapper.AddOption(x => x.Option3);

            // Act
            var result = mapper.Map("--option3", "bar", "--", "foo", "--option");

            // Assert
            Assert.Equal("foo", result.Model.Option1);
            Assert.Equal("--option", result.Model.Option2);
            Assert.Equal("bar", result.Model.Option3);
        }
예제 #10
0
        internal void Mapper_AddPositionalOption_List_AddOption_Should_Be_Initialized()
        {
            // Arrange
            var mapper = new ArgsMapper <OneListStringOptionWithOneBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Options);
            mapper.AddOption(x => x.Option);
        }
예제 #11
0
        internal void PositionalOption_Should_Be_Matched_Values_With_Default_Values()
        {
            // Arrange
            var mapper = new ArgsMapper <ThreeIntOptionsArgs>();

            mapper.AddPositionalOption(x => x.Option1);
            mapper.AddPositionalOption(x => x.Option2);
            mapper.AddPositionalOption(x => x.Option3);

            // Act
            var result = mapper.Map("1");

            // Assert
            Assert.Equal(1, result.Model.Option1);
            Assert.Equal(0, result.Model.Option2);
            Assert.Equal(0, result.Model.Option3);
        }
예제 #12
0
        internal void PositionalOption_Single_Values_Should_Be_Matched_After_Separator()
        {
            // Arrange
            var mapper = new ArgsMapper <ThreeIntOptionsArgs>();

            mapper.AddPositionalOption(x => x.Option1);
            mapper.AddPositionalOption(x => x.Option2);
            mapper.AddOption(x => x.Option3);

            // Act
            var result = mapper.Map("--option3", "3", "--", "1", "2");

            // Assert
            Assert.Equal(1, result.Model.Option1);
            Assert.Equal(2, result.Model.Option2);
            Assert.Equal(3, result.Model.Option3);
        }
예제 #13
0
        internal void AddPositionalOption_Should_Throw_ReservedOptionLongNameException(string optionLongName)
        {
            // Arrange
            var mapper = new ArgsMapper <OneBoolOptionArgs>();

            // Assert
            Assert.Throws <ReservedOptionLongNameException>(() =>
                                                            mapper.AddPositionalOption(x => x.Option, optionLongName)
                                                            );
        }
예제 #14
0
        internal void PositionalOption_Should_Be_Used_With_Named_Options()
        {
            // Arrange
            var mapper = new ArgsMapper <FourBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Option1);
            mapper.AddOption(x => x.Option2);
            mapper.AddPositionalOption(x => x.Option3);
            mapper.AddOption(x => x.Option4, 'o', "option4");

            // Act
            var result = mapper.Map("1", "off", "-o", "--option2", "on");

            // Assert
            Assert.True(result.Model.Option1);
            Assert.True(result.Model.Option2);
            Assert.False(result.Model.Option3);
            Assert.True(result.Model.Option4);
        }
예제 #15
0
        internal void AddPositionalOption_Should_Throw_ArgumentException_When_Property_Has_No_Setter()
        {
            // Arrange
            var mapper = new ArgsMapper <OneBoolWithoutSetterOptionArgs>();

            // Assert
            Assert.Throws <ArgumentException>(() =>
                                              mapper.AddPositionalOption(x => x.Option)
                                              );
        }
예제 #16
0
        internal void PositionalOption_Should_Be_Matched_Bool_Values()
        {
            // Arrange
            var mapper = new ArgsMapper <FourBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Option1);
            mapper.AddPositionalOption(x => x.Option2);
            mapper.AddPositionalOption(x => x.Option3);
            mapper.AddPositionalOption(x => x.Option4);

            // Act
            var result = mapper.Map("1", "on", "true", "0");

            // Assert
            Assert.True(result.Model.Option1);
            Assert.True(result.Model.Option2);
            Assert.True(result.Model.Option3);
            Assert.False(result.Model.Option4);
        }
예제 #17
0
        internal void AddPositionalOption_Should_Throw_UnsupportedOptionPropertyTypeException_Class()
        {
            // Arrange
            var mapper = new ArgsMapper <OneCommandWithOneBoolOptionArgs>();

            // Assert
            Assert.Throws <UnsupportedOptionPropertyTypeException>(() =>
                                                                   mapper.AddPositionalOption(x => x.Command)
                                                                   );
        }
예제 #18
0
        internal void AddPositionalOption_Should_Throw_ArgumentException_When_Property_Method()
        {
            // Arrange
            var mapper = new ArgsMapper <OneBoolMethodOptionArgs>();

            // Assert
            Assert.Throws <ArgumentException>(() =>
                                              mapper.AddPositionalOption(x => x.Option())
                                              );
        }
예제 #19
0
        internal void AddPositionalOption_Should_Throw_OptionLongNameRequiredException()
        {
            // Arrange
            var mapper = new ArgsMapper <OneBoolOptionArgs>();

            // Assert
            Assert.Throws <OptionLongNameRequiredException>(() =>
                                                            mapper.AddPositionalOption(x => x.Option, string.Empty)
                                                            );
        }
예제 #20
0
        internal void AddCommand_Should_Throw_CommandConflictsWithPositionalOptionException()
        {
            // Arrange
            var mapper = new ArgsMapper <OneCommandWithOneBoolOptionAndOneBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Option);

            // Assert
            Assert.Throws <CommandConflictsWithPositionalOptionException>(() =>
                                                                          mapper.AddCommand(x => x.Command)
                                                                          );
        }
예제 #21
0
        internal void PositionalOption_List_Should_Have_Arg_Values()
        {
            // Arrange
            var mapper = new ArgsMapper <OneListStringOptionArgs>();

            mapper.AddPositionalOption(x => x.Option);

            // Act
            var result = mapper.Map("foo", "bar");

            // Assert
            Assert.Equal(new[] { "foo", "bar" }, result.Model.Option);
        }
예제 #22
0
        internal void PositionalOption_Should_Be_Matched_With_Assignment_Operator_Included_Values(string value)
        {
            // Arrange
            var mapper = new ArgsMapper <OneStringOptionArgs>();

            mapper.AddPositionalOption(x => x.Option);

            // Act
            var result = mapper.Map(value);

            // Assert
            Assert.Equal(value, result.Model.Option);
        }
예제 #23
0
        internal void MapperResult_Should_Have_Error_When_PositionalOption_Value_Valid_Option()
        {
            // Arrange
            var mapper = new ArgsMapper <OneIntOptionArgs>();

            mapper.AddPositionalOption(x => x.Option);

            // Act
            var result = mapper.Map("--foobar");

            // Assert
            Assert.True(result.HasError);
            Assert.Equal("Unknown option '--foobar'.", result.ErrorMessage);
        }
예제 #24
0
        internal void PositionalOption_Values_Should_Be_Matched_After_Separator()
        {
            // Arrange
            var mapper = new ArgsMapper <OneListStringOptionWithOneBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Options);
            mapper.AddOption(x => x.Option);

            // Act
            var result = mapper.Map("--option", "1", "--", "foo", "bar", "--option", "1");

            // Assert
            Assert.Equal(new[] { "foo", "bar", "--option", "1" }, result.Model.Options);
            Assert.Equal(1, result.Model.Option);
        }
예제 #25
0
        internal void MapperResult_Should_Have_Error_When_PositionalOption_List_Is_Required()
        {
            // Arrange
            var mapper = new ArgsMapper <OneListStringOptionArgs>();

            mapper.AddPositionalOption(x => x.Option, optionSettings => {
                optionSettings.IsRequired = true;
            });

            // Act
            var result = mapper.Map();

            // Assert
            Assert.True(result.HasError);
            Assert.Equal("Required option 'option' is missing.", result.ErrorMessage);
        }
예제 #26
0
        internal void Should_Be_Use_PositionalOption_List_With_Another_Option()
        {
            // Arrange
            var mapper = new ArgsMapper <OneListStringOptionWithOneBoolOptionArgs>();

            mapper.AddPositionalOption(x => x.Options);
            mapper.AddOption(x => x.Option);

            // Act
            var result = mapper.Map("foo", "bar", "--option", "1");

            // Assert
            Assert.Contains("foo", result.Model.Options);
            Assert.Contains("bar", result.Model.Options);

            Assert.Equal(1, result.Model.Option);
        }