#include "str_to_fp_test.h"

namespace LIBC_NAMESPACE {

using LlvmLibcStrToFltTest = LlvmLibcStrToFloatTest<float>;

TEST_F(LlvmLibcStrToFltTest, ClingerFastPathFloat32Simple) {
  clinger_fast_path_test(123, 0, 0x760000, 133);
  clinger_fast_path_test(1234567, 1, 0x3c6146, 150);
  clinger_fast_path_test(12345, -5, 0x7cd35b, 123);
}

TEST_F(LlvmLibcStrToFltTest, ClingerFastPathFloat32ExtendedExp) {
  clinger_fast_path_test(1, 15, 0x635fa9, 176);
  clinger_fast_path_test(1, 17, 0x31a2bc, 183);
  clinger_fast_path_fails_test(10, 17);
  clinger_fast_path_fails_test(1, 50);
}

TEST_F(LlvmLibcStrToFltTest, ClingerFastPathFloat32NegativeExp) {
  clinger_fast_path_test(1, -5, 0x27c5ac, 110);
  clinger_fast_path_test(1, -10, 0x5be6ff, 93);
  clinger_fast_path_fails_test(1, -15);
}

// Check the fallback states for the algorithm:
TEST_F(LlvmLibcStrToFltTest, EiselLemireFallbackStates) {
  // This number can't be evaluated by Eisel-Lemire since it's exactly 1024 away
  // from both of its closest floating point approximations
  // (12345678901234548736 and 12345678901234550784)
  ASSERT_FALSE(internal::eisel_lemire<float>({20040229, 0}).has_value());
}

TEST_F(LlvmLibcStrToFltTest, SimpleDecimalConversion32SpecificFailures) {
  simple_decimal_conversion_test(
      "1.4012984643248170709237295832899161312802619418765e-45", 0x1, 0,
      ERANGE);
  simple_decimal_conversion_test(
      "7."
      "006492321624085354618647916449580656401309709382578858785341419448955413"
      "42930300743319094181060791015625e-46",
      0x0, 0, ERANGE);
}

TEST(LlvmLibcStrToFltTest, SimpleDecimalConversionExtraTypes) {
  uint32_t float_output_mantissa = 0;
  uint32_t output_exp2 = 0;

  LIBC_NAMESPACE::libc_errno = 0;
  auto float_result =
      internal::simple_decimal_conversion<float>("123456789012345678900");
  float_output_mantissa = float_result.num.mantissa;
  output_exp2 = float_result.num.exponent;
  EXPECT_EQ(float_output_mantissa, uint32_t(0xd629d4));
  EXPECT_EQ(output_exp2, uint32_t(193));
  EXPECT_EQ(float_result.error, 0);
}

} // namespace LIBC_NAMESPACE
