TimeTests.cs 5.6 KB

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