PageRenderTime 59ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/v5.0/Mercury.ParticleEngine.Core.Test/RadianAngleTests.cs

http://mpe.codeplex.com
C# | 195 lines | 151 code | 38 blank | 6 comment | 0 complexity | 0b64b80600d6055eb44c8169c5829aad MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. namespace Mercury.ParticleEngine
  2. {
  3. using System;
  4. using System.Runtime.Serialization;
  5. using Xunit;
  6. using FluentAssertions;
  7. using Xunit.Extensions;
  8. // ReSharper disable InconsistentNaming
  9. public class RadianAngleTests
  10. {
  11. public class DeserializationConstructor
  12. {
  13. [Fact]
  14. [Trait("Type", "RadianAngle")]
  15. public void WhenGivenNullSerializationInfo_ThrowsArgumentNullException()
  16. {
  17. Action invocation = () => new RadianAngle(null, new StreamingContext());
  18. invocation.ShouldThrow<ArgumentNullException>();
  19. }
  20. [Fact]
  21. [Trait("Type", "RadianAngle")]
  22. public void WhenGivenSerializationInfo_ReturnsInitializedRadianAngle()
  23. {
  24. var serializationInfo = new SerializationInfo(typeof(RadianAngle), new FormatterConverter());
  25. serializationInfo.AddValue("value", 1f);
  26. var result = new RadianAngle(serializationInfo, new StreamingContext());
  27. var expected = new RadianAngle(1f);
  28. result.Should().Be(expected);
  29. }
  30. }
  31. public class EqualsMethod
  32. {
  33. [Fact]
  34. [Trait("Type", "RadianAngle")]
  35. public void WhenGivenNull_ReturnsFalse()
  36. {
  37. var angle = new RadianAngle(1f);
  38. angle.Equals(null).Should().BeFalse();
  39. }
  40. [Fact]
  41. [Trait("Type", "RadianAngle")]
  42. public void WhenGivenObjectOfAnotherType_ReturnsFalse()
  43. {
  44. var angle = new RadianAngle(1f);
  45. // ReSharper disable SuspiciousTypeConversion.Global
  46. angle.Equals(DateTime.Now).Should().BeFalse();
  47. // ReSharper restore SuspiciousTypeConversion.Global
  48. }
  49. [Fact]
  50. [Trait("Type", "RadianAngle")]
  51. public void WhenGivenEqualValueAsObject_ReturnsTrue()
  52. {
  53. var angle1 = new RadianAngle(1f);
  54. var angle2 = new RadianAngle(1f);
  55. angle1.Equals(angle2 as Object).Should().BeTrue();
  56. }
  57. [Fact]
  58. [Trait("Type", "RadianAngle")]
  59. public void WhenGivenDifferentValueAsObject_ReturnsFalse()
  60. {
  61. var angle1 = new RadianAngle(1f);
  62. var angle2 = new RadianAngle(2f);
  63. angle1.Equals(angle2 as Object).Should().BeFalse();
  64. }
  65. [Fact]
  66. [Trait("Type", "RadianAngle")]
  67. public void WhenGivenEqualValue_ReturnsTrue()
  68. {
  69. var angle1 = new RadianAngle(1f);
  70. var angle2 = new RadianAngle(1f);
  71. angle1.Equals(angle2).Should().BeTrue();
  72. }
  73. [Fact]
  74. [Trait("Type", "RadianAngle")]
  75. public void WhenGivenDifferentValue_ReturnsFalse()
  76. {
  77. var angle1 = new RadianAngle(1f);
  78. var angle2 = new RadianAngle(2f);
  79. angle1.Equals(angle2).Should().BeFalse();
  80. }
  81. }
  82. public class GetHashCodeMethod
  83. {
  84. [Fact]
  85. [Trait("Type", "RadianAngle")]
  86. public void WhenObjectsAreDifferent_YieldsDifferentHashCodes()
  87. {
  88. var x = new RadianAngle(0f);
  89. var y = new RadianAngle(1f);
  90. x.GetHashCode().Should().NotBe(y.GetHashCode());
  91. }
  92. [Fact]
  93. [Trait("Type", "RadianAngle")]
  94. public void WhenObjectsAreEqual_YieldsIdenticalHashCodes()
  95. {
  96. var x = new RadianAngle(1f);
  97. var y = new RadianAngle(1f);
  98. x.GetHashCode().Should().Be(y.GetHashCode());
  99. }
  100. }
  101. public class ToStringMethod
  102. {
  103. [Theory]
  104. [Trait("Type", "RadianAngle")]
  105. [InlineData(0f, "0.0000")]
  106. [InlineData(1f, "1.0000")]
  107. [InlineData(3.14159f, "3.1416")]
  108. public void ReturnsCorrectValue(Single value, String expected)
  109. {
  110. var angle = new RadianAngle(value);
  111. // ReSharper disable SpecifyACultureInStringConversionExplicitly
  112. angle.ToString().Should().Be(expected);
  113. // ReSharper restore SpecifyACultureInStringConversionExplicitly
  114. }
  115. }
  116. public class CompareToMethod
  117. {
  118. [Fact]
  119. [Trait("Type", "RadianAngle")]
  120. public void WhenValueIsSmaller_ReturnsPositiveValue()
  121. {
  122. var angle1 = new RadianAngle(1f);
  123. var angle2 = new RadianAngle(0f);
  124. angle1.CompareTo(angle2).Should().BeGreaterThan(0);
  125. }
  126. [Fact]
  127. [Trait("Type", "RadianAngle")]
  128. public void WhenValueIsEqual_ReturnsZero()
  129. {
  130. var angle1 = new RadianAngle(1f);
  131. var angle2 = new RadianAngle(1f);
  132. angle1.CompareTo(angle2).Should().Be(0);
  133. }
  134. [Fact]
  135. [Trait("Type", "RadianAngle")]
  136. public void WhenValueIsLarger_ReturnsNegativeValue()
  137. {
  138. var angle1 = new RadianAngle(1f);
  139. var angle2 = new RadianAngle(2f);
  140. angle1.CompareTo(angle2).Should().BeLessThan(0);
  141. }
  142. }
  143. public class GetObjectDataMethod
  144. {
  145. [Fact]
  146. [Trait("Type", "RadianAngle")]
  147. public void WhenGivenSerializationInfo_PopulatesIt()
  148. {
  149. ISerializable instance = new RadianAngle(1f);
  150. var serializationInfo = new SerializationInfo(typeof(RadianAngle), new FormatterConverter());
  151. instance.GetObjectData(serializationInfo, new StreamingContext());
  152. serializationInfo.GetSingle("value").Should<Single>().Be(1f);
  153. }
  154. }
  155. }
  156. // ReSharper restore InconsistentNaming
  157. }