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

#include "components/on_device_translation/features.h"

#include "testing/gtest/include/gtest/gtest.h"

namespace on_device_translation {
namespace {

TEST(IsValidTranslateKitVersionTest, InvalidEmptyVersion) {
  EXPECT_FALSE(IsValidTranslateKitVersion(""));
}

TEST(IsValidTranslateKitVersionTest, InvalidZeroVersion) {
  EXPECT_FALSE(IsValidTranslateKitVersion("0.0.0.0"));
}

TEST(IsValidTranslateKitVersionTest, InvalidWildcardVersion) {
  EXPECT_FALSE(IsValidTranslateKitVersion("*"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2025.*"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2025.1.*"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2025.1.10.*"));
}

TEST(IsValidTranslateKitVersionTest, InvalidTruncatedVersion) {
  EXPECT_FALSE(IsValidTranslateKitVersion("0.0.0"));

  EXPECT_FALSE(IsValidTranslateKitVersion("2024.1.1"));

  EXPECT_FALSE(IsValidTranslateKitVersion("2"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2024"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2025"));

  EXPECT_FALSE(IsValidTranslateKitVersion("2025.1"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2025.1.1"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2025.1.10"));

  EXPECT_FALSE(IsValidTranslateKitVersion("2026"));
}

TEST(IsValidTranslateKitVersionTest, InvalidLowerThanMinimumVersion) {
  EXPECT_FALSE(IsValidTranslateKitVersion("2024.1.1.1"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2024.9.9.9"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2024.10.10.10"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2024.11.11.11"));

  EXPECT_FALSE(IsValidTranslateKitVersion("2025.1.1.1"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2025.1.9.9"));
  EXPECT_FALSE(IsValidTranslateKitVersion("2025.1.9.10"));
}

TEST(IsValidTranslateKitVersionTest, MinimumVersion) {
  EXPECT_TRUE(IsValidTranslateKitVersion("2025.1.10.0"));
}

TEST(IsValidTranslateKitVersionTest, GreaterThanMinimumVersion) {
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.1.1.0"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.1.1.1"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.1.1.10"));

  EXPECT_TRUE(IsValidTranslateKitVersion("3025.1.10.0"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.1.10.1"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.1.10.10"));

  EXPECT_TRUE(IsValidTranslateKitVersion("3025.10.1.0"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.10.1.1"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.10.1.10"));

  EXPECT_TRUE(IsValidTranslateKitVersion("3025.10.10.0"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.10.10.1"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.10.10.10"));

  EXPECT_TRUE(IsValidTranslateKitVersion("3025.12.1.0"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.12.1.1"));
  EXPECT_TRUE(IsValidTranslateKitVersion("3025.12.1.10"));
}

}  // namespace
}  // namespace on_device_translation
