12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #include <iostream>
- #include <string.h>
- #include <gtest/gtest.h>
- #include <ScHex.h>
- #include <ScReader.h>
- #include <ScBasicCommand.h>
-
- #define TEST_Hex(FUNCTION) do { \
- FUNCTION("", "", 0); \
- FUNCTION("42", "\x42", 1); \
- FUNCTION("42 00 FF AA 24", "\x42\x00\xff\xaa\x24", 5); \
- FUNCTION("00 01 02 03 04 05 06 FF", "\x00\x01\x02\x03\x04\x05\x06\xff", 8); \
- } while (0)
-
- #define TEST_byteArrayToString(STR, DATA, SIZE) \
- ASSERT_EQ(STR, ScHex::byteArrayToString(std::string((char*)memcpy(new BYTE[SIZE], DATA, SIZE), SIZE)))
-
- TEST(Hex, ByteArrayToString)
- {
- TEST_Hex(TEST_byteArrayToString);
- }
-
- #define TEST_stringToByteArray(STR, DATA, SIZE) do { \
- auto bytes = ScHex::stringToByteArray(STR); \
- ASSERT_EQ(SIZE, bytes.size()); \
- ASSERT_EQ(0, memcmp(bytes.data(), DATA, SIZE)); \
- } while (0)
-
- TEST(Hex, StringToByteArray)
- {
- TEST_Hex(TEST_stringToByteArray);
- }
-
- TEST(Reader, Test1)
- {
- std::cout << "Ensure that at lest 1 reader is connected";
- getchar();
- ASSERT_TRUE(ScReader::establishContext());
- auto readers = ScReader::getReaders();
- ASSERT_GE(readers.size(), 1);
- for (auto reader : readers)
- {
- std::cout << reader->getName() << std::endl;
- }
- auto reader = readers[0];
- ASSERT_TRUE(reader->connect());
- std::cout << "ATR: " << ScHex::byteArrayToString(reader->getAtr())
- << " Result: " << reader->getLastResultString() << std::endl;
- auto res = reader->transmit(ScBasicCommand("94 A4 00 00 02 20 00 00"));
- ASSERT_NE(nullptr, res->getData().data());
- auto resp = ScHex::byteArrayToString(res->getData());
- std::cout << "Response (" << res->getData().size() << "): " << resp << std::endl;
- ASSERT_TRUE(reader->disconnect());
- ASSERT_TRUE(ScReader::freeContext());
- }
-
- int main(int argc, char* argv[])
- {
- ::testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-
- /*std::cout << ScReader::establishContext() << std::endl;
- auto readers = ScReader::getReaders();
- for (auto reader : readers)
- {
- std::cout << reader->getName() << " ";
- std::cout << reader->connect() << " ";
- std::cout << reader->disconnect();
- std::cout << std::endl;
- }
- std::cout << ScReader::freeContext() << std::endl;
- return 0;*/
- }
|