// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file provides tests for individual messages.  It tests
// NetlinkMessageFactory's ability to create specific message types and it
// tests the various NetlinkMessage types' ability to parse those
// messages.

// This file tests some public interface methods of NetlinkAttribute subclasses.
#include "shill/net/netlink_attribute.h"

#include <string>

#include <gmock/gmock.h>
#include <gtest/gtest.h>

#include "shill/net/byte_string.h"

using testing::Test;

namespace shill {

class NetlinkAttributeTest : public Test {};

TEST_F(NetlinkAttributeTest, StringAttribute) {
  NetlinkStringAttribute attr(0, "string id");

  // An empty ByteString should yield an empty string.
  EXPECT_TRUE(attr.InitFromValue(ByteString()));
  std::string value;
  EXPECT_TRUE(attr.GetStringValue(&value));
  EXPECT_EQ("", value);

  // An un-terminated ByteString should yield a terminated string.
  ByteString unterminated(std::string("hello"), false);
  EXPECT_EQ(5, unterminated.GetLength());
  EXPECT_TRUE(attr.InitFromValue(unterminated));
  EXPECT_TRUE(attr.GetStringValue(&value));
  EXPECT_EQ("hello", value);
  EXPECT_EQ(5, value.size());

  // A terminated ByteString should also work correctly.
  ByteString terminated(std::string("hello"), true);
  EXPECT_EQ(6, terminated.GetLength());
  EXPECT_TRUE(attr.InitFromValue(terminated));
  EXPECT_TRUE(attr.GetStringValue(&value));
  EXPECT_EQ("hello", value);
  EXPECT_EQ(5, value.size());

  // Extra data after termination should be removed.
  terminated.Append(ByteString(3));
  EXPECT_EQ(9, terminated.GetLength());
  EXPECT_TRUE(attr.InitFromValue(terminated));
  EXPECT_TRUE(attr.GetStringValue(&value));
  EXPECT_EQ("hello", value);
  EXPECT_EQ(5, value.size());
}

}  // namespace shill
