// RUN: %check_clang_tidy %s abseil-duration-subtraction %t -- -- -I %S/Inputs

#include "absl/time/time.h"

void f() {
  double x;
  absl::Duration d, d1, d2;

  x = absl::ToDoubleSeconds(d) - 1.0;
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleSeconds(d - absl::Seconds(1))
  x = absl::ToDoubleSeconds(d) - absl::ToDoubleSeconds(d1);
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleSeconds(d - d1);
  x = absl::ToDoubleSeconds(d) - 6.5 - 8.0;
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleSeconds(d - absl::Seconds(6.5)) - 8.0;
  x = absl::ToDoubleHours(d) - 1.0;
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleHours(d - absl::Hours(1))
  x = absl::ToDoubleMinutes(d) - 1;
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleMinutes(d - absl::Minutes(1))
  x = absl::ToDoubleMilliseconds(d) - 9;
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleMilliseconds(d - absl::Milliseconds(9))
  x = absl::ToDoubleMicroseconds(d) - 9;
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleMicroseconds(d - absl::Microseconds(9))
  x = absl::ToDoubleNanoseconds(d) - 42;
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleNanoseconds(d - absl::Nanoseconds(42))

  // We can rewrite the argument of the duration conversion
#define THIRTY absl::Seconds(30)
  x = absl::ToDoubleSeconds(THIRTY) - 1.0;
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleSeconds(THIRTY - absl::Seconds(1))
#undef THIRTY

  // Some other contexts
  if (absl::ToDoubleSeconds(d) - 1.0 > 10) {}
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: if (absl::ToDoubleSeconds(d - absl::Seconds(1)) > 10) {}

  // A nested occurance
  x = absl::ToDoubleSeconds(d) - absl::ToDoubleSeconds(absl::Seconds(5));
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleSeconds(d - absl::Seconds(5))
  x = absl::ToDoubleSeconds(d) - absl::ToDoubleSeconds(absl::Seconds(absl::ToDoubleSeconds(d1)));
  // CHECK-MESSAGES: [[@LINE-1]]:7: warning: perform subtraction in the duration domain [abseil-duration-subtraction]
  // CHECK-FIXES: absl::ToDoubleSeconds(d - absl::Seconds(absl::ToDoubleSeconds(d1)))

  // These should not match
  x = 5 - 6;
  x = 4 - absl::ToDoubleSeconds(d) - 6.5 - 8.0;
  x = absl::ToDoubleSeconds(d) + 1.0;
  x = absl::ToDoubleSeconds(d) * 1.0;
  x = absl::ToDoubleSeconds(d) / 1.0;

#define MINUS_FIVE(z) absl::ToDoubleSeconds(z) - 5
  x = MINUS_FIVE(d);
#undef MINUS_FIVE
}
