blob: 129c907e1fa17a81b93f19e8caf35b5226389092 [file] [log] [blame]
/*############################################################################
# Copyright 2016-2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
############################################################################*/
/*!
* \file
* \brief OctStr2Bnu unit tests.
*
* OctStr2Bnu is an internal function used in the IPP implementation of the
* math libraries. These tests can be omitted if you do not use this function.
*/
#include "epid/common-testhelper/epid_gtest-testhelper.h"
#include "epid/common/stdtypes.h"
#include "gtest/gtest.h"
extern "C" {
#include "epid/common/math/src/bignum-internal.h"
}
namespace {
const uint8_t bnstr1[] = {0x01, 0x02, 0x03, 0x04};
const uint8_t bnstr2[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
uint32_t bnustr1[sizeof(bnstr1) / sizeof(uint32_t)] = {0x01020304};
uint32_t bnustr2[sizeof(bnstr2) / sizeof(uint32_t)] = {0x05060708, 0x01020304};
TEST(OctStr2Bnu, octstr2bnuFailsGivenNullBnu) {
int len = OctStr2Bnu(nullptr, bnstr1, sizeof(bnstr1) / sizeof(uint8_t));
EXPECT_EQ(-1, len);
}
TEST(OctStr2Bnu, octstr2bnuFailsGivenNullOctstr) {
uint32_t bnustr_res[sizeof(bnstr1) / sizeof(uint32_t)] = {0};
int len = OctStr2Bnu(bnustr_res, nullptr, sizeof(bnstr1) / sizeof(uint8_t));
EXPECT_EQ(-1, len);
}
TEST(OctStr2Bnu, octstr2bnuFailsGivenInvalidOctsrtLen) {
uint32_t bnustr_res[sizeof(bnstr1) / sizeof(uint32_t)] = {0};
int len = OctStr2Bnu(bnustr_res, bnstr1, -1);
EXPECT_EQ(-1, len);
len = OctStr2Bnu(bnustr_res, bnstr1, 0);
EXPECT_EQ(-1, len);
len = OctStr2Bnu(bnustr_res, bnstr1, 3);
EXPECT_EQ(-1, len);
len = OctStr2Bnu(bnustr_res, bnstr1, 5);
EXPECT_EQ(-1, len);
}
TEST(OctStr2Bnu, octstr2bnuWorksGivenOctstr1) {
uint32_t bnustr_res[sizeof(bnstr1) / sizeof(uint32_t)] = {0};
int len = OctStr2Bnu(bnustr_res, bnstr1, sizeof(bnstr1) / sizeof(uint8_t));
EXPECT_EQ(1, len);
EXPECT_EQ(0,
memcmp(bnustr1, bnustr_res, sizeof(bnustr_res) / sizeof(uint32_t)))
<< "OctStr2Bnu: bnu string result does not match with predefined value\n";
}
TEST(OctStr2Bnu, octstr2bnuWorksGivenOctstr2) {
uint32_t bnustr_res[sizeof(bnstr2) / sizeof(uint32_t)] = {0};
int len = OctStr2Bnu(bnustr_res, bnstr2, sizeof(bnstr2) / sizeof(uint8_t));
EXPECT_EQ(2, len);
EXPECT_EQ(0,
memcmp(bnustr2, bnustr_res, sizeof(bnustr_res) / sizeof(uint32_t)))
<< "OctStr2Bnu: bnu string result does not match with predefined value\n";
}
} // namespace