Home | History | Annotate | Download | only in unittests
      1 /*############################################################################
      2   # Copyright 2016-2017 Intel Corporation
      3   #
      4   # Licensed under the Apache License, Version 2.0 (the "License");
      5   # you may not use this file except in compliance with the License.
      6   # You may obtain a copy of the License at
      7   #
      8   #     http://www.apache.org/licenses/LICENSE-2.0
      9   #
     10   # Unless required by applicable law or agreed to in writing, software
     11   # distributed under the License is distributed on an "AS IS" BASIS,
     12   # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13   # See the License for the specific language governing permissions and
     14   # limitations under the License.
     15   ############################################################################*/
     16 
     17 /*!
     18  * \file
     19  * \brief Bignum C++ wrapper unit tests.
     20  */
     21 
     22 #include "epid/common-testhelper/epid_gtest-testhelper.h"
     23 #include "gtest/gtest.h"
     24 
     25 #include "epid/common-testhelper/bignum_wrapper-testhelper.h"
     26 #include "epid/common-testhelper/errors-testhelper.h"
     27 
     28 extern "C" {
     29 #include "epid/common/math/bignum.h"
     30 #include "epid/common/src/memory.h"
     31 }
     32 
     33 namespace {
     34 
     35 // Use Test Fixture for SetUp and TearDown
     36 class BigNumObjTest : public ::testing::Test {
     37  public:
     38   static const BigNumStr str_0;
     39   static const std::vector<unsigned char> vec_0;
     40 };
     41 
     42 const BigNumStr BigNumObjTest::str_0 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     43                                         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     44                                         0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     45 
     46 const std::vector<unsigned char> BigNumObjTest::vec_0 = {0, 0, 0, 0,
     47                                                          0, 0, 0, 0};
     48 
     49 TEST_F(BigNumObjTest, ObjDefaultConstructedIsNotNull) {
     50   BigNumObj bn;
     51   EXPECT_NE(nullptr, (BigNum*)bn);
     52 }
     53 
     54 TEST_F(BigNumObjTest, ObjConstructedWithSizeIsNotNull) {
     55   BigNumObj bn1(1);
     56   EXPECT_NE(nullptr, (BigNum*)bn1);
     57   BigNumObj bn32(32);
     58   EXPECT_NE(nullptr, (BigNum*)bn32);
     59 }
     60 
     61 TEST_F(BigNumObjTest, AssignmentDoesNotCopyPointer) {
     62   BigNumObj bn1;
     63   BigNumObj bn2;
     64   EXPECT_NE((BigNum*)bn1, (BigNum*)bn2);
     65   bn1 = bn2;
     66   EXPECT_NE((BigNum*)bn1, (BigNum*)bn2);
     67 }
     68 
     69 TEST_F(BigNumObjTest, CopyConstructorDoesNotCopyPointer) {
     70   BigNumObj bn1;
     71   BigNumObj bn2(bn1);
     72   EXPECT_NE((BigNum*)bn1, (BigNum*)bn2);
     73 }
     74 
     75 TEST_F(BigNumObjTest, ConstructorDoesNotThrow) {
     76   BigNumObj bn1;
     77   BigNumObj bn2(32);
     78   BigNumObj bn3(32, this->str_0);
     79   BigNumObj bn4(32, this->vec_0);
     80   BigNumObj bn5(this->str_0);
     81   BigNumObj bn6(this->vec_0);
     82 
     83   EXPECT_NE((BigNum*)bn1, (BigNum*)bn2);
     84   EXPECT_NE((BigNum*)bn1, (BigNum*)bn3);
     85   EXPECT_NE((BigNum*)bn1, (BigNum*)bn4);
     86   EXPECT_NE((BigNum*)bn1, (BigNum*)bn5);
     87   EXPECT_NE((BigNum*)bn1, (BigNum*)bn6);
     88 
     89   EXPECT_NE((BigNum*)bn2, (BigNum*)bn1);
     90   EXPECT_NE((BigNum*)bn2, (BigNum*)bn3);
     91   EXPECT_NE((BigNum*)bn2, (BigNum*)bn4);
     92   EXPECT_NE((BigNum*)bn2, (BigNum*)bn5);
     93   EXPECT_NE((BigNum*)bn2, (BigNum*)bn6);
     94 
     95   EXPECT_NE((BigNum*)bn3, (BigNum*)bn1);
     96   EXPECT_NE((BigNum*)bn3, (BigNum*)bn2);
     97   EXPECT_NE((BigNum*)bn3, (BigNum*)bn4);
     98   EXPECT_NE((BigNum*)bn3, (BigNum*)bn5);
     99   EXPECT_NE((BigNum*)bn3, (BigNum*)bn6);
    100 
    101   EXPECT_NE((BigNum*)bn4, (BigNum*)bn1);
    102   EXPECT_NE((BigNum*)bn4, (BigNum*)bn2);
    103   EXPECT_NE((BigNum*)bn4, (BigNum*)bn3);
    104   EXPECT_NE((BigNum*)bn4, (BigNum*)bn5);
    105   EXPECT_NE((BigNum*)bn4, (BigNum*)bn6);
    106 
    107   EXPECT_NE((BigNum*)bn5, (BigNum*)bn1);
    108   EXPECT_NE((BigNum*)bn5, (BigNum*)bn2);
    109   EXPECT_NE((BigNum*)bn5, (BigNum*)bn3);
    110   EXPECT_NE((BigNum*)bn5, (BigNum*)bn4);
    111   EXPECT_NE((BigNum*)bn5, (BigNum*)bn6);
    112 
    113   EXPECT_NE((BigNum*)bn6, (BigNum*)bn1);
    114   EXPECT_NE((BigNum*)bn6, (BigNum*)bn2);
    115   EXPECT_NE((BigNum*)bn6, (BigNum*)bn3);
    116   EXPECT_NE((BigNum*)bn6, (BigNum*)bn4);
    117   EXPECT_NE((BigNum*)bn6, (BigNum*)bn5);
    118 }
    119 
    120 TEST_F(BigNumObjTest, CanCastConstToConstPointer) {
    121   BigNumObj const bn;
    122   BigNum const* bn_ptr = bn;
    123   (void)bn_ptr;
    124 }
    125 
    126 TEST_F(BigNumObjTest, CanGetConstPointerFromConst) {
    127   BigNumObj const bn;
    128   BigNum const* bn_ptr = bn.getc();
    129   (void)bn_ptr;
    130 }
    131 
    132 /*
    133 The following tests are expected to result in
    134 compile time errors (by design)
    135 */
    136 /*
    137 TEST_F(BigNumObjTest, CannotCastConstToNonConstPointer) {
    138   BigNumObj const bn;
    139   BigNum * bn_ptr = bn;
    140   (void) bn_ptr;
    141 }
    142 
    143 TEST_F(BigNumObjTest, CannotGetNonConstPointerFromConst) {
    144   BigNumObj const bn;
    145   BigNum * bn_ptr = bn.get();
    146   (void) bn_ptr;
    147 }
    148 */
    149 
    150 TEST_F(BigNumObjTest, CanCastNonConstToConstPointer) {
    151   BigNumObj bn;
    152   BigNum const* bn_ptr = bn;
    153   (void)bn_ptr;
    154 }
    155 
    156 TEST_F(BigNumObjTest, CanGetConstPointerFromNonConst) {
    157   BigNumObj bn;
    158   BigNum const* bn_ptr = bn.getc();
    159   (void)bn_ptr;
    160 }
    161 
    162 TEST_F(BigNumObjTest, CanCastNonConstToNonConstPointer) {
    163   BigNumObj bn;
    164   BigNum* bn_ptr = bn;
    165   (void)bn_ptr;
    166 }
    167 
    168 TEST_F(BigNumObjTest, CanGetNonConstPointerFromNonConst) {
    169   BigNumObj bn;
    170   BigNum* bn_ptr = bn.get();
    171   (void)bn_ptr;
    172 }
    173 
    174 }  // namespace
    175