// Copyright 2018 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 "chrome/browser/android/color_helpers.h"

#include <stdint.h>

#include <limits>

#include "base/optional.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkColor.h"

namespace {

// Intentionally avoids reusing the constant defined in color_helpers.h to catch
// mistakes that accidentally change the value.
constexpr int64_t kAndroidInvalidColor =
    static_cast<int64_t>(std::numeric_limits<int32_t>::max()) + 1;

// https://developer.android.com/reference/android/graphics/Color.html defines
// the various color constants.
constexpr int kAndroidBlack = -16777216;
constexpr int kAndroidWhite = -1;
constexpr int kAndroidRed = -65536;
constexpr int kAndroidDkgray = -12303292;
constexpr int kAndroidTransparent = 0;

}  // namespace

TEST(ColorHelpersTest, Null) {
  EXPECT_EQ(kAndroidInvalidColor, OptionalSkColorToJavaColor(base::nullopt));
  EXPECT_FALSE(JavaColorToOptionalSkColor(kAndroidInvalidColor).has_value());
}

TEST(ColorHelpersTest, Roundtrip) {
  EXPECT_EQ(kAndroidBlack, OptionalSkColorToJavaColor(SK_ColorBLACK));
  EXPECT_EQ(SK_ColorBLACK, JavaColorToOptionalSkColor(kAndroidBlack));

  EXPECT_EQ(kAndroidWhite, OptionalSkColorToJavaColor(SK_ColorWHITE));
  EXPECT_EQ(SK_ColorWHITE, JavaColorToOptionalSkColor(kAndroidWhite));

  EXPECT_EQ(kAndroidRed, OptionalSkColorToJavaColor(SK_ColorRED));
  EXPECT_EQ(SK_ColorRED, JavaColorToOptionalSkColor(kAndroidRed));

  EXPECT_EQ(kAndroidDkgray, OptionalSkColorToJavaColor(SK_ColorDKGRAY));
  EXPECT_EQ(SK_ColorDKGRAY, JavaColorToOptionalSkColor(kAndroidDkgray));

  EXPECT_EQ(kAndroidTransparent,
            OptionalSkColorToJavaColor(SK_ColorTRANSPARENT));
  EXPECT_EQ(SK_ColorTRANSPARENT,
            JavaColorToOptionalSkColor(kAndroidTransparent));
}
