Python library for working with the PD Buddy Sink Serial Console Configuration Interface
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

__init__.py 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. """Unit tests for the top-level pdbuddy classes"""
  2. import unittest
  3. import pdbuddy
  4. class SinkConfigTestCase(unittest.TestCase):
  5. def setUp(self):
  6. self.obj_none = pdbuddy.SinkConfig()
  7. self.obj_empty = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.EMPTY)
  8. self.obj_valid = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
  9. flags=pdbuddy.SinkFlags.NONE, v=15000, i=3000)
  10. self.obj_invalid = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.INVALID,
  11. flags=pdbuddy.SinkFlags.NONE, v=15000, i=3000)
  12. self.obj_valid_gb = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
  13. flags=pdbuddy.SinkFlags.GIVEBACK, v=15000, i=3000)
  14. self.obj_valid_5v = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
  15. flags=pdbuddy.SinkFlags.NONE, v=5000, i=3000)
  16. self.obj_valid_1a = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
  17. flags=pdbuddy.SinkFlags.NONE, v=15000, i=1000)
  18. def test_str_none(self):
  19. self.assertEqual(str(self.obj_none), "No configuration")
  20. def test_str_empty(self):
  21. self.assertEqual(str(self.obj_empty), "status: empty")
  22. def test_str_valid(self):
  23. self.assertEqual(str(self.obj_valid),
  24. "status: valid\nflags: (none)\nv: 15.00 V\ni: 3.00 A")
  25. def test_str_invalid(self):
  26. self.assertEqual(str(self.obj_invalid),
  27. "status: invalid\nflags: (none)\nv: 15.00 V\ni: 3.00 A")
  28. def test_str_valid_gb(self):
  29. self.assertEqual(str(self.obj_valid_gb),
  30. "status: valid\nflags: GiveBack\nv: 15.00 V\ni: 3.00 A")
  31. def test_eq_none(self):
  32. self.assertTrue(self.obj_none == pdbuddy.SinkConfig())
  33. def test_eq_valid(self):
  34. # Set invalid object as valid
  35. self.obj_invalid.status = pdbuddy.SinkStatus.VALID
  36. self.assertTrue(self.obj_valid == self.obj_invalid)
  37. def test_eq_wrong_type(self):
  38. self.assertFalse(self.obj_none == "hello world")
  39. def test_eq_wrong_status(self):
  40. self.assertFalse(self.obj_valid == self.obj_invalid)
  41. def test_eq_wrong_flags(self):
  42. self.assertFalse(self.obj_valid == self.obj_valid_gb)
  43. def test_eq_wrong_voltage(self):
  44. self.assertFalse(self.obj_valid == self.obj_valid_5v)
  45. def test_eq_wrong_current(self):
  46. self.assertFalse(self.obj_valid == self.obj_valid_1a)
  47. def test_ne_none(self):
  48. self.assertFalse(self.obj_none != pdbuddy.SinkConfig())
  49. def test_ne_valid(self):
  50. # Set invalid object as valid
  51. self.obj_invalid.status = pdbuddy.SinkStatus.VALID
  52. self.assertFalse(self.obj_valid != self.obj_invalid)
  53. def test_ne_wrong_type(self):
  54. self.assertTrue(self.obj_none != "hello world")
  55. def test_ne_wrong_status(self):
  56. self.assertTrue(self.obj_valid != self.obj_invalid)
  57. def test_hash_identical(self):
  58. self.assertEqual(hash(self.obj_none), hash(pdbuddy.SinkConfig()))
  59. def test_hash_different(self):
  60. self.assertNotEqual(hash(self.obj_none), hash(self.obj_valid))
  61. def test_from_text_none(self):
  62. ft_none = pdbuddy.SinkConfig.from_text([])
  63. self.assertEqual(ft_none, self.obj_none)
  64. def test_from_text_empty(self):
  65. ft_empty = pdbuddy.SinkConfig.from_text([b"status: empty"])
  66. self.assertEqual(ft_empty, self.obj_empty)
  67. def test_from_text_valid(self):
  68. ft_valid = pdbuddy.SinkConfig.from_text([b"status: valid",
  69. b"flags: (none)",
  70. b"v: 15.00 V",
  71. b"i: 3.00 A"])
  72. self.assertEqual(ft_valid, self.obj_valid)
  73. def test_from_text_invalid(self):
  74. ft_invalid = pdbuddy.SinkConfig.from_text([b"status: invalid",
  75. b"flags: (none)",
  76. b"v: 15.00 V",
  77. b"i: 3.00 A"])
  78. self.assertEqual(ft_invalid, self.obj_invalid)
  79. def test_from_text_valid_gb(self):
  80. ft_valid_gb = pdbuddy.SinkConfig.from_text([b"status: valid",
  81. b"flags: GiveBack",
  82. b"v: 15.00 V",
  83. b"i: 3.00 A"])
  84. self.assertEqual(ft_valid_gb, self.obj_valid_gb)
  85. def test_from_text_valid_5v(self):
  86. ft_valid_5v = pdbuddy.SinkConfig.from_text([b"status: valid",
  87. b"flags: (none)",
  88. b"v: 5.00 V",
  89. b"i: 3.00 A"])
  90. self.assertEqual(ft_valid_5v, self.obj_valid_5v)
  91. def test_from_text_valid_1a(self):
  92. ft_valid_1a = pdbuddy.SinkConfig.from_text([b"status: valid",
  93. b"flags: (none)",
  94. b"v: 15.00 V",
  95. b"i: 1.00 A"])
  96. self.assertEqual(ft_valid_1a, self.obj_valid_1a)
  97. def test_from_text_invalid_index(self):
  98. with self.assertRaises(IndexError):
  99. pdbuddy.SinkConfig.from_text([b"Invalid index"])
  100. def test_from_text_no_configuration(self):
  101. ft_no_config = pdbuddy.SinkConfig.from_text([b"No configuration"])
  102. self.assertEqual(ft_no_config, self.obj_none)
  103. def test_from_text_valid_extra(self):
  104. ft_valid = pdbuddy.SinkConfig.from_text([b"status: valid",
  105. b"flags: (none)",
  106. b"This is an extra line, which shouldn't hurt anything.",
  107. b"v: 15.00 V",
  108. b"i: 3.00 A"])
  109. self.assertEqual(ft_valid, self.obj_valid)