MQRDecoderTest.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*
  2. * Copyright 2017 Huy Cuong Nguyen
  3. * Copyright 2008 ZXing authors
  4. */
  5. // SPDX-License-Identifier: Apache-2.0
  6. #include "qrcode/QRDecoder.h"
  7. #include "BitMatrix.h"
  8. #include "BitMatrixIO.h"
  9. #include "DecoderResult.h"
  10. #include "gtest/gtest.h"
  11. using namespace ZXing;
  12. using namespace ZXing::QRCode;
  13. TEST(MQRDecoderTest, MQRCodeM3L)
  14. {
  15. const auto bitMatrix = ParseBitMatrix("XXXXXXX X X X X\n"
  16. "X X X X \n"
  17. "X XXX X XXXXXXX\n"
  18. "X XXX X X X XX\n"
  19. "X XXX X X XX\n"
  20. "X X X X X X\n"
  21. "XXXXXXX X XX \n"
  22. " X X X\n"
  23. "XXXXXX X X X\n"
  24. " X XX XXX\n"
  25. "XXX XX XXXX XXX\n"
  26. " X X XXX X \n"
  27. "X XXXXX XXX X X\n"
  28. " X X X XXX \n"
  29. "XXX XX X X XXXX\n",
  30. 88, false);
  31. const auto result = Decode(bitMatrix);
  32. EXPECT_TRUE(result.isValid());
  33. }
  34. TEST(MQRDecoderTest, MQRCodeM3M)
  35. {
  36. const auto bitMatrix = ParseBitMatrix("XXXXXXX X X X X\n"
  37. "X X XX\n"
  38. "X XXX X X XX XX\n"
  39. "X XXX X X X \n"
  40. "X XXX X XX XXXX\n"
  41. "X X XX \n"
  42. "XXXXXXX X XXXX\n"
  43. " X XXX \n"
  44. "X XX XX X X\n"
  45. " X X XX \n"
  46. "XX XX XXXXXXX\n"
  47. " X X X\n"
  48. "XX X X X \n"
  49. " X X X \n"
  50. "X X XXXX XXX\n",
  51. 88, false);
  52. const auto result = Decode(bitMatrix);
  53. EXPECT_TRUE(result.isValid());
  54. }
  55. TEST(MQRDecoderTest, MQRCodeM1)
  56. {
  57. const auto bitMatrix = ParseBitMatrix("XXXXXXX X X\n"
  58. "X X \n"
  59. "X XXX X XXX\n"
  60. "X XXX X XX\n"
  61. "X XXX X X\n"
  62. "X X XX \n"
  63. "XXXXXXX X \n"
  64. " X \n"
  65. "XX X \n"
  66. " X XXXXX X\n"
  67. "X XXXXXX X\n",
  68. 88, false);
  69. const auto result = Decode(bitMatrix);
  70. EXPECT_TRUE(result.isValid());
  71. EXPECT_EQ(L"123", result.text());
  72. }
  73. TEST(MQRDecoderTest, MQRCodeM1Error4Bits)
  74. {
  75. const auto bitMatrix = ParseBitMatrix("XXXXXXX X X\n"
  76. "X X XX\n"
  77. "X XXX X X \n"
  78. "X XXX X XX\n"
  79. "X XXX X X\n"
  80. "X X XX \n"
  81. "XXXXXXX X \n"
  82. " X \n"
  83. "XX X \n"
  84. " X XXXXXX \n"
  85. "X XXXXXXX \n",
  86. 88, false);
  87. const auto result = Decode(bitMatrix);
  88. EXPECT_EQ(Error::Checksum, result.error());
  89. EXPECT_EQ(result.text(), L"6350");
  90. }
  91. TEST(MQRDecoderTest, MQRCodeM4)
  92. {
  93. const auto bitMatrix = ParseBitMatrix("XXXXXXX X X X X X\n"
  94. "X X XX X XX\n"
  95. "X XXX X X X XX\n"
  96. "X XXX X XX XX XX\n"
  97. "X XXX X X XXXXX\n"
  98. "X X XX X\n"
  99. "XXXXXXX XX X XX\n"
  100. " X XX XX\n"
  101. "X X XXX X XXX\n"
  102. " XX X XX XX X \n"
  103. "XX XXXX X XX XX\n"
  104. " XX XX X XX XX\n"
  105. "XXX XXX XXX XX XX\n"
  106. " X X X XX X\n"
  107. "X X XX XXXXX \n"
  108. " X X X X X \n"
  109. "X XXXXXXX X X X\n",
  110. 88, false);
  111. const auto result = Decode(bitMatrix);
  112. EXPECT_TRUE(result.isValid());
  113. }