// Copyright 2015 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.

#include "shill/net/nl80211_attribute.h"

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

#include "shill/net/byte_string.h"

using testing::Test;

namespace shill {

class Nl80211AttributeTest : public Test {};

TEST_F(Nl80211AttributeTest, RegInitiatorDecode) {
  Nl80211AttributeRegInitiator empty_attribute;
  EXPECT_FALSE(empty_attribute.InitFromValue(ByteString()));

  const uint8_t kU8Value = 123;
  ByteString u8_value(&kU8Value, 1);
  Nl80211AttributeRegInitiator u8_attribute;
  EXPECT_TRUE(u8_attribute.InitFromValue(u8_value));
  uint32_t value_from_u8_attribute;
  EXPECT_TRUE(u8_attribute.GetU32Value(&value_from_u8_attribute));
  EXPECT_EQ(kU8Value, value_from_u8_attribute);

  const uint32_t kU32Value = 123456790U;
  ByteString u32_value = ByteString::CreateFromCPUUInt32(kU32Value);
  Nl80211AttributeRegInitiator u32_attribute;
  EXPECT_TRUE(u32_attribute.InitFromValue(u32_value));
  uint32_t value_from_u32_attribute;
  EXPECT_TRUE(u32_attribute.GetU32Value(&value_from_u32_attribute));
  EXPECT_EQ(kU32Value, value_from_u32_attribute);
}

}  // namespace shill
