public void SuccessfulBuild()
        {
            try
            {
                DynamicIconOptionsBuilder builder = new DynamicIconOptionsBuilder();
                DynamicIconOptions        options = builder.UseDefaultBackground("C0FFEE")
                                                    .UseDefaultForeground("DEADB0")
                                                    .UseDefaultFormat(IconFormat.Ico)
                                                    .UseFontName("Arial")
                                                    .UseMinimumSize(128)
                                                    .UseDefaultSize(256)
                                                    .UseMaximumSize(512)
                                                    .UseRoute("/route")
                                                    .Build();

                Assert.AreEqual("C0FFEE", options.DefaultBackground);
                Assert.AreEqual("DEADB0", options.DefaultForeground);
                Assert.AreEqual(IconFormat.Ico, options.Format);
                Assert.AreEqual("Arial", options.FontName);
                Assert.AreEqual(128, options.MinimumSize);
                Assert.AreEqual(256, options.DefaultSize);
                Assert.AreEqual(512, options.MaximumSize);
                Assert.AreEqual("/route", options.Route);
            }
            catch
            {
                throw;
            }
        }
        public void InvalidDefaultSize()
        {
            DynamicIconOptionsBuilder builder = new DynamicIconOptionsBuilder();

            Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                builder.UseDefaultSize(DynamicIconMiddleware.MINIMUM_SIZE - 1);
            });

            Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                builder.UseDefaultSize(DynamicIconMiddleware.MAXIMUM_SIZE + 1);
            });

            Assert.ThrowsException <InvalidOperationException>(() =>
            {
                builder.UseMinimumSize(128)
                .UseMaximumSize(512)
                .UseDefaultSize(64)
                .Build();
            });

            Assert.ThrowsException <InvalidOperationException>(() =>
            {
                builder.UseMinimumSize(128)
                .UseMaximumSize(512)
                .UseDefaultSize(1024)
                .Build();
            });
        }
        public void InvalidFormat()
        {
            DynamicIconOptionsBuilder builder = new DynamicIconOptionsBuilder();

            Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                builder.UseDefaultFormat(0);
            });
        }
        public void InvalidForeground()
        {
            DynamicIconOptionsBuilder builder = new DynamicIconOptionsBuilder();

            Assert.ThrowsException <ArgumentNullException>(() =>
            {
                builder.UseDefaultForeground(null);
            });

            Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                builder.UseDefaultForeground(String.Empty);
            });
        }
        public void InvalidRoute()
        {
            DynamicIconOptionsBuilder builder = new DynamicIconOptionsBuilder();

            Assert.ThrowsException <ArgumentNullException>(() =>
            {
                builder.UseRoute(null);
            });

            Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                builder.UseRoute(String.Empty);
            });
        }