private void HdzValidator(int byteNumber) { using (var writer = new FileStream(Environment.ExpandEnvironmentVariables("%TEMP%") + "\\HDZtest_i.txt", FileMode.Create)) { byte[] arr = Encoding.Default.GetBytes("1234567890"); for (int i = 0; i < (byteNumber / 10); i++) { writer.Write(arr, 0, 10); } writer.Flush(); var arch = new HdzArchive(); arch.FileName = writer.Name.Replace("HDZtest_i.txt", "HDZtest_a.hdz"); arch.AddItem(writer.Name, new HdzHeaderItem("HDZtest_o.txt")); arch.Save(HdzArchive.Versions.V1); arch = new HdzArchive(arch.FileName); arch.ExtractItemsFromHdz(new System.Collections.Generic.List <string> { "HDZtest_o.txt" }); using (var reader = new FileStream(writer.Name.Replace("HDZtest_i.txt", "HDZtest_o.txt"), FileMode.Open)) { writer.Seek(0, SeekOrigin.Begin); var res1 = Checksum(writer); var res2 = Checksum(reader); Assert.AreEqual(res1, res2); } } }
private static string NewImpl(string[] args) { string prcName = "", deployPath = "", deployBin = "", srcHdz = "", srcPath = ""; for (var i = 0; i < args.Length; i++) { switch (args[i]) { case "/hdz": srcHdz = args[++i]; srcPath = srcHdz.Substring(0, srcHdz.LastIndexOf('\\') + 1); break; case "/path": deployBin = args[++i]; deployPath = deployBin.Substring(0, deployBin.LastIndexOf('\\') + 1); prcName = deployBin.Substring(deployPath.Length); break; case "/exe": prcName = args[++i]; break; default: throw new ArgumentException("Invalid command line!"); } } prcName = prcName.Trim('"'); deployPath = deployPath.Trim('"'); deployBin = deployBin.Trim('"'); srcHdz = srcHdz.Trim('"'); srcPath = srcPath.Trim('"'); WaitForExit(prcName); var hdz = new HdzArchive(srcHdz); if (!hdz.HdzItems.ContainsKey(SCRIPT_FILE_NAME)) { throw new ArgumentException("HDZ doesn't contain " + SCRIPT_FILE_NAME); } hdz.ExtractItemsFromHdz(); foreach (var fn in hdz.HdzItems.Keys) { if (fn == SCRIPT_FILE_NAME) { continue; } EnsureFileMoved(srcPath + fn, deployPath + fn); } using (var stream = new StreamReader(srcPath + SCRIPT_FILE_NAME, System.Text.Encoding.Default)) { var empty = false; do { string line = stream.ReadLine(); if (string.IsNullOrEmpty(line)) { empty = true; } else { var command = line.Substring(0, 2); string arg1, arg2 = ""; var idx = line.IndexOf("::"); if (idx > 0) { arg1 = deployPath + line.Substring(3, idx - 3); arg2 = deployPath + line.Substring(idx + 2); } else { arg1 = deployPath + line.Substring(3); } switch (command) { case "mf": EnsureFileMoved(arg1, arg2); break; case "md": EnsureFSOperation(arg1, arg2, "{0} is moved to {1} successfully.", FileOps.Md); break; case "cd": EnsureFSOperation(arg1, null, "{0} is created successfully.", FileOps.Cd); break; case "df": EnsureFSOperation(arg1, null, "{0} is deleted successfully.", FileOps.Df); break; case "dd": EnsureFSOperation(arg1, null, "{0} is deleted successfully.", FileOps.Dd); break; default: throw new Exception(string.Format("Invalid command «{0}» in script file!", command)); } } } while (!empty); } EnsureFSOperation(srcPath + SCRIPT_FILE_NAME, null, "{0} is cleaned up successfully.", FileOps.Df); return(deployBin); }