From 4c41bf2c2d1ada5054eddbb18bdfa2819fe8f6b7 Mon Sep 17 00:00:00 2001 From: Joe Thel Date: Tue, 15 Apr 2025 10:26:36 -0700 Subject: [PATCH] Fix miscalculation of quarter numbers --- src/DateFormat.elm | 2 +- tests/Fuzzers.elm | 2 +- tests/Tests.elm | 29 +++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/DateFormat.elm b/src/DateFormat.elm index bcd63e9..b36895e 100644 --- a/src/DateFormat.elm +++ b/src/DateFormat.elm @@ -859,7 +859,7 @@ isLeapYear year_ = quarter : Zone -> Posix -> Int quarter zone posix = - monthNumber_ zone posix // 4 + (monthNumber_ zone posix - 1) // 3 diff --git a/tests/Fuzzers.elm b/tests/Fuzzers.elm index 994c799..ea3a50b 100644 --- a/tests/Fuzzers.elm +++ b/tests/Fuzzers.elm @@ -9,7 +9,7 @@ datetime = Fuzz.map Time.millisToPosix (Fuzz.intRange 1529000000 - 1530000000 + 48699800000 ) diff --git a/tests/Tests.elm b/tests/Tests.elm index 9d6e824..7d2606c 100644 --- a/tests/Tests.elm +++ b/tests/Tests.elm @@ -254,6 +254,35 @@ suite = , describe "quarterNumber" [ fuzz Fuzzers.datetime "Is between 1 and 4" <| withinRange 1 4 DateFormat.quarterNumber + , fuzz Fuzzers.datetime "Assigns months to appropriate quarters" <| + \date -> + let + quarterToMonths q = + case q of + "1" -> + [ "1", "2", "3" ] + + "2" -> + [ "4", "5", "6" ] + + "3" -> + [ "7", "8", "9" ] + + "4" -> + [ "10", "11", "12" ] + + _ -> + [] + + quarter = + DateFormat.format [ DateFormat.quarterNumber ] utc date + + month = + DateFormat.format [ DateFormat.monthNumber ] utc date + in + Expect.equal + True + (quarter |> quarterToMonths |> List.member month) ] , describe "quarterSuffix" [ fuzz Fuzzers.datetime "Is between 1 and 4" <|