blob: 6b65fa8219ed33d2f4751c351046344f60d18098 [file] [log] [blame]
// Copyright 2020 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "fpdfsdk/cpdfsdk_helpers.h"
#include "testing/gtest/include/gtest/gtest.h"
TEST(CPDFSDK_HelpersTest, NulTerminateMaybeCopyAndReturnLength) {
{
const ByteString to_be_copied("toBeCopied");
constexpr size_t kExpectedToBeCopiedLen = 10;
ASSERT_EQ(kExpectedToBeCopiedLen, to_be_copied.GetLength());
EXPECT_EQ(kExpectedToBeCopiedLen + 1,
NulTerminateMaybeCopyAndReturnLength(to_be_copied, nullptr, 0));
// Buffer should not change if declared length is too short.
char buf[kExpectedToBeCopiedLen + 1];
memset(buf, 0x42, kExpectedToBeCopiedLen + 1);
ASSERT_EQ(kExpectedToBeCopiedLen + 1,
NulTerminateMaybeCopyAndReturnLength(to_be_copied, buf,
kExpectedToBeCopiedLen));
for (char c : buf)
EXPECT_EQ(0x42, c);
// Buffer should copy over if long enough.
ASSERT_EQ(kExpectedToBeCopiedLen + 1,
NulTerminateMaybeCopyAndReturnLength(to_be_copied, buf,
kExpectedToBeCopiedLen + 1));
EXPECT_EQ(to_be_copied, ByteString(buf));
}
{
// Empty ByteString should still copy NUL terminator.
const ByteString empty;
char buf[1];
ASSERT_EQ(1u, NulTerminateMaybeCopyAndReturnLength(empty, buf, 1));
EXPECT_EQ(empty, ByteString(buf));
}
}