// Copyright (c) 2012 The Chromium 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 "rlz/lib/lib_values.h"

#include "base/logging.h"
#include "rlz/lib/assert.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"

TEST(LibValuesUnittest, GetAccessPointFromName) {
  rlz_lib::SetExpectedAssertion("GetAccessPointFromName: point is NULL");
  EXPECT_FALSE(rlz_lib::GetAccessPointFromName("", NULL));
  rlz_lib::SetExpectedAssertion("");

  rlz_lib::AccessPoint point;
  EXPECT_FALSE(rlz_lib::GetAccessPointFromName(NULL, &point));
  EXPECT_EQ(rlz_lib::NO_ACCESS_POINT, point);

  EXPECT_TRUE(rlz_lib::GetAccessPointFromName("", &point));
  EXPECT_EQ(rlz_lib::NO_ACCESS_POINT, point);

  EXPECT_FALSE(rlz_lib::GetAccessPointFromName("i1", &point));
  EXPECT_EQ(rlz_lib::NO_ACCESS_POINT, point);

  EXPECT_TRUE(rlz_lib::GetAccessPointFromName("I7", &point));
  EXPECT_EQ(rlz_lib::IE_DEFAULT_SEARCH, point);

  EXPECT_TRUE(rlz_lib::GetAccessPointFromName("T4", &point));
  EXPECT_EQ(rlz_lib::IETB_SEARCH_BOX, point);

  EXPECT_FALSE(rlz_lib::GetAccessPointFromName("T4 ", &point));
  EXPECT_EQ(rlz_lib::NO_ACCESS_POINT, point);
}


TEST(LibValuesUnittest, GetEventFromName) {
  rlz_lib::SetExpectedAssertion("GetEventFromName: event is NULL");
  EXPECT_FALSE(rlz_lib::GetEventFromName("", NULL));
  rlz_lib::SetExpectedAssertion("");

  rlz_lib::Event event;
  EXPECT_FALSE(rlz_lib::GetEventFromName(NULL, &event));
  EXPECT_EQ(rlz_lib::INVALID_EVENT, event);

  EXPECT_TRUE(rlz_lib::GetEventFromName("", &event));
  EXPECT_EQ(rlz_lib::INVALID_EVENT, event);

  EXPECT_FALSE(rlz_lib::GetEventFromName("i1", &event));
  EXPECT_EQ(rlz_lib::INVALID_EVENT, event);

  EXPECT_TRUE(rlz_lib::GetEventFromName("I", &event));
  EXPECT_EQ(rlz_lib::INSTALL, event);

  EXPECT_TRUE(rlz_lib::GetEventFromName("F", &event));
  EXPECT_EQ(rlz_lib::FIRST_SEARCH, event);

  EXPECT_FALSE(rlz_lib::GetEventFromName("F ", &event));
  EXPECT_EQ(rlz_lib::INVALID_EVENT, event);
}