diff options
author | Caleb Spare <cespare@gmail.com> | 2017-02-08 19:47:23 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2017-02-14 00:40:31 +0000 |
commit | 45356c1a082ae0e1f4233a8bc5644d60470e9e52 (patch) | |
tree | 9826b919a88dc7e954bb0769c5000006c3c5007d /src/time/time_test.go | |
parent | 46a75870ad5b9b9711e69ffce3738a3ab2057789 (diff) | |
download | go-45356c1a082ae0e1f4233a8bc5644d60470e9e52.tar.gz go-45356c1a082ae0e1f4233a8bc5644d60470e9e52.zip |
time: add Duration.Truncate and Duration.Round
Fixes #18996
Change-Id: I0b0f7270960b368ce97ad4456f60bcc1fc2a8313
Reviewed-on: https://go-review.googlesource.com/36615
Run-TryBot: Caleb Spare <cespare@gmail.com>
Reviewed-by: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/time/time_test.go')
-rw-r--r-- | src/time/time_test.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/time/time_test.go b/src/time/time_test.go index 90e2abf03e..ebe28e61f4 100644 --- a/src/time/time_test.go +++ b/src/time/time_test.go @@ -1058,6 +1058,65 @@ func TestDurationHours(t *testing.T) { } } +var durationTruncateTests = []struct { + d Duration + m Duration + want Duration +}{ + {0, Second, 0}, + {Minute, -7 * Second, Minute}, + {Minute, 0, Minute}, + {Minute, 1, Minute}, + {Minute + 10*Second, 10 * Second, Minute + 10*Second}, + {2*Minute + 10*Second, Minute, 2 * Minute}, + {10*Minute + 10*Second, 3 * Minute, 9 * Minute}, + {Minute + 10*Second, Minute + 10*Second + 1, 0}, + {Minute + 10*Second, Hour, 0}, + {-Minute, Second, -Minute}, + {-10 * Minute, 3 * Minute, -9 * Minute}, + {-10 * Minute, Hour, 0}, +} + +func TestDurationTruncate(t *testing.T) { + for _, tt := range durationTruncateTests { + if got := tt.d.Truncate(tt.m); got != tt.want { + t.Errorf("Duration(%s).Truncate(%s) = %s; want: %s", tt.d, tt.m, got, tt.want) + } + } +} + +var durationRoundTests = []struct { + d Duration + m Duration + want Duration +}{ + {0, Second, 0}, + {Minute, -11 * Second, Minute}, + {Minute, 0, Minute}, + {Minute, 1, Minute}, + {2 * Minute, Minute, 2 * Minute}, + {2*Minute + 10*Second, Minute, 2 * Minute}, + {2*Minute + 30*Second, Minute, 3 * Minute}, + {2*Minute + 50*Second, Minute, 3 * Minute}, + {-Minute, 1, -Minute}, + {-2 * Minute, Minute, -2 * Minute}, + {-2*Minute - 10*Second, Minute, -2 * Minute}, + {-2*Minute - 30*Second, Minute, -3 * Minute}, + {-2*Minute - 50*Second, Minute, -3 * Minute}, + {8e18, 3e18, 9e18}, + {9e18, 5e18, 1<<63 - 1}, + {-8e18, 3e18, -9e18}, + {-9e18, 5e18, -1 << 63}, +} + +func TestDurationRound(t *testing.T) { + for _, tt := range durationRoundTests { + if got := tt.d.Round(tt.m); got != tt.want { + t.Errorf("Duration(%s).Round(%s) = %s; want: %s", tt.d, tt.m, got, tt.want) + } + } +} + var defaultLocTests = []struct { name string f func(t1, t2 Time) bool |