public void ConvertGbToBytes() { var valueGB = 5.0; var result = ConvertToBytes.ConvertNumberToBytes(valueGB, "GB"); Assert.AreEqual((valueGB * 1024 * 1024 * 1024), result); }
public void ConvertBytesToBytes() { var valueB = 200.0; var result = ConvertToBytes.ConvertNumberToBytes(valueB, "Bytes"); Assert.AreEqual((valueB), result); }
public void ConvertKbToBytes() { var valueKB = 2.0; var result = ConvertToBytes.ConvertNumberToBytes(valueKB, "KB"); Assert.AreEqual((valueKB * 1024), result); }
public void ConvertMbToBytes() { var valueMB = 2.0; var result = ConvertToBytes.ConvertNumberToBytes(valueMB, "MB"); Assert.AreEqual((valueMB * 1024 * 1024), result); }
public void IncorrectValueToBytes() { var valueMB = -1.0; var ex = Assert.Throws <ArgumentException>(() => ConvertToBytes.ConvertNumberToBytes(valueMB, "MB")); Assert.That(ex.ParamName, Is.EqualTo("size")); Assert.That(ex.Message, Is.EqualTo("Size cannot be less than zero (Parameter 'size')")); }
private void GetDetailsProjectGutHub(HtmlDocument htmlDocument) { // Nodes that have the file or folder page url var files = htmlDocument.DocumentNode.SelectNodes("//*[contains(@class,'js-navigation-open link-gray-dark')]"); foreach (HtmlNode file in files) { if (file.Attributes.Count > 0) { // Downloading the file page to get the data from the lines of code and bytes var urlFile = new Uri(@"https://github.com/" + WebUtility.HtmlDecode(file.Attributes["href"].Value)).AbsoluteUri; htmlDocument = _httpClient.Load(urlFile); var elementRoot = htmlDocument.DocumentNode; var detailsFileElement = elementRoot.SelectNodes("//*[contains(@class,'text-mono f6 flex-auto pr-3 flex-order-2 flex-md-order-1 mt-2 mt-md-0')]"); // If detailsFileElement is not null, then it means it is a file, otherwise it is a folder and //it is necessary to repeat the process walking through the subfolders until you reach the files if (detailsFileElement != null) { var detailsFile = WebUtility.HtmlDecode(detailsFileElement.Single().InnerText.Replace("\n", "").Trim()); var splitDetails = detailsFile.Split("lines"); string codeLines = string.Empty; string bytesStr = string.Empty; // Obtain codeLines and bytes from string if (splitDetails.Length > 1) { var lines = splitDetails[0]; codeLines = Regex.Match(lines, @"\d+").Value; bytesStr = splitDetails[1]; } else { codeLines = "0"; bytesStr = splitDetails[0]; } splitDetails = bytesStr.Trim().Split(" "); bytesStr = splitDetails[splitDetails.Length - 2]; var bytesType = splitDetails.Last(); var bytes = ConvertToBytes.ConvertNumberToBytes(Convert.ToDouble(bytesStr, System.Globalization.CultureInfo.InvariantCulture), bytesType); //Get extension file and store in dictionary of Project Info var extension = file.InnerHtml.Split(".").Last(); Domain.Entities.ProjectInfoGitHub linesBytes; if (_dicProjectInfo.TryGetValue(extension, out linesBytes)) { linesBytes.SetBytes(linesBytes.Bytes + bytes); linesBytes.SetCodeLines(linesBytes.Lines + Convert.ToInt64(codeLines)); _dicProjectInfo[extension] = linesBytes; } else { var projectInfoGitHub = new Domain.Entities.ProjectInfoGitHub(extension, Convert.ToInt64(codeLines), bytes); _dicProjectInfo.Add(extension, projectInfoGitHub); } } else { //Recursive method case the element be folder GetDetailsProjectGutHub(htmlDocument); } } } }