TimeSpanTests.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. namespace S7.Net.UnitTest.TypeTests
  4. {
  5. public static class TimeSpanTests
  6. {
  7. private static readonly TimeSpan SampleTimeSpan = new TimeSpan(12, 0, 59, 37, 856);
  8. private static readonly byte[] SampleByteArray = { 0x3E, 0x02, 0xE8, 0x00 };
  9. private static readonly byte[] SpecMinByteArray = { 0x80, 0x00, 0x00, 0x00 };
  10. private static readonly byte[] SpecMaxByteArray = { 0x7F, 0xFF, 0xFF, 0xFF };
  11. [TestClass]
  12. public class FromByteArray
  13. {
  14. [TestMethod]
  15. public void Sample()
  16. {
  17. AssertFromByteArrayEquals(SampleTimeSpan, SampleByteArray);
  18. }
  19. [TestMethod]
  20. public void SpecMinimum()
  21. {
  22. AssertFromByteArrayEquals(Types.TimeSpan.SpecMinimumTimeSpan, SpecMinByteArray);
  23. }
  24. [TestMethod]
  25. public void SpecMaximum()
  26. {
  27. AssertFromByteArrayEquals(Types.TimeSpan.SpecMaximumTimeSpan, SpecMaxByteArray);
  28. }
  29. private static void AssertFromByteArrayEquals(TimeSpan expected, params byte[] bytes)
  30. {
  31. Assert.AreEqual(expected, Types.TimeSpan.FromByteArray(bytes));
  32. }
  33. }
  34. [TestClass]
  35. public class ToByteArray
  36. {
  37. [TestMethod]
  38. public void Sample()
  39. {
  40. AssertToByteArrayEquals(SampleTimeSpan, SampleByteArray);
  41. }
  42. [TestMethod]
  43. public void SpecMinimum()
  44. {
  45. AssertToByteArrayEquals(Types.TimeSpan.SpecMinimumTimeSpan, SpecMinByteArray);
  46. }
  47. [TestMethod]
  48. public void SpecMaximum()
  49. {
  50. AssertToByteArrayEquals(Types.TimeSpan.SpecMaximumTimeSpan, SpecMaxByteArray);
  51. }
  52. [TestMethod, ExpectedException(typeof(ArgumentOutOfRangeException))]
  53. public void ThrowsOnTimeBeforeSpecMinimum()
  54. {
  55. Types.TimeSpan.ToByteArray(TimeSpan.FromDays(-25));
  56. }
  57. [TestMethod, ExpectedException(typeof(ArgumentOutOfRangeException))]
  58. public void ThrowsOnTimeAfterSpecMaximum()
  59. {
  60. Types.TimeSpan.ToByteArray(new TimeSpan(30, 15, 15, 15, 15));
  61. }
  62. private static void AssertToByteArrayEquals(TimeSpan value, params byte[] expected)
  63. {
  64. CollectionAssert.AreEqual(expected, Types.TimeSpan.ToByteArray(value));
  65. }
  66. }
  67. }
  68. }