Add test1 task - #4
Conversation
yurii-litvinov
left a comment
There was a problem hiding this comment.
Так оно не работает потому, что основной проект в папке MD5, а тесты — в его подпапке, MD5/Tests. Поэтому .NET думает, что тесты — это просто часть исходников основного проекта. Надо было по разным подпапкам разложить. Ужас, забыли как проекты на .NET создавать :)
А ещё Вы, видимо, в панике выложили бинари и прочие результаты сборки.
В целом всё так, но из-за крайней нетехнологичности потеряли много баллов.
| /// <summary> | ||
| /// Class that computes check sum of the directory in multiple threads. | ||
| /// </summary> | ||
| public static class MD5Async |
There was a problem hiding this comment.
Есть асинхронный код и есть параллельный код, и это разные вещи (причём ортогональные, одно другому не мешает). Тут, наверное, имелось в виду MD5Parallel.
| /// <returns>Task, that computes the check sum for directory or file.</returns> | ||
| public static async Task<byte[]> ComputeSum(string path) | ||
| { | ||
| if (Path.HasExtension(path)) |
There was a problem hiding this comment.
Линуксоиды слегка напуганы таким способом отличать файл от директории
| public static async Task<byte[]> ComputeSum(string path) | ||
| { | ||
| if (Path.HasExtension(path)) | ||
| { | ||
| return await MD5Async.ComputeFile(path); | ||
| } | ||
|
|
||
| return await MD5Async.ComputeDirectory(path); | ||
| } |
There was a problem hiding this comment.
| public static async Task<byte[]> ComputeSum(string path) | |
| { | |
| if (Path.HasExtension(path)) | |
| { | |
| return await MD5Async.ComputeFile(path); | |
| } | |
| return await MD5Async.ComputeDirectory(path); | |
| } | |
| public static async Task<byte[]> ComputeSum(string path) | |
| => Path.HasExtension(path) ? | |
| await MD5Async.ComputeFile(path) | |
| : await MD5Async.ComputeDirectory(path); |
| private static async Task<byte[]> ComputeDirectory(string path) | ||
| { | ||
| var files = Directory.GetFiles(path); | ||
| var direcoties = Directory.GetDirectories(path); |
| { | ||
| var hash = MD5.Create(); | ||
| return hash.ComputeHash(File.OpenRead(path)); | ||
| } |
There was a problem hiding this comment.
Вот, например, это тоже вполне могло бы быть асинхронно. Но не параллельно, просто последовательно вызывались бы асинхронные методы
| Console.WriteLine( | ||
| "Check sum = (parallel calculations){0} = (sequential calculations){1}, time for sequential MD5 = {2}, time for parallel MD5 = {3}.", | ||
| Encoding.UTF8.GetString(parallelResult), | ||
| Encoding.UTF8.GetString(sequentialResult), | ||
| sequentialTime, | ||
| parallelTime); |
There was a problem hiding this comment.
Тут явно не хватает отступов при переносе строки, и ещё можно было бы интерполированные строки использовать, не зря же их в язык завезли давно.
| public void TestOneDirectory() | ||
| { | ||
| Assert.That(Encoding.UTF8.GetString(MD5Sequential.ComputeSum("../testFolder/test1")), Is.EqualTo(Encoding.UTF8.GetString(MD5Async.ComputeSum("../testFolder/test1").Result))); | ||
| } |
There was a problem hiding this comment.
Однострочники лучше через => писать
No description provided.