test_sig_save.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. """单元测试 sig_save"""
  2. import os
  3. import numpy as np
  4. from device.sig_chain.sig_save import SigSave
  5. from schemas.subjects import SubjectCreate
  6. channel_labels = [
  7. 'T6', 'P4', 'Pz', 'M2', 'F8', 'F4', 'Fp1', 'Cz', 'M1', 'F7', 'F3', 'C3',
  8. 'T3', 'A1', 'Oz', 'O1', 'O2', 'Fz', 'C4', 'T4', 'Fp2', 'A2', 'T5', 'P3'
  9. ]
  10. test_data_path = './tests/core/sig_chain/test_data/'
  11. filename = 'testfilename.bdf'
  12. TASK_PER_RUN = 1
  13. def setup_module():
  14. if not os.path.exists(test_data_path):
  15. os.makedirs(test_data_path)
  16. def teardown_module():
  17. os.removedirs(test_data_path)
  18. def create_subject():
  19. return SubjectCreate(name='nobody',
  20. id_card='12345',
  21. gender='男',
  22. birthday='1988-01-01',
  23. rehabilitation_parts=['左手'])
  24. def test_subject_set_edf_header_success():
  25. saver = SigSave(channel_labels, 1000, 375000, -375000)
  26. subject = create_subject()
  27. saver.set_edf_header(subject, filename, TASK_PER_RUN, test_data_path)
  28. assert saver.is_ready is True
  29. def test_close_edf_file():
  30. saver = SigSave(channel_labels, 1000, 375000, -375000)
  31. subject = create_subject()
  32. saver.set_edf_header(subject, filename, TASK_PER_RUN, test_data_path)
  33. saver.close_edf_file()
  34. assert saver.is_ready is False
  35. def test_save_raw_data_once():
  36. saver = SigSave(channel_labels, 1000, 375000, -375000)
  37. subject = create_subject()
  38. saver.set_edf_header(subject, filename, TASK_PER_RUN, test_data_path)
  39. data = np.ones((len(channel_labels), 1000))
  40. saver.save_raw_data(data)
  41. file_path = test_data_path + filename
  42. assert os.path.exists(file_path)
  43. assert os.path.getsize(file_path) > 0
  44. saver.close_edf_file()
  45. os.remove(file_path)
  46. def test_save_raw_data_10_times():
  47. saver = SigSave(channel_labels, 1000, 375000, -375000)
  48. subject = create_subject()
  49. saver.set_edf_header(subject, filename, TASK_PER_RUN, test_data_path)
  50. data = np.ones((len(channel_labels), 1000))
  51. for _ in range(10):
  52. saver.save_raw_data(data)
  53. file_path = test_data_path + filename
  54. assert os.path.exists(file_path)
  55. assert os.path.getsize(file_path) > 0
  56. saver.close_edf_file()
  57. os.remove(file_path)
  58. def test_save_raw_data_without_set_header():
  59. saver = SigSave(channel_labels, 1000, 375000, -375000)
  60. data = np.ones((len(channel_labels), 1000))
  61. saver.save_raw_data(data)
  62. file_path = test_data_path + filename
  63. assert os.path.exists(file_path) is False
  64. def test_edf_data_mark():
  65. saver = SigSave(channel_labels, 1000, 375000, -375000)
  66. subject = create_subject()
  67. saver.set_edf_header(subject, filename, TASK_PER_RUN, test_data_path)
  68. data = np.ones((len(channel_labels), 1000))
  69. saver.save_raw_data(data, 500)
  70. file_path = test_data_path + filename
  71. saver.edf_data_mark(550, 'OK')
  72. saver.close_edf_file()
  73. os.remove(file_path)
  74. def test_edf_data_mark_timestamp_none():
  75. saver = SigSave(channel_labels, 1000, 375000, -375000)
  76. subject = create_subject()
  77. saver.set_edf_header(subject, filename, TASK_PER_RUN, test_data_path)
  78. data = np.ones((len(channel_labels), 1000))
  79. saver.save_raw_data(data)
  80. file_path = test_data_path + filename
  81. saver.edf_data_mark(0.5, 'OK')
  82. saver.close_edf_file()
  83. os.remove(file_path)