Browse Source

Update unittests for repeated fields

- Implement unittests for bytes and floats
- Add .proto files to project
Alexey Edelev 6 years ago
parent
commit
ae9256e145
3 changed files with 55 additions and 3 deletions
  1. 7 2
      tests/CMakeLists.txt
  2. 8 0
      tests/proto/simpletest.proto
  3. 40 1
      tests/serializationtest.cpp

+ 7 - 2
tests/CMakeLists.txt

@@ -24,7 +24,7 @@ file(GLOB GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/*.cpp)
 
 #Manual moc_ files generation for qt
 list(FILTER GENERATED_SOURCES EXCLUDE REGEX "moc_.*cpp")
-QT5_WRAP_CPP(MOC_SRCS ${GENERATED_HEADERS})
+QT5_WRAP_CPP(MOC_SOURCES ${GENERATED_HEADERS})
 
 if (WIN32)
     #Set  path to GTest build libraries
@@ -38,8 +38,13 @@ elseif (UNIX)
 endif()
 
 file(GLOB HEADERS ${TESTS_OUT_DIR})
+file(GLOB SOURCES main.cpp
+    simpletest.cpp
+    serializationtest.cpp)
 
-add_executable(${testtarget} "main.cpp" "simpletest.cpp" "serializationtest.cpp" ${MOC_SRCS} ${GENERATED_SOURCES} ${GENERATED_HEADERS})
+file(GLOB PROTOS proto/*.proto)
+
+add_executable(${testtarget} ${SOURCES} ${MOC_SOURCES} ${GENERATED_SOURCES} ${PROTOS})
 if (WIN32)
     target_link_libraries(${testtarget} "${GTEST_BOTH_LIBRARIES}/gmock_main.lib" "${GTEST_BOTH_LIBRARIES}/gmock.lib"  Qt5::Core)
 elseif (UNIX)

+ 8 - 0
tests/proto/simpletest.proto

@@ -39,6 +39,14 @@ message RepeatedDoubleMessage {
     repeated double testRepeatedDouble = 1;
 }
 
+message RepeatedBytesMessage {
+    repeated bytes testRepeatedBytes = 1;
+}
+
+message RepeatedFloatMessage {
+    repeated float testRepeatedFloat = 1;
+}
+
 enum TestEnum {
     TEST_ENUM_VALUE0 = 0;
     TEST_ENUM_VALUE1 = 1;

+ 40 - 1
tests/serializationtest.cpp

@@ -33,6 +33,8 @@
 #include "repeatedintmessage.h"
 #include "repeatedstringmessage.h"
 #include "repeateddoublemessage.h"
+#include "repeatedbytesmessage.h"
+#include "repeatedfloatmessage.h"
 
 using namespace qtprotobuf::tests;
 
@@ -364,7 +366,7 @@ TEST_F(SerializationTest, RepeatedStringMessage)
     ASSERT_TRUE(result.isEmpty());
 }
 
-TEST_F(SerializationTest, RepeatedDoubleMessage)
+TEST_F(SerializationTest, RepeatedDoubleMessageTest)
 {
     RepeatedDoubleMessage test;
     test.setTestRepeatedDouble({QVariant::fromValue<double>(0.1), QVariant::fromValue<double>(0.2),
@@ -378,3 +380,40 @@ TEST_F(SerializationTest, RepeatedDoubleMessage)
     result = test.serialize();
     ASSERT_TRUE(result.isEmpty());
 }
+
+TEST_F(SerializationTest, RepeatedBytesMessageTest)
+{
+    RepeatedBytesMessage test;
+    test.setTestRepeatedBytes({QByteArray::fromHex("010203040506"),
+                               QByteArray::fromHex("ffffffff"),
+                               QByteArray::fromHex("eaeaeaeaea"),
+                               QByteArray::fromHex("010203040506")});
+    QByteArray result = test.serialize();
+    ASSERT_TRUE(result == QByteArray::fromHex("0a060102030405060a04ffffffff0a05eaeaeaeaea0a06010203040506"));
+
+    test.setTestRepeatedBytes(QVariantList());
+    result = test.serialize();
+    ASSERT_TRUE(result.isEmpty());
+
+    test.setTestRepeatedBytes({QByteArray::fromHex("010203040506"),
+                               QByteArray::fromHex(""),
+                               QByteArray::fromHex("eaeaeaeaea"),
+                               QByteArray::fromHex("010203040506")});
+    result = test.serialize();
+//    qDebug() << "result " << result.toHex();
+    ASSERT_TRUE(result == QByteArray::fromHex("0a060102030405060a000a05eaeaeaeaea0a06010203040506"));
+}
+
+TEST_F(SerializationTest, RepeatedFloatMessageTest)
+{
+    RepeatedFloatMessage test;
+    test.setTestRepeatedFloat({QVariant::fromValue<float>(0.4f), QVariant::fromValue<float>(1.2f),
+                                QVariant::fromValue<float>(0.5f), QVariant::fromValue<float>(1.4f),
+                                QVariant::fromValue<float>(0.6f)});
+    QByteArray result = test.serialize();
+    ASSERT_TRUE(result == QByteArray::fromHex("0a14cdcccc3e9a99993f0000003f3333b33f9a99193f"));
+
+    test.setTestRepeatedFloat(QVariantList());
+    result = test.serialize();
+    ASSERT_TRUE(result.isEmpty());
+}