#include "ethernet.hpp"

#include <string>

#include <gtest/gtest.h>

namespace redfish {
namespace {

TEST(EthernetHostnameValidation, ValidHostnames) {
  EXPECT_TRUE(isHostnameValid("bmc"));
  EXPECT_TRUE(isHostnameValid("host1"));
  EXPECT_TRUE(isHostnameValid("a"));
  EXPECT_TRUE(isHostnameValid("host-name"));
  EXPECT_TRUE(isHostnameValid("1host"));
  EXPECT_TRUE(isHostnameValid(std::string(63, 'a')));
}

TEST(EthernetHostnameValidation, InvalidHostnames) {
  EXPECT_FALSE(isHostnameValid(""));
  EXPECT_FALSE(isHostnameValid("19216811"));
  EXPECT_FALSE(isHostnameValid("-host"));
  EXPECT_FALSE(isHostnameValid("host-"));
  EXPECT_FALSE(isHostnameValid("host.name"));
  EXPECT_FALSE(isHostnameValid(std::string(64, 'a')));
}

TEST(EthernetDomainnameValidation, ValidDomainnames) {
  EXPECT_TRUE(isDomainnameValid("example.com"));
  EXPECT_TRUE(isDomainnameValid("sub.example.com"));
  EXPECT_TRUE(isDomainnameValid("a.bc"));
}

TEST(EthernetDomainnameValidation, InvalidDomainnames) {
  EXPECT_FALSE(isDomainnameValid(""));
  EXPECT_FALSE(isDomainnameValid("a"));
  EXPECT_FALSE(isDomainnameValid("a.b"));
  EXPECT_FALSE(isDomainnameValid("-example.com"));
  EXPECT_FALSE(isDomainnameValid("example-.com"));
  EXPECT_FALSE(isDomainnameValid("example.c"));
  EXPECT_FALSE(isDomainnameValid("example.com."));
}

}  // namespace
}  // namespace redfish
