public void RemovingCommentsIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input1        = "font-size:62.5%/* 1em = 10px */";
            const string targetOutput1 = "font-size:62.5%";

            const string input2 = "font-size:120%;/* Размер шрифта */" +
                                  "font-family:Verdana,Arial,Helvetica,sans-serif;/* Семейство шрифта */" +
                                  "color:#336/* Цвет текста */"
            ;
            const string targetOutput2 = "font-size:120%;" +
                                         "font-family:Verdana,Arial,Helvetica,sans-serif;" +
                                         "color:#336"
            ;

            const string input3        = "width:300px/*;margin-left:20px*/;margin-right:20px";
            const string targetOutput3 = "width:300px;margin-right:20px";

            // Act
            string output1 = minifier.Minify(input1, true).MinifiedContent;
            string output2 = minifier.Minify(input2, true).MinifiedContent;
            string output3 = minifier.Minify(input3, true).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput1, output1);
            Assert.Equal(targetOutput2, output2);
            Assert.Equal(targetOutput3, output3);
        }
Exemple #2
0
        private void MinifyCssDirectory(string path)
        {
            foreach (var file in Directory.GetFiles(path, "*.css", SearchOption.AllDirectories))
            {
                if (file.IndexOf(".min.", StringComparison.OrdinalIgnoreCase) != -1)
                {
                    continue;
                }
                if (file.IndexOf("bower_", StringComparison.OrdinalIgnoreCase) != -1)
                {
                    continue;
                }

                try
                {
                    var text = _fileSystem.ReadAllText(file, Encoding.UTF8);

                    var result = new KristensenCssMinifier().Minify(text, false, Encoding.UTF8);

                    if (result.Errors.Count > 0)
                    {
                        Logger.Error("Error minifying css: " + result.Errors[0].Message);
                    }
                    else
                    {
                        text = result.MinifiedContent;
                        _fileSystem.WriteAllText(file, text, Encoding.UTF8);
                    }
                }
                catch (Exception ex)
                {
                    Logger.ErrorException("Error minifying css", ex);
                }
            }
        }
        public void ApplyingOfAllOptimizationsIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input = "  	width:	640px; "+
                                 "/*max-width: 1020px; */" +
                                 "margin: 10px  0px; " +
                                 "border: 4px  double   black; " +
                                 "font-size:  120%; " +
                                 "font-family: Verdana,	 Arial,   Helvetica,  sans-serif ; " +
                                 "color : #336	 ; "
            ;
            const string targetOutput = "width:640px;" +
                                        "margin:10px 0;" +
                                        "border:4px double black;" +
                                        "font-size:120%;" +
                                        "font-family:Verdana,Arial,Helvetica,sans-serif;" +
                                        "color:#336"
            ;

            // Act
            string output = minifier.Minify(input, true).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput, output);
        }
        public ICssMinifier CreateMinifier(string minifierName)
        {
#if DNXCORE50
            ICssMinifier minifier = new KristensenCssMinifier();
#else
            ICssMinifier minifier;

            switch (minifierName)
            {
            case "KristensenCssMinifier":
                minifier = new KristensenCssMinifier();
                break;

            case "MsAjaxCssMinifier":
                minifier = new MsAjaxCssMinifier();
                break;

            case "YuiCssMinifier":
                minifier = new YuiCssMinifier();
                break;

            default:
                throw new NotSupportedException();
            }
#endif

            return(minifier);
        }
Exemple #5
0
        private void MinifyCssDirectory(string path)
        {
            foreach (var file in Directory.GetFiles(path, "*.css", SearchOption.AllDirectories))
            {
                try
                {
                    var text = File.ReadAllText(file, Encoding.UTF8);

                    var result = new KristensenCssMinifier().Minify(text, false, Encoding.UTF8);

                    if (result.Errors.Count > 0)
                    {
                        Logger.Error("Error minifying css: " + result.Errors[0].Message);
                    }
                    else
                    {
                        text = result.MinifiedContent;
                        File.WriteAllText(file, text, Encoding.UTF8);
                    }
                }
                catch (Exception ex)
                {
                    Logger.ErrorException("Error minifying css", ex);
                }
            }
        }
Exemple #6
0
        /// <summary>
        /// Safely Attempts to minify the provided string.
        /// </summary>
        /// <param name="recording">The string to minify</param>
        /// <returns>Minified version of the string, or, if errors were encountered, returns the original string.</returns>
        private string Minify(string recording)
        {
            var settings    = new HtmlMinificationSettings();
            var cssMinifier = new KristensenCssMinifier();
            var jsMinifier  = new CrockfordJsMinifier();

            var minifier = new HtmlMinifier(settings, cssMinifier, jsMinifier);

            MarkupMinificationResult result = minifier.Minify(recording);

            if (result.Errors.Count != 0)
            {
                var builder = new StringBuilder("Attempt to minify rendering failed");

                foreach (var error in result.Errors)
                {
                    builder.AppendLine(error.Category + " - " + error.Message);
                }

                Log.Warn(builder.ToString(), this);
                return(recording);
            }

            return(result.MinifiedContent);
        }
Exemple #7
0
        public ICssMinifier CreateMinifier(string minifierName)
        {
            ICssMinifier minifier;

            switch (minifierName)
            {
            case "KristensenCssMinifier":
                minifier = new KristensenCssMinifier();
                break;

#if !NETSTANDARD1_6
            case "MsAjaxCssMinifier":
                minifier = new MsAjaxCssMinifier();
                break;

            case "YuiCssMinifier":
                minifier = new YuiCssMinifier();
                break;
#endif
            case "NUglifyCssMinifier":
                minifier = new NUglifyCssMinifier();
                break;

            default:
                throw new NotSupportedException();
            }

            return(minifier);
        }
		/// <summary>
		/// Safely Attempts to minify the provided string.
		/// </summary>
		/// <param name="recording">The string to minify</param>
		/// <returns>Minified version of the string, or, if errors were encountered, returns the original string.</returns>
		private string Minify(string recording)
		{
			var settings = new HtmlMinificationSettings();
			var cssMinifier = new KristensenCssMinifier();
			var jsMinifier = new CrockfordJsMinifier();

			var minifier = new HtmlMinifier(settings, cssMinifier, jsMinifier);

			MarkupMinificationResult result = minifier.Minify(recording);

			if (result.Errors.Count != 0)
			{
				var builder = new StringBuilder("Attempt to minify rendering failed");

				foreach (var error in result.Errors)
				{
					builder.AppendLine(error.Category + " - " + error.Message);
				}

				Log.Warn(builder.ToString(), this);
				return recording;
			}

			return result.MinifiedContent;
		}
        /// <summary>
        /// Gets all CSS.
        /// </summary>
        /// <returns>Task{Stream}.</returns>
        private async Task <Stream> GetAllCss(bool enableMinification)
        {
            var memoryStream = new MemoryStream();

            var files = new[]
            {
                "css/site.css",
                "css/librarymenu.css",
                "css/librarybrowser.css",
                "thirdparty/paper-button-style.css"
            };

            var builder = new StringBuilder();

            foreach (var file in files)
            {
                var path = GetDashboardResourcePath(file);

                using (var fs = _fileSystem.GetFileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true))
                {
                    using (var streamReader = new StreamReader(fs))
                    {
                        var text = await streamReader.ReadToEndAsync().ConfigureAwait(false);

                        builder.Append(text);
                        builder.Append(Environment.NewLine);
                    }
                }
            }

            var css = builder.ToString();

            if (enableMinification)
            {
                try
                {
                    var result = new KristensenCssMinifier().Minify(builder.ToString(), false, Encoding.UTF8);

                    if (result.Errors.Count > 0)
                    {
                        _logger.Error("Error minifying css: " + result.Errors[0].Message);
                    }
                    else
                    {
                        css = result.MinifiedContent;
                    }
                }
                catch (Exception ex)
                {
                    _logger.ErrorException("Error minifying css", ex);
                }
            }

            var bytes = Encoding.UTF8.GetBytes(css);

            memoryStream.Write(bytes, 0, bytes.Length);

            memoryStream.Position = 0;
            return(memoryStream);
        }
Exemple #10
0
        public void RemovingCommentsIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input1        = "body{font-size:62.5% /* 1em = 10px */}";
            const string targetOutput1 = "body{font-size:62.5%}";

            const string input2 = "h1 {\n" +
                                  "  font-size: 120%; /* Размер шрифта */\n" +
                                  "  font-family: Verdana, Arial, Helvetica, sans-serif; /* Семейство шрифта */\n" +
                                  "  color: #336 /* Цвет текста */\n" +
                                  "}"
            ;
            const string targetOutput2 = "h1{" +
                                         "font-size:120%;" +
                                         "font-family:Verdana,Arial,Helvetica,sans-serif;" +
                                         "color:#336" +
                                         "}"
            ;

            const string input3 = "* {\n" +
                                  "  margin: 0;\n" +
                                  "  padding: 0\n" +
                                  "}\n" +
                                  "/*\n\n" +
                                  "span {\n" +
                                  "  color: blue;\n" +
                                  "  font-size: 1.5em\n" +
                                  "}\n" +
                                  "*/\n\n" +
                                  "p {\n" +
                                  "   font-family: arial, helvetica, sans-serif\n" +
                                  "}"
            ;
            const string targetOutput3 = "*{" +
                                         "margin:0;" +
                                         "padding:0" +
                                         "}" +
                                         "p{" +
                                         "font-family:arial,helvetica,sans-serif" +
                                         "}"
            ;

            // Act
            string output1 = minifier.Minify(input1, false).MinifiedContent;
            string output2 = minifier.Minify(input2, false).MinifiedContent;
            string output3 = minifier.Minify(input3, false).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput1, output1);
            Assert.Equal(targetOutput2, output2);
            Assert.Equal(targetOutput3, output3);
        }
Exemple #11
0
        public void ApplyingOfAllOptimizationsIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input = "  	div#idDiv\n"+
                                 "{\n" +
                                 "	/*max-width: 1020px;*/\n"+
                                 "	margin: 10px  0px;\n"+
                                 "	border: 4px  double   black;\n"+
                                 "	font-size:  120%;\n"+
                                 "	font-family: Verdana,	 Arial,   Helvetica,  sans-serif ;\n"+
                                 "	color : #336;\n"+
                                 "}\n" +
                                 "/*\n\n" +
                                 "span\n" +
                                 "{\n" +
                                 "	color: blue;\n"+
                                 "	font-size: 1.5em;\n"+
                                 "}\n" +
                                 "*/\n\n" +
                                 "a:active\n" +
                                 "{\n" +
                                 "	color: blue;\n"+
                                 "}\n\n" +
                                 "p::first-letter\n" +
                                 "{\n" +
                                 "	font-size: 32px;\n"+
                                 "}	  "
            ;
            const string targetOutput = "#idDiv" +
                                        "{" +
                                        "margin:10px 0;" +
                                        "border:4px double black;" +
                                        "font-size:120%;" +
                                        "font-family:Verdana,Arial,Helvetica,sans-serif;" +
                                        "color:#336" +
                                        "}" +
                                        "a:active" +
                                        "{" +
                                        "color:blue" +
                                        "}" +
                                        "p::first-letter" +
                                        "{" +
                                        "font-size:32px" +
                                        "}"
            ;

            // Act
            string output = minifier.Minify(input, false).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput, output);
        }
		protected string Minify(string content)
		{
			var settings = new HtmlMinificationSettings();
			var cssMinifier = new KristensenCssMinifier();
			var jsMinifier = new CrockfordJsMinifier();
			var minifier = new HtmlMinifier(settings, cssMinifier, jsMinifier);

			MarkupMinificationResult result = minifier.Minify(content);

			if (result.Errors.Count != 0)
			{
				Log.Warn("Attempt to minify content failed", this);
				return content;
			}

			return result.MinifiedContent;
		}
        public void RemovingLastSemicolonsIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input1        = "color:blue;";
            const string targetOutput1 = "color:blue";

            const string input2        = "color:red;background-color:yellow;font-weight:bold;";
            const string targetOutput2 = "color:red;background-color:yellow;font-weight:bold";

            // Act
            string output1 = minifier.Minify(input1, true).MinifiedContent;
            string output2 = minifier.Minify(input2, true).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput1, output1);
            Assert.Equal(targetOutput2, output2);
        }
        /// <summary>
        /// HTML minification.
        /// </summary>
        /// <param name="html">Code to minify.</param>
        /// <returns>Minified html.</returns>
        public static string MinifyHtml(string html)
        {
            var settings     = new HtmlMinificationSettings();
            var cssMinifier  = new KristensenCssMinifier();
            var jsMinifier   = new CrockfordJsMinifier();
            var htmlMinifier = new HtmlMinifier(settings, cssMinifier, jsMinifier);

            MarkupMinificationResult result = htmlMinifier.Minify(
                html,
                generateStatistics: false);

            if (result.Errors.Count == 0)
            {
                return(result.MinifiedContent);
            }
            else
            {
                return(html);
            }
        }
Exemple #15
0
        public void RemovingRedundantSelectorsIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input1        = "div#idDiv{border:2px solid blue;color:red;margin-top:15px}";
            const string targetOutput1 = "#idDiv{border:2px solid blue;color:red;margin-top:15px}";

            const string input2 = "#content.sectionA{background-color:yellow}";
            const string input3 = "* html #someblock{width:100px;padding:10px}";

            // Act
            string output1 = minifier.Minify(input1, false).MinifiedContent;
            string output2 = minifier.Minify(input2, false).MinifiedContent;
            string output3 = minifier.Minify(input3, false).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput1, output1);
            Assert.Equal(input2, output2);
            Assert.Equal(input3, output3);
        }
        public async Task <Stream> ModifyCss(Stream sourceStream, bool enableMinification)
        {
            using (sourceStream)
            {
                string content;

                using (var memoryStream = new MemoryStream())
                {
                    await sourceStream.CopyToAsync(memoryStream).ConfigureAwait(false);

                    content = Encoding.UTF8.GetString(memoryStream.ToArray());

                    if (enableMinification)
                    {
                        try
                        {
                            var result = new KristensenCssMinifier().Minify(content, false, Encoding.UTF8);

                            if (result.Errors.Count > 0)
                            {
                                _logger.Error("Error minifying css: " + result.Errors[0].Message);
                            }
                            else
                            {
                                content = result.MinifiedContent;
                            }
                        }
                        catch (Exception ex)
                        {
                            _logger.ErrorException("Error minifying css", ex);
                        }
                    }
                }

                var bytes = Encoding.UTF8.GetBytes(content);

                return(new MemoryStream(bytes));
            }
        }
        public void WhitespaceMinificationIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input1        = "background-image:	url('/images/products/392.jpg')";
            const string targetOutput1 = "background-image:url('/images/products/392.jpg')";

            const string input2 = "  	font-size:	120%;  "+
                                  "font-family: Verdana,	Arial,   Helvetica,  sans-serif ;"+
                                  "color : #336	  "
            ;
            const string targetOutput2 = "font-size:120%;" +
                                         "font-family:Verdana,Arial,Helvetica,sans-serif;" +
                                         "color:#336";

            // Act
            string output1 = minifier.Minify(input1, true).MinifiedContent;
            string output2 = minifier.Minify(input2, true).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput1, output1);
            Assert.Equal(targetOutput2, output2);
        }
Exemple #18
0
        /// <summary>
        /// Gets all CSS.
        /// </summary>
        /// <returns>Task{Stream}.</returns>
        private async Task <Stream> GetAllCss(bool enableMinification)
        {
            var memoryStream = new MemoryStream();
            var newLineBytes = Encoding.UTF8.GetBytes(Environment.NewLine);

            await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.theme.min.css", newLineBytes).ConfigureAwait(false);
            await AppendResource(memoryStream, "thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.structure.min.css", newLineBytes).ConfigureAwait(false);

            var files = new[]
            {
                "css/site.css",
                "css/chromecast.css",
                "css/nowplayingbar.css",
                "css/mediaplayer.css",
                "css/mediaplayer-video.css",
                "css/librarymenu.css",
                "css/librarybrowser.css",
                "css/card.css",
                "css/notifications.css",
                "css/search.css",
                "css/pluginupdates.css",
                "css/remotecontrol.css",
                "css/userimage.css",
                "css/nowplaying.css",
                "css/materialize.css",
                "thirdparty/paper-button-style.css"
            };

            var builder = new StringBuilder();

            foreach (var file in files)
            {
                var path = GetDashboardResourcePath(file);

                using (var fs = _fileSystem.GetFileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true))
                {
                    using (var streamReader = new StreamReader(fs))
                    {
                        var text = await streamReader.ReadToEndAsync().ConfigureAwait(false);

                        builder.Append(text);
                        builder.Append(Environment.NewLine);
                    }
                }
            }

            var css = builder.ToString();

            if (enableMinification)
            {
                try
                {
                    var result = new KristensenCssMinifier().Minify(builder.ToString(), false, Encoding.UTF8);

                    if (result.Errors.Count > 0)
                    {
                        _logger.Error("Error minifying css: " + result.Errors[0].Message);
                    }
                    else
                    {
                        css = result.MinifiedContent;
                    }
                }
                catch (Exception ex)
                {
                    _logger.ErrorException("Error minifying css", ex);
                }
            }

            var bytes = Encoding.UTF8.GetBytes(css);

            memoryStream.Write(bytes, 0, bytes.Length);

            memoryStream.Position = 0;
            return(memoryStream);
        }
Exemple #19
0
        public IEnumerable <IDocument> Execute(IReadOnlyList <IDocument> inputs, IExecutionContext context)
        {
            KristensenCssMinifier minifier = new KristensenCssMinifier();

            return(Minify(inputs, context, (x) => minifier.Minify(x, _isInlineCode), "CSS"));
        }
        /// <inheritdoc />
        public async Task <IEnumerable <IDocument> > ExecuteAsync(IExecutionContext context)
        {
            KristensenCssMinifier minifier = new KristensenCssMinifier();

            return(await MinifyAsync(context, (x) => minifier.Minify(x, _isInlineCode), "CSS"));
        }
        /// <summary>
        /// Gets all CSS.
        /// </summary>
        /// <returns>Task{Stream}.</returns>
        private async Task <Stream> GetAllCss(bool enableMinification)
        {
            var files = new[]
            {
                "site.css",
                "chromecast.css",
                "mediaplayer.css",
                "mediaplayer-video.css",
                "librarymenu.css",
                "librarybrowser.css",
                "detailtable.css",
                "card.css",
                "tileitem.css",
                "metadataeditor.css",
                "notifications.css",
                "search.css",
                "pluginupdates.css",
                "remotecontrol.css",
                "userimage.css",
                "livetv.css",
                "nowplaying.css",
                "icons.css",
                "materialize.css"
            };

            var builder = new StringBuilder();

            foreach (var file in files)
            {
                var path = GetDashboardResourcePath("css/" + file);

                using (var fs = _fileSystem.GetFileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true))
                {
                    using (var streamReader = new StreamReader(fs))
                    {
                        var text = await streamReader.ReadToEndAsync().ConfigureAwait(false);

                        builder.Append(text);
                        builder.Append(Environment.NewLine);
                    }
                }
            }

            var css = builder.ToString();

            if (enableMinification)
            {
                try
                {
                    var result = new KristensenCssMinifier().Minify(builder.ToString(), false, Encoding.UTF8);

                    if (result.Errors.Count > 0)
                    {
                        _logger.Error("Error minifying css: " + result.Errors[0].Message);
                    }
                    else
                    {
                        css = result.MinifiedContent;
                    }
                }
                catch (Exception ex)
                {
                    _logger.ErrorException("Error minifying css", ex);
                }
            }

            var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(css));

            memoryStream.Position = 0;
            return(memoryStream);
        }
Exemple #22
0
        public void RemovingUnitsFromZeroValuesIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input1        = "div{width:0px;margin:10px 0px}";
            const string targetOutput1 = "div{width:0;margin:10px 0}";

            const string input2        = "div{width:0em;margin:10em 0em}";
            const string targetOutput2 = "div{width:0;margin:10em 0}";

            const string input3        = "div{width:0ex;margin:10ex 0ex}";
            const string targetOutput3 = "div{width:0;margin:10ex 0}";

            const string input4        = "div{width:0cm;margin:10cm 0cm}";
            const string targetOutput4 = "div{width:0;margin:10cm 0}";

            const string input5        = "div{width:0mm;margin:10mm 0mm}";
            const string targetOutput5 = "div{width:0;margin:10mm 0}";

            const string input6        = "div{width:0in;margin:10in 0in}";
            const string targetOutput6 = "div{width:0;margin:10in 0}";

            const string input7        = "div{width:0pt;margin:10pt 0pt}";
            const string targetOutput7 = "div{width:0;margin:10pt 0}";

            const string input8        = "div{width:0pc;margin:10pc 0pc}";
            const string targetOutput8 = "div{width:0;margin:10pc 0}";

            const string input9        = "div{width:0%;margin:10% 0%}";
            const string targetOutput9 = "div{width:0;margin:10% 0}";

            const string input10        = "div{width:0ch;margin:10ch 0ch}";
            const string targetOutput10 = "div{width:0;margin:10ch 0}";

            const string input11        = "div{width:0rem;margin:10rem 0rem}";
            const string targetOutput11 = "div{width:0;margin:10rem 0}";

            const string input12        = "div{width:0vh;margin:10vh 0vh}";
            const string targetOutput12 = "div{width:0;margin:10vh 0}";

            const string input13        = "div{width:0vmax;margin:10vmax 0vmax}";
            const string targetOutput13 = "div{width:0;margin:10vmax 0}";

            const string input14        = "div{width:0vmin;margin:10vmin 0vmin}";
            const string targetOutput14 = "div{width:0;margin:10vmin 0}";

            const string input15        = "div{width:0vm;margin:10vm 0vm}";
            const string targetOutput15 = "div{width:0;margin:10vm 0}";

            const string input16        = "div{width:0vw;margin:10vw 0vw}";
            const string targetOutput16 = "div{width:0;margin:10vw 0}";

            // Act
            string output1  = minifier.Minify(input1, false).MinifiedContent;
            string output2  = minifier.Minify(input2, false).MinifiedContent;
            string output3  = minifier.Minify(input3, false).MinifiedContent;
            string output4  = minifier.Minify(input4, false).MinifiedContent;
            string output5  = minifier.Minify(input5, false).MinifiedContent;
            string output6  = minifier.Minify(input6, false).MinifiedContent;
            string output7  = minifier.Minify(input7, false).MinifiedContent;
            string output8  = minifier.Minify(input8, false).MinifiedContent;
            string output9  = minifier.Minify(input9, false).MinifiedContent;
            string output10 = minifier.Minify(input10, false).MinifiedContent;
            string output11 = minifier.Minify(input11, false).MinifiedContent;
            string output12 = minifier.Minify(input12, false).MinifiedContent;
            string output13 = minifier.Minify(input13, false).MinifiedContent;
            string output14 = minifier.Minify(input14, false).MinifiedContent;
            string output15 = minifier.Minify(input15, false).MinifiedContent;
            string output16 = minifier.Minify(input16, false).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput1, output1);
            Assert.Equal(targetOutput2, output2);
            Assert.Equal(targetOutput3, output3);
            Assert.Equal(targetOutput4, output4);
            Assert.Equal(targetOutput5, output5);
            Assert.Equal(targetOutput6, output6);
            Assert.Equal(targetOutput7, output7);
            Assert.Equal(targetOutput8, output8);
            Assert.Equal(targetOutput9, output9);
            Assert.Equal(targetOutput10, output10);
            Assert.Equal(targetOutput11, output11);
            Assert.Equal(targetOutput12, output12);
            Assert.Equal(targetOutput13, output13);
            Assert.Equal(targetOutput14, output14);
            Assert.Equal(targetOutput15, output15);
            Assert.Equal(targetOutput16, output16);
        }
Exemple #23
0
        public void WhitespaceMinificationIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input1 = "body { background-color: powderblue }\r\n" +
                                  "h1   { color: blue }\r\n" +
                                  "p    { color: red }"
            ;
            const string targetOutput1 = "body{background-color:powderblue}" +
                                         "h1{color:blue}" +
                                         "p{color:red}"
            ;

            const string input2 = "h1 {\n" +
                                  "	font-size:  120%;\n" +
                                  "	font-family: Verdana,	 Arial,   Helvetica,  sans-serif ;\n"+
                                  "	color : #336 \n" +
                                  "}\n"
            ;
            const string targetOutput2 = "h1{" +
                                         "font-size:120%;" +
                                         "font-family:Verdana,Arial,Helvetica,sans-serif;" +
                                         "color:#336" +
                                         "}"
            ;

            const string input3 = "  	p.note > b {\r "+
                                  "   color: red\r" +
                                  "}	  "
            ;
            const string targetOutput3 = "p.note > b{" +
                                         "color:red" +
                                         "}"
            ;

            const string input4 = "h1,\n" +
                                  "h2 {\n" +
                                  "	color: red;\n" +
                                  "	font-family: \"Times New Roman\", Georgia, Serif;\n" +
                                  "	line-height: 1.3em\n" +
                                  "}\n"
            ;
            const string targetOutput4 = "h1," +
                                         "h2{" +
                                         "color:red;" +
                                         "font-family:\"Times New Roman\",Georgia,Serif;" +
                                         "line-height:1.3em" +
                                         "}"
            ;

            // Act
            string output1 = minifier.Minify(input1, false).MinifiedContent;
            string output2 = minifier.Minify(input2, false).MinifiedContent;
            string output3 = minifier.Minify(input3, false).MinifiedContent;
            string output4 = minifier.Minify(input4, false).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput1, output1);
            Assert.Equal(targetOutput2, output2);
            Assert.Equal(targetOutput3, output3);
            Assert.Equal(targetOutput4, output4);
        }
        public void RemovingUnitsFromZeroValuesIsCorrect()
        {
            // Arrange
            var minifier = new KristensenCssMinifier();

            const string input1        = "width:0px;margin:10px 0px";
            const string targetOutput1 = "width:0;margin:10px 0";

            const string input2        = "width:0em;margin:10em 0em";
            const string targetOutput2 = "width:0;margin:10em 0";

            const string input3        = "width:0ex;margin:10ex 0ex";
            const string targetOutput3 = "width:0;margin:10ex 0";

            const string input4        = "width:0cm;margin:10cm 0cm";
            const string targetOutput4 = "width:0;margin:10cm 0";

            const string input5        = "width:0mm;margin:10mm 0mm";
            const string targetOutput5 = "width:0;margin:10mm 0";

            const string input6        = "width:0in;margin:10in 0in";
            const string targetOutput6 = "width:0;margin:10in 0";

            const string input7        = "width:0pt;margin:10pt 0pt";
            const string targetOutput7 = "width:0;margin:10pt 0";

            const string input8        = "width:0pc;margin:10pc 0pc";
            const string targetOutput8 = "width:0;margin:10pc 0";

            const string input9        = "width:0%;margin:10% 0%";
            const string targetOutput9 = "width:0;margin:10% 0";

            const string input10        = "width:0ch;margin:10ch 0ch";
            const string targetOutput10 = "width:0;margin:10ch 0";

            const string input11        = "width:0rem;margin:10rem 0rem";
            const string targetOutput11 = "width:0;margin:10rem 0";

            const string input12        = "width:0vh;margin:10vh 0vh";
            const string targetOutput12 = "width:0;margin:10vh 0";

            const string input13        = "width:0vmax;margin:10vmax 0vmax";
            const string targetOutput13 = "width:0;margin:10vmax 0";

            const string input14        = "width:0vmin;margin:10vmin 0vmin";
            const string targetOutput14 = "width:0;margin:10vmin 0";

            const string input15        = "width:0vm;margin:10vm 0vm";
            const string targetOutput15 = "width:0;margin:10vm 0";

            const string input16        = "width:0vw;margin:10vw 0vw";
            const string targetOutput16 = "width:0;margin:10vw 0";

            // Act
            string output1  = minifier.Minify(input1, true).MinifiedContent;
            string output2  = minifier.Minify(input2, true).MinifiedContent;
            string output3  = minifier.Minify(input3, true).MinifiedContent;
            string output4  = minifier.Minify(input4, true).MinifiedContent;
            string output5  = minifier.Minify(input5, true).MinifiedContent;
            string output6  = minifier.Minify(input6, true).MinifiedContent;
            string output7  = minifier.Minify(input7, true).MinifiedContent;
            string output8  = minifier.Minify(input8, true).MinifiedContent;
            string output9  = minifier.Minify(input9, true).MinifiedContent;
            string output10 = minifier.Minify(input10, true).MinifiedContent;
            string output11 = minifier.Minify(input11, true).MinifiedContent;
            string output12 = minifier.Minify(input12, true).MinifiedContent;
            string output13 = minifier.Minify(input13, true).MinifiedContent;
            string output14 = minifier.Minify(input14, true).MinifiedContent;
            string output15 = minifier.Minify(input15, true).MinifiedContent;
            string output16 = minifier.Minify(input16, true).MinifiedContent;

            // Assert
            Assert.Equal(targetOutput1, output1);
            Assert.Equal(targetOutput2, output2);
            Assert.Equal(targetOutput3, output3);
            Assert.Equal(targetOutput4, output4);
            Assert.Equal(targetOutput5, output5);
            Assert.Equal(targetOutput6, output6);
            Assert.Equal(targetOutput7, output7);
            Assert.Equal(targetOutput8, output8);
            Assert.Equal(targetOutput9, output9);
            Assert.Equal(targetOutput10, output10);
            Assert.Equal(targetOutput11, output11);
            Assert.Equal(targetOutput12, output12);
            Assert.Equal(targetOutput13, output13);
            Assert.Equal(targetOutput14, output14);
            Assert.Equal(targetOutput15, output15);
            Assert.Equal(targetOutput16, output16);
        }