LCOV - code coverage report
Current view: top level - tests/serialize - SerializationTests.cpp (source / functions) Hit Total Coverage
Test: ad_map_access Lines: 72 73 98.6 %
Date: 2022-10-04 09:48:07 Functions: 9 9 100.0 %
Branches: 140 536 26.1 %

           Branch data     Line data    Source code
       1                 :            : // ----------------- BEGIN LICENSE BLOCK ---------------------------------
       2                 :            : //
       3                 :            : // Copyright (C) 2018-2021 Intel Corporation
       4                 :            : //
       5                 :            : // SPDX-License-Identifier: MIT
       6                 :            : //
       7                 :            : // ----------------- END LICENSE BLOCK -----------------------------------
       8                 :            : 
       9                 :            : #include <ad/map/serialize/SerializerFileCRC32.hpp>
      10                 :            : #include <gtest/gtest.h>
      11                 :            : 
      12                 :            : #include "../access/FactoryTests.hpp"
      13                 :            : 
      14                 :            : using namespace ::ad::map::serialize;
      15                 :            : 
      16                 :            : struct SerializationTest : public FactoryTest
      17                 :            : {
      18                 :          3 :   SerializationTest()
      19                 :          3 :   {
      20                 :          3 :   }
      21                 :            : 
      22                 :          1 :   bool compareStores(access::Store const &left, access::Store const &right)
      23                 :            :   {
      24   [ +  -  +  -  :          1 :     if (left.isValid() && right.isValid())
                   +  - ]
      25                 :            :     {
      26   [ +  -  +  -  :          3 :       bool equal = (left.getMetaData() == right.getMetaData()) && (left.getPartitions() == right.getPartitions())
          +  -  +  -  +  
          -  +  -  -  -  
                   -  - ]
      27   [ +  -  +  -  :          3 :         && (left.getLanes() == right.getLanes()) && (left.getLandmarks() == right.getLandmarks());
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  +  -  +  -  
          +  -  +  -  +  
          -  -  -  -  -  
             -  -  -  - ]
      28                 :            : 
      29   [ +  -  +  + ]:          4 :       for (auto laneId : left.getLanes())
      30                 :            :       {
      31   [ +  -  +  -  :          3 :         equal = equal && *left.getLanePtr(laneId) == *right.getLanePtr(laneId);
          +  -  +  -  +  
          -  +  -  +  -  
             -  -  -  - ]
      32                 :            :       }
      33   [ +  -  +  + ]:          2 :       for (auto landmarkId : left.getLandmarks())
      34                 :            :       {
      35   [ +  -  +  -  :          1 :         equal = equal && *left.getLandmarkPtr(landmarkId) == *right.getLandmarkPtr(landmarkId);
          +  -  +  -  +  
          -  +  -  +  -  
             -  -  -  - ]
      36                 :            :       }
      37                 :          1 :       return equal;
      38                 :            :     }
      39                 :            :     else
      40                 :            :     {
      41                 :          0 :       return false;
      42                 :            :     }
      43                 :            :   }
      44                 :            : 
      45                 :          1 :   template <typename SerializationFile> void TestSerializationFile(const char *test_file_name)
      46                 :            :   {
      47                 :          1 :     size_t version_major_write = ::ad::map::serialize::SerializerFileCRC32::VERSION_MAJOR;
      48                 :          1 :     size_t version_minor_write = ::ad::map::serialize::SerializerFileCRC32::VERSION_MINOR;
      49                 :            : 
      50         [ +  - ]:          1 :     SerializationFile serializer(true);
      51   [ +  -  +  -  :          1 :     ASSERT_TRUE(serializer.open(test_file_name, version_major_write, version_minor_write));
          -  +  -  -  -  
             -  -  -  -  
                      - ]
      52   [ +  -  -  +  :          1 :     ASSERT_TRUE(mStorePtr->save(serializer));
          -  -  -  -  -  
                -  -  - ]
      53   [ +  -  -  +  :          1 :     ASSERT_TRUE(serializer.close());
          -  -  -  -  -  
                -  -  - ]
      54                 :            : 
      55                 :          1 :     size_t version_major_read = 0xBAD;
      56                 :          1 :     size_t version_minor_read = 0xBAD;
      57                 :            : 
      58         [ +  - ]:          1 :     SerializationFile deserializer(false);
      59   [ +  -  +  -  :          1 :     ASSERT_TRUE(deserializer.open(test_file_name, version_major_read, version_minor_read));
          -  +  -  -  -  
             -  -  -  -  
                      - ]
      60   [ +  -  -  +  :          1 :     ASSERT_EQ(version_major_write, version_major_read);
          -  -  -  -  -  
                      - ]
      61   [ +  -  -  +  :          1 :     ASSERT_EQ(version_minor_read, version_minor_write);
          -  -  -  -  -  
                      - ]
      62   [ +  -  +  -  :          1 :     access::Store::Ptr readStore(new access::Store());
                   +  - ]
      63   [ +  -  -  +  :          1 :     ASSERT_TRUE(readStore->load(deserializer));
          -  -  -  -  -  
                -  -  - ]
      64   [ +  -  -  +  :          1 :     ASSERT_TRUE(deserializer.close());
          -  -  -  -  -  
                -  -  - ]
      65                 :            : 
      66   [ +  -  -  +  :          1 :     ASSERT_TRUE(compareStores(*mStorePtr, *readStore));
          -  -  -  -  -  
                -  -  - ]
      67                 :            :   }
      68                 :            : };
      69                 :            : 
      70                 :          2 : TEST_F(SerializationTest, TestSerializationFileCRC32)
      71                 :            : {
      72                 :          1 :   TestSerializationFile<SerializerFileCRC32>("test_files/test_serialization_crc32.adm");
      73                 :          1 : }
      74                 :            : 
      75                 :          2 : TEST_F(SerializationTest, TestMapVersion)
      76                 :            : {
      77                 :          1 :   size_t version_major = 0;
      78                 :          1 :   size_t version_minor = 0;
      79                 :            :   // read the map
      80         [ +  - ]:          1 :   SerializerFileCRC32 deserializer(false);
      81   [ +  -  +  -  :          4 :   ASSERT_THROW(deserializer.open("test_files/testmap_wrong_version.adm", version_major, version_minor),
          +  -  +  -  -  
          +  -  +  -  -  
          -  -  -  -  -  
                      - ]
      82                 :            :                std::runtime_error);
      83                 :            : 
      84   [ +  -  +  -  :          1 :   access::Store::Ptr store(new access::Store());
                   +  - ]
      85                 :            : 
      86                 :            :   // write the map
      87         [ +  - ]:          1 :   SerializerFileCRC32 serializer(true);
      88   [ +  -  +  - ]:          1 :   serializer.open("test_files/test_map_version_correct.adm", version_major, version_minor);
      89         [ +  - ]:          1 :   store->save(serializer);
      90         [ +  - ]:          1 :   serializer.close();
      91                 :            : 
      92         [ +  - ]:          1 :   SerializerFileCRC32 deserializer_correct(false);
      93   [ +  -  +  -  :          1 :   ASSERT_TRUE(deserializer_correct.open("test_files/test_map_version_correct.adm", version_major, version_minor));
          -  +  -  -  -  
             -  -  -  -  
                      - ]
      94   [ +  -  -  +  :          1 :   ASSERT_TRUE(store->load(deserializer_correct));
          -  -  -  -  -  
                -  -  - ]
      95   [ +  -  -  +  :          1 :   ASSERT_TRUE(deserializer_correct.close());
          -  -  -  -  -  
                -  -  - ]
      96                 :            : 
      97                 :            :   // check the version number
      98   [ +  -  -  +  :          1 :   ASSERT_EQ(::ad::map::serialize::SerializerFileCRC32::VERSION_MAJOR, version_major);
          -  -  -  -  -  
                      - ]
      99   [ +  -  -  +  :          1 :   ASSERT_EQ(::ad::map::serialize::SerializerFileCRC32::VERSION_MINOR, version_minor);
          -  -  -  -  -  
                      - ]
     100                 :            : }
     101                 :            : 
     102                 :          2 : TEST_F(SerializationTest, BadBranch)
     103                 :            : {
     104                 :          1 :   size_t version_major = 0;
     105                 :          1 :   size_t version_minor = 0;
     106   [ +  -  +  -  :          1 :   access::Store::Ptr store0(new access::Store());
                   +  - ]
     107   [ +  -  +  -  :          1 :   access::Store::Ptr store1(new access::Store());
                   +  - ]
     108                 :            : 
     109                 :          1 :   uint16_t temp = 0;
     110         [ +  - ]:          1 :   SerializerFileCRC32 serializerW(true);
     111   [ +  -  -  +  :          1 :   ASSERT_FALSE(serializerW.close());
          -  -  -  -  -  
                -  -  - ]
     112   [ +  -  -  +  :          1 :   ASSERT_FALSE(serializerW.serialize(temp));
          -  -  -  -  -  
                -  -  - ]
     113   [ +  -  +  -  :          1 :   ASSERT_TRUE(serializerW.open("test_files/test_map_version_correct.adm", version_major, version_minor));
          -  +  -  -  -  
             -  -  -  -  
                      - ]
     114   [ +  -  +  -  :          1 :   ASSERT_FALSE(serializerW.open("test_files/test_map_version_correct.adm", version_major, version_minor));
          -  +  -  -  -  
             -  -  -  -  
                      - ]
     115   [ +  -  -  +  :          1 :   ASSERT_FALSE(store0->load(serializerW));
          -  -  -  -  -  
                -  -  - ]
     116   [ +  -  -  +  :          1 :   ASSERT_TRUE(store0->save(serializerW));
          -  -  -  -  -  
                -  -  - ]
     117   [ +  -  -  +  :          1 :   ASSERT_TRUE(serializerW.close());
          -  -  -  -  -  
                -  -  - ]
     118   [ +  -  -  +  :          1 :   ASSERT_FALSE(serializerW.close());
          -  -  -  -  -  
                -  -  - ]
     119                 :            : 
     120         [ +  - ]:          1 :   SerializerFileCRC32 serializerR(false);
     121   [ +  -  -  +  :          1 :   ASSERT_FALSE(serializerR.close());
          -  -  -  -  -  
                -  -  - ]
     122   [ +  -  -  +  :          1 :   ASSERT_FALSE(serializerR.serialize(temp));
          -  -  -  -  -  
                -  -  - ]
     123   [ +  -  +  -  :          1 :   ASSERT_TRUE(serializerR.open("test_files/test_map_version_correct.adm", version_major, version_minor));
          -  +  -  -  -  
             -  -  -  -  
                      - ]
     124   [ +  -  +  -  :          1 :   ASSERT_FALSE(serializerR.open("test_files/test_map_version_correct.adm", version_major, version_minor));
          -  +  -  -  -  
             -  -  -  -  
                      - ]
     125   [ +  -  -  +  :          1 :   ASSERT_FALSE(store1->save(serializerR));
          -  -  -  -  -  
                -  -  - ]
     126   [ +  -  -  +  :          1 :   ASSERT_TRUE(store1->load(serializerR));
          -  -  -  -  -  
                -  -  - ]
     127   [ +  -  -  +  :          1 :   ASSERT_TRUE(serializerR.close());
          -  -  -  -  -  
                -  -  - ]
     128   [ +  -  -  +  :          1 :   ASSERT_FALSE(serializerR.close());
          -  -  -  -  -  
                -  -  - ]
     129                 :            : }

Generated by: LCOV version 1.14