選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

58 行
1.3 KiB

  1. #include "pch.h"
  2. #include "CppUnitTest.h"
  3. #include "test.h"
  4. #include <assert.h>
  5. #include <chrono>
  6. #include <ctime>
  7. #include <cstdlib>
  8. using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  9. void GenerateRandomArray(vector<int>& a,int sum)
  10. {
  11. srand(time(0)); // 使用当前时间作为种子
  12. for (int i = 0; i < sum; i++) {
  13. a.push_back(i);
  14. }
  15. }
  16. namespace UnitTest1
  17. {
  18. TEST_CLASS(UnitTest1)
  19. {
  20. public:
  21. TEST_METHOD(TestMethod1)
  22. {
  23. vector<int> arr = { 5,8,4,3,9,1 };
  24. const vector<int> expect = { 1,3,4,5,8,9 };
  25. selectionSort(arr);
  26. for(int i= 0;i < arr.size();i++)
  27. {
  28. Assert::AreEqual(expect.at(i), arr.at(i));
  29. }
  30. }
  31. TEST_METHOD(TestEmptyArr)
  32. {
  33. vector<int> arr = {};
  34. selectionSort(arr);
  35. Assert::IsTrue(true);
  36. }
  37. BEGIN_TEST_METHOD_ATTRIBUTE(TestRunTime)
  38. TEST_METHOD_ATTRIBUTE(L"RUN","TIME")
  39. END_TEST_METHOD_ATTRIBUTE(TestRunTime)
  40. TEST_METHOD(TestRunTime)
  41. {
  42. vector<int> arr;
  43. GenerateRandomArray(arr, 10000); // 生成随机数组
  44. auto start = std::chrono::high_resolution_clock::now();
  45. selectionSort(arr);
  46. auto end = std::chrono::high_resolution_clock::now();
  47. auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
  48. Logger::WriteMessage(("Time: " + std::to_string(duration.count()) + "ms").c_str());
  49. Assert::IsTrue(duration.count() < 10000); // 设定阈值
  50. }
  51. };
  52. }