MD5Test.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //===- llvm/unittest/Support/MD5Test.cpp - MD5 tests ----------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // This file implements unit tests for the MD5 functions.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. #include "llvm/ADT/ArrayRef.h"
  14. #include "llvm/ADT/SmallString.h"
  15. #include "llvm/Support/MD5.h"
  16. #include "gtest/gtest.h"
  17. using namespace llvm;
  18. namespace {
  19. /// \brief Tests an arbitrary set of bytes passed as \p Input.
  20. void TestMD5Sum(ArrayRef<uint8_t> Input, StringRef Final) {
  21. MD5 Hash;
  22. Hash.update(Input);
  23. MD5::MD5Result MD5Res;
  24. Hash.final(MD5Res);
  25. SmallString<32> Res;
  26. MD5::stringifyResult(MD5Res, Res);
  27. EXPECT_EQ(Res, Final);
  28. }
  29. TEST(MD5Test, MD5) {
  30. TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"", (size_t) 0),
  31. "d41d8cd98f00b204e9800998ecf8427e");
  32. TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"a", (size_t) 1),
  33. "0cc175b9c0f1b6a831c399e269772661");
  34. TestMD5Sum(ArrayRef<uint8_t>(
  35. (const uint8_t *)"abcdefghijklmnopqrstuvwxyz",
  36. (size_t) 26),
  37. "c3fcd3d76192e4007dfb496cca67e13b");
  38. TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"\0", (size_t) 1),
  39. "93b885adfe0da089cdf634904fd59f71");
  40. TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"a\0", (size_t) 2),
  41. "4144e195f46de78a3623da7364d04f11");
  42. TestMD5Sum(ArrayRef<uint8_t>(
  43. (const uint8_t *)"abcdefghijklmnopqrstuvwxyz\0",
  44. (size_t) 27),
  45. "81948d1f1554f58cd1a56ebb01f808cb");
  46. }
  47. }