| Index: third_party/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs
|
| diff --git a/third_party/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs b/third_party/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs
|
| index 36012e63b6d12887398064e1a2973b3a5aa6152b..141faf80e0960c3a1bd6187bb60a69d6b400b57d 100644
|
| --- a/third_party/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs
|
| +++ b/third_party/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs
|
| @@ -50,11 +50,6 @@ namespace Google.Protobuf.WellKnownTypes
|
| // Rounding is towards 0
|
| Assert.AreEqual(TimeSpan.FromTicks(2), new Duration { Nanos = 250 }.ToTimeSpan());
|
| Assert.AreEqual(TimeSpan.FromTicks(-2), new Duration { Nanos = -250 }.ToTimeSpan());
|
| -
|
| - // Non-normalized durations
|
| - Assert.AreEqual(TimeSpan.FromSeconds(3), new Duration { Seconds = 1, Nanos = 2 * Duration.NanosecondsPerSecond }.ToTimeSpan());
|
| - Assert.AreEqual(TimeSpan.FromSeconds(1), new Duration { Seconds = 3, Nanos = -2 * Duration.NanosecondsPerSecond }.ToTimeSpan());
|
| - Assert.AreEqual(TimeSpan.FromSeconds(-1), new Duration { Seconds = 1, Nanos = -2 * Duration.NanosecondsPerSecond }.ToTimeSpan());
|
| }
|
|
|
| [Test]
|
| @@ -100,5 +95,38 @@ namespace Google.Protobuf.WellKnownTypes
|
| Assert.AreEqual(new Duration { Seconds = 1 }, Duration.FromTimeSpan(TimeSpan.FromSeconds(1)));
|
| Assert.AreEqual(new Duration { Nanos = Duration.NanosecondsPerTick }, Duration.FromTimeSpan(TimeSpan.FromTicks(1)));
|
| }
|
| +
|
| + [Test]
|
| + [TestCase(0, Duration.MaxNanoseconds + 1)]
|
| + [TestCase(0, Duration.MinNanoseconds - 1)]
|
| + [TestCase(Duration.MinSeconds - 1, 0)]
|
| + [TestCase(Duration.MaxSeconds + 1, 0)]
|
| + [TestCase(1, -1)]
|
| + [TestCase(-1, 1)]
|
| + public void ToTimeSpan_Invalid(long seconds, int nanoseconds)
|
| + {
|
| + var duration = new Duration { Seconds = seconds, Nanos = nanoseconds };
|
| + Assert.Throws<InvalidOperationException>(() => duration.ToTimeSpan());
|
| + }
|
| +
|
| + [Test]
|
| + [TestCase(0, Duration.MaxNanoseconds)]
|
| + [TestCase(0, Duration.MinNanoseconds)]
|
| + [TestCase(Duration.MinSeconds, Duration.MinNanoseconds)]
|
| + [TestCase(Duration.MaxSeconds, Duration.MaxNanoseconds)]
|
| + public void ToTimeSpan_Valid(long seconds, int nanoseconds)
|
| + {
|
| + // Only testing that these values don't throw, unlike their similar tests in ToTimeSpan_Invalid
|
| + var duration = new Duration { Seconds = seconds, Nanos = nanoseconds };
|
| + duration.ToTimeSpan();
|
| + }
|
| +
|
| + [Test]
|
| + public void ToString_NonNormalized()
|
| + {
|
| + // Just a single example should be sufficient...
|
| + var duration = new Duration { Seconds = 1, Nanos = -1 };
|
| + Assert.AreEqual("{ \"@warning\": \"Invalid Duration\", \"seconds\": \"1\", \"nanos\": -1 }", duration.ToString());
|
| + }
|
| }
|
| }
|
|
|