StringTest.cpp 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. //===- unittests/SPIRV/StringTest.cpp ---- SPIR-V String 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. #include "gmock/gmock.h"
  10. #include "clang/SPIRV/String.h"
  11. #include "gtest/gtest.h"
  12. namespace {
  13. using namespace clang::spirv;
  14. using ::testing::ElementsAre;
  15. TEST(String, EncodeEmptyString) {
  16. std::string str = "";
  17. std::vector<uint32_t> words = string::encodeSPIRVString(str);
  18. EXPECT_THAT(words, ElementsAre(0u));
  19. }
  20. TEST(String, EncodeOneCharString) {
  21. std::string str = "m";
  22. std::vector<uint32_t> words = string::encodeSPIRVString(str);
  23. EXPECT_THAT(words, ElementsAre(109u));
  24. }
  25. TEST(String, EncodeTwoCharString) {
  26. std::string str = "ma";
  27. std::vector<uint32_t> words = string::encodeSPIRVString(str);
  28. EXPECT_THAT(words, ElementsAre(24941u));
  29. }
  30. TEST(String, EncodeThreeCharString) {
  31. std::string str = "mai";
  32. std::vector<uint32_t> words = string::encodeSPIRVString(str);
  33. EXPECT_THAT(words, ElementsAre(6906221u));
  34. }
  35. TEST(String, EncodeFourCharString) {
  36. std::string str = "main";
  37. std::vector<uint32_t> words = string::encodeSPIRVString(str);
  38. EXPECT_THAT(words, ElementsAre(1852399981u, 0u));
  39. }
  40. TEST(String, EncodeString) {
  41. // Bin 01110100 01110011 01100101 01010100 = unsigned(1,953,719,636)
  42. // Hex 74 73 65 54
  43. // t s e T
  44. // Bin 01101001 01110010 01110100 01010011 = unsigned(1,769,108,563)
  45. // Hex 69 72 74 53
  46. // i r t S
  47. // Bin 00000000 00000000 01100111 01101110 = unsigned(26,478)
  48. // Hex 0 0 67 6E
  49. // \0 \0 g n
  50. std::string str = "TestString";
  51. std::vector<uint32_t> words = string::encodeSPIRVString(str);
  52. EXPECT_THAT(words, ElementsAre(1953719636, 1769108563, 26478));
  53. }
  54. TEST(String, DecodeString) {
  55. // Bin 01110100 01110011 01100101 01010100 = unsigned(1,953,719,636)
  56. // Hex 74 73 65 54
  57. // t s e T
  58. // Bin 01101001 01110010 01110100 01010011 = unsigned(1,769,108,563)
  59. // Hex 69 72 74 53
  60. // i r t S
  61. // Bin 00000000 00000000 01100111 01101110 = unsigned(26,478)
  62. // Hex 0 0 67 6E
  63. // \0 \0 g n
  64. std::vector<uint32_t> words = {1953719636, 1769108563, 26478};
  65. std::string str = string::decodeSPIRVString(words);
  66. EXPECT_EQ(str, "TestString");
  67. }
  68. TEST(String, EncodeAndDecodeString) {
  69. std::string str = "TestString";
  70. // Convert to vector
  71. std::vector<uint32_t> words = string::encodeSPIRVString(str);
  72. // Convert back to string
  73. std::string result = string::decodeSPIRVString(words);
  74. EXPECT_EQ(str, result);
  75. }
  76. // TODO: Add more ModuleBuilder tests
  77. } // anonymous namespace