Esempio n. 1
0
        public void Actually_Configures()
        {
            bool marker = false;

            void op(CommandOption o)
            {
                marker = true;
            }

            var cfg = new EnumOptionConfigBuilder <TestEnum>(template, desc)
                      .AllowMultiple(false)
                      .Configuration(op)
                      .DescribeArity(false)
                      .DescribeValues(false)
                      .Inherited(true)
                      .ThrowOnInvalidOption(true)
                      .Use(TestEnum.abc)
                      .Build();

            Assert.AreEqual(false, cfg.AllowMultiple);
            Assert.AreEqual(false, cfg.DescribeArity);
            Assert.AreEqual(false, cfg.DescribeValues);
            Assert.AreEqual(true, cfg.Inherited);
            Assert.AreEqual(true, cfg.ThrowOnInvalidOption);

            cfg.Configuration(null);
            Assert.IsTrue(marker);
        }
Esempio n. 2
0
        public void Use_default()
        {
            var cfg = new EnumOptionConfigBuilder <TestEnum>(template, desc)
                      .Use(TestEnum.abc)
                      .Build()
            ;

            Assert.AreEqual(TestEnum.abc, cfg.OptionValueMap["abc"]);
        }
Esempio n. 3
0
        public void Uses_comparer()
        {
            var cfg = new EnumOptionConfigBuilder <TestEnum>(template, desc, StringComparer.Ordinal)
                      .Use(TestEnum.abc)
                      .Build()
            ;

            Assert.IsTrue(cfg.OptionValueMap.ContainsKey("abc"));
            Assert.IsFalse(cfg.OptionValueMap.ContainsKey("ABC"));
        }
Esempio n. 4
0
        public void Use_all_uses_all_enum_values()
        {
            var cfg = new EnumOptionConfigBuilder <TestEnum>(template, desc)
                      .UseAll()
                      .Build()
            ;

            Assert.AreEqual(TestEnum.abc, cfg.OptionValueMap["abc"]);
            Assert.AreEqual(TestEnum.def, cfg.OptionValueMap["def"]);
        }
Esempio n. 5
0
        public void Use_specified()
        {
            var cfg = new EnumOptionConfigBuilder <TestEnum>(template, desc)
                      .Use("xyz", TestEnum.abc)
                      .Use("opq", TestEnum.abc)
                      .Build()
            ;

            Assert.AreEqual(TestEnum.abc, cfg.OptionValueMap["opq"]);
            Assert.AreEqual(TestEnum.abc, cfg.OptionValueMap["xyz"]);
        }
Esempio n. 6
0
        public void Default_ignore_case()
        {
            var cfg = new EnumOptionConfigBuilder <TestEnum>(template, desc)
                      .Use(TestEnum.abc)
                      .Build()
            ;

            Assert.AreEqual(TestEnum.abc, cfg.OptionValueMap["abc"]);
            Assert.AreEqual(TestEnum.abc, cfg.OptionValueMap["ABC"]);
            Assert.AreEqual(TestEnum.abc, cfg.OptionValueMap["AbC"]);
        }
Esempio n. 7
0
        public void Use_exception_on_duplicate_key()
        {
            var builder = new EnumOptionConfigBuilder <TestEnum>(template, desc)
                          .Use("def", TestEnum.abc)
                          .Use("qwerty", TestEnum.abc)
            ;

            Assert.ThrowsException <InvalidOperationException>(
                () => builder.Use(TestEnum.def)
                );
            Assert.ThrowsException <InvalidOperationException>(
                () => builder.Use("qwerty", TestEnum.def)
                );
        }
Esempio n. 8
0
        public void Sets_default_values()
        {
            var cfg = new EnumOptionConfigBuilder <TestEnum>(template, desc)
                      .Use(TestEnum.abc)
                      .Build();

            Assert.AreEqual(template, cfg.Template);
            Assert.AreEqual(desc, cfg.Description);

            Assert.AreEqual(true, cfg.AllowMultiple);
            Assert.AreEqual(true, cfg.DescribeArity);
            Assert.AreEqual(true, cfg.DescribeValues);
            Assert.AreEqual(false, cfg.Inherited);
            Assert.AreEqual(false, cfg.ThrowOnInvalidOption);

            // No exact way to test it's a NoOp, but at least this tries.
            cfg.Configuration(null);
        }
Esempio n. 9
0
        public void Prevents_Double_Configure()
        {
            var builder = new EnumOptionConfigBuilder <TestEnum>(template, desc);

            var actions = new Func <EnumOptionConfigBuilder <TestEnum> >[]
            {
                () => builder.AllowMultiple(true),
                () => builder.Configuration((x) => { }),
                () => builder.DescribeArity(true),
                () => builder.DescribeValues(true),
                () => builder.Inherited(true),
                () => builder.ThrowOnInvalidOption(true),
            };

            foreach (var action in actions)
            {
                action();
                Assert.ThrowsException <InvalidOperationException>(() => action());
            }
        }
Esempio n. 10
0
        public void Requires_at_least_one_use()
        {
            var builder = new EnumOptionConfigBuilder <TestEnum>(template, desc);

            Assert.ThrowsException <InvalidOperationException>(() => builder.Build());
        }