// SPDX-License-Identifier: GPL-2.0 OR LGPL-2.1 OR CDDL-1.0
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or https://opensource.org/licenses/CDDL-1.0.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/* Copyright (c) 2024-2026 Chilledheart  */

#include <gtest/gtest-message.h>
#include <gtest/gtest.h>

#include <gmock/gmock.h>
#include "net/padding.hpp"

#include "test_util.hpp"

using namespace net;

TEST(NetworkTest, AddAndRemovePadding) {
  uint8_t buffer[256];
  for (int i = 0; i < (int)sizeof(buffer); ++i) {
    buffer[i] = i & 255;
  }

  auto origin_buf = gurl_base::MakeRefCounted<WrappedIOBuffer>(reinterpret_cast<char*>(buffer), sizeof(buffer));
  auto send_buf = AddPadding(origin_buf.get());

  asio::error_code ec;
  auto recv_buf = RemovePadding(send_buf.get(), ec);
  EXPECT_FALSE(ec) << ec;
  EXPECT_EQ(send_buf->size(), 0);
  EXPECT_EQ((int)sizeof(buffer), recv_buf->size());

  ASSERT_EQ(::testing::Bytes(origin_buf->span()), ::testing::Bytes(recv_buf->span()));
}
