TimeTests.cs 5.7 KB

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