TimeTests.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the MIT License.
  3. // See the LICENSE file in the project root for more information.
  4. using System;
  5. using System.Reactive;
  6. using Microsoft.VisualStudio.TestTools.UnitTesting;
  7. using Assert = Xunit.Assert;
  8. namespace ReactiveTests.Tests
  9. {
  10. [TestClass]
  11. public class TimeTests
  12. {
  13. [TestMethod]
  14. public void TimeInterval_Ctor_Properties()
  15. {
  16. var ti = new TimeInterval<int>(42, TimeSpan.FromSeconds(123.45));
  17. Assert.Equal(42, ti.Value);
  18. Assert.Equal(TimeSpan.FromSeconds(123.45), ti.Interval);
  19. }
  20. [TestMethod]
  21. public void TimeInterval_Equals()
  22. {
  23. var ti = new TimeInterval<int>(42, TimeSpan.FromSeconds(123.45));
  24. Assert.False(ti.Equals("x"));
  25. Assert.False(ti.Equals("x"));
  26. Assert.True(ti.Equals(ti));
  27. Assert.True(((object)ti).Equals(ti));
  28. var t2 = new TimeInterval<int>(43, TimeSpan.FromSeconds(123.45));
  29. Assert.False(ti.Equals(t2));
  30. Assert.False(((object)ti).Equals(t2));
  31. var t3 = new TimeInterval<int>(42, TimeSpan.FromSeconds(123.56));
  32. Assert.False(ti.Equals(t3));
  33. Assert.False(((object)ti).Equals(t3));
  34. var t4 = new TimeInterval<int>(42, TimeSpan.FromSeconds(123.45));
  35. Assert.True(ti.Equals(t4));
  36. Assert.True(((object)ti).Equals(t4));
  37. }
  38. [TestMethod]
  39. public void TimeInterval_GetHashCode()
  40. {
  41. var ti = new TimeInterval<string>(null, TimeSpan.FromSeconds(123.45));
  42. Assert.True(ti.GetHashCode() != 0);
  43. Assert.Equal(ti.GetHashCode(), ti.GetHashCode());
  44. var t2 = new TimeInterval<string>("", TimeSpan.FromSeconds(123.45));
  45. Assert.NotEqual(ti.GetHashCode(), t2.GetHashCode());
  46. }
  47. [TestMethod]
  48. public void TimeInterval_EqualsOperators()
  49. {
  50. var ti = new TimeInterval<int>(42, TimeSpan.FromSeconds(123.45));
  51. var t2 = new TimeInterval<int>(43, TimeSpan.FromSeconds(123.45));
  52. Assert.False(ti == t2);
  53. Assert.False(t2 == ti);
  54. Assert.True(ti != t2);
  55. Assert.True(t2 != ti);
  56. var t3 = new TimeInterval<int>(42, TimeSpan.FromSeconds(123.56));
  57. Assert.False(ti == t3);
  58. Assert.False(t3 == ti);
  59. Assert.True(ti != t3);
  60. Assert.True(t3 != ti);
  61. var t4 = new TimeInterval<int>(42, TimeSpan.FromSeconds(123.45));
  62. Assert.True(ti == t4);
  63. Assert.True(t4 == ti);
  64. Assert.False(ti != t4);
  65. Assert.False(t4 != ti);
  66. }
  67. [TestMethod]
  68. public void TimeInterval_ToString()
  69. {
  70. var ti = new TimeInterval<int>(42, TimeSpan.FromSeconds(123.45));
  71. Assert.True(ti.ToString().Contains(42.ToString()));
  72. Assert.True(ti.ToString().Contains(TimeSpan.FromSeconds(123.45).ToString()));
  73. }
  74. [TestMethod]
  75. public void Timestamped_Create()
  76. {
  77. var o = DateTimeOffset.UtcNow;
  78. var ti = Timestamped.Create(42, o);
  79. Assert.Equal(42, ti.Value);
  80. Assert.Equal(o, ti.Timestamp);
  81. }
  82. [TestMethod]
  83. public void Timestamped_Ctor_Properties()
  84. {
  85. var o = new DateTimeOffset();
  86. var ti = new Timestamped<int>(42, o);
  87. Assert.Equal(42, ti.Value);
  88. Assert.Equal(o, ti.Timestamp);
  89. }
  90. [TestMethod]
  91. public void Timestamped_Equals()
  92. {
  93. var ti = new Timestamped<int>(42, new DateTimeOffset());
  94. Assert.False(ti.Equals("x"));
  95. Assert.False(ti.Equals("x"));
  96. Assert.True(ti.Equals(ti));
  97. Assert.True(((object)ti).Equals(ti));
  98. var t2 = new Timestamped<int>(43, new DateTimeOffset());
  99. Assert.False(ti.Equals(t2));
  100. Assert.False(((object)ti).Equals(t2));
  101. var t3 = new Timestamped<int>(42, new DateTimeOffset().AddDays(1));
  102. Assert.False(ti.Equals(t3));
  103. Assert.False(((object)ti).Equals(t3));
  104. var t4 = new Timestamped<int>(42, new DateTimeOffset());
  105. Assert.True(ti.Equals(t4));
  106. Assert.True(((object)ti).Equals(t4));
  107. }
  108. [TestMethod]
  109. public void Timestamped_GetHashCode()
  110. {
  111. var ti = new Timestamped<string>(null, new DateTimeOffset());
  112. Assert.True(ti.GetHashCode() != 0);
  113. Assert.Equal(ti.GetHashCode(), ti.GetHashCode());
  114. var t2 = new Timestamped<string>("", new DateTimeOffset());
  115. Assert.NotEqual(ti.GetHashCode(), t2.GetHashCode());
  116. }
  117. [TestMethod]
  118. public void Timestamped_EqualsOperators()
  119. {
  120. var o = new DateTimeOffset();
  121. var ti = new Timestamped<int>(42, o);
  122. var t2 = new Timestamped<int>(43, o);
  123. Assert.False(ti == t2);
  124. Assert.False(t2 == ti);
  125. Assert.True(ti != t2);
  126. Assert.True(t2 != ti);
  127. var t3 = new Timestamped<int>(42, o.AddDays(1));
  128. Assert.False(ti == t3);
  129. Assert.False(t3 == ti);
  130. Assert.True(ti != t3);
  131. Assert.True(t3 != ti);
  132. var t4 = new Timestamped<int>(42, o);
  133. Assert.True(ti == t4);
  134. Assert.True(t4 == ti);
  135. Assert.False(ti != t4);
  136. Assert.False(t4 != ti);
  137. }
  138. [TestMethod]
  139. public void Timestamped_ToString()
  140. {
  141. var o = new DateTimeOffset();
  142. var ti = new Timestamped<int>(42, o);
  143. Assert.True(ti.ToString().Contains(42.ToString()));
  144. Assert.True(ti.ToString().Contains(o.ToString()));
  145. }
  146. }
  147. }