Coverage for test/d7a/system_files/test_engineering_mode.py: 100%

58 statements  

« prev     ^ index     » next       coverage.py v7.5.0, created at 2024-05-24 08:03 +0200

1# 

2# Copyright (c) 2015-2021 University of Antwerp, Aloxy NV. 

3# 

4# This file is part of pyd7a. 

5# See https://github.com/Sub-IoT/pyd7a for further info. 

6# 

7# Licensed under the Apache License, Version 2.0 (the "License"); 

8# you may not use this file except in compliance with the License. 

9# You may obtain a copy of the License at 

10# 

11# http://www.apache.org/licenses/LICENSE-2.0 

12# 

13# Unless required by applicable law or agreed to in writing, software 

14# distributed under the License is distributed on an "AS IS" BASIS, 

15# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

16# See the License for the specific language governing permissions and 

17# limitations under the License. 

18# 

19import unittest 

20 

21from bitstring import ConstBitStream 

22 

23from d7a.system_files.engineering_mode import EngineeringModeFile, EngineeringModeMode 

24from d7a.phy.channel_header import ChannelHeader, ChannelCoding, ChannelClass, ChannelBand 

25from d7a.phy.channel_id import ChannelID 

26 

27 

28class TestEngineeringModeFile(unittest.TestCase): 

29 

30 def test_default_constructor(self): 

31 c = EngineeringModeFile() 

32 self.assertEqual(c.mode, EngineeringModeMode.ENGINEERING_MODE_MODE_OFF) 

33 self.assertEqual(c.flags, 0) 

34 self.assertEqual(c.timeout, 0) 

35 self.assertEqual(c.channel_id.channel_header, ChannelHeader(ChannelCoding.PN9, ChannelClass.LO_RATE, ChannelBand.BAND_868)) 

36 self.assertEqual(c.channel_id.channel_index, 0) 

37 self.assertEqual(c.eirp, 0) 

38 

39 def test_parsing(self): 

40 file_contents = [ 

41 1, # Engineeringmode mode 

42 0x01, # flags 

43 0x02, # timeout 

44 0x4a, 0x00, 0x09, # ChannelID 

45 0x04, # eirp 

46 ] 

47 

48 config = EngineeringModeFile.parse(ConstBitStream(bytes=file_contents)) 

49 self.assertEqual(config.mode, EngineeringModeMode.ENGINEERING_MODE_MODE_CONT_TX) 

50 self.assertEqual(config.flags, 1) 

51 self.assertEqual(config.timeout, 2) 

52 self.assertEqual(config.channel_id.channel_header.channel_coding, ChannelCoding.FEC_PN9) 

53 self.assertEqual(config.channel_id.channel_header, ChannelHeader(ChannelCoding.FEC_PN9, ChannelClass.NORMAL_RATE, ChannelBand.BAND_915)) 

54 self.assertEqual(config.channel_id.channel_index, 9) 

55 self.assertEqual(config.eirp, 4) 

56 

57 def test_byte_generation(self): 

58 bytes = bytearray(EngineeringModeFile()) 

59 self.assertEqual(len(bytes), 9) 

60 self.assertEqual(bytes[0], 0) 

61 self.assertEqual(bytes[1], 0) 

62 self.assertEqual(bytes[2], 0) 

63 self.assertEqual(bytes[3], 0x30) 

64 self.assertEqual(bytes[4], 0) 

65 self.assertEqual(bytes[5], 0) 

66 self.assertEqual(bytes[6], 0) 

67 self.assertEqual(bytes[7], 0) 

68 self.assertEqual(bytes[8], 0) 

69 

70 bytes = bytearray(EngineeringModeFile(mode=EngineeringModeMode.ENGINEERING_MODE_MODE_PER_RX, flags=9, timeout=8, 

71 channel_id=ChannelID(channel_header=ChannelHeader(ChannelCoding.CW,ChannelClass.HI_RATE,ChannelBand.BAND_868), 

72 channel_index=7), 

73 eirp=6)) 

74 self.assertEqual(len(bytes), 9) 

75 self.assertEqual(bytes[0], 3) 

76 self.assertEqual(bytes[1], 9) 

77 self.assertEqual(bytes[2], 8) 

78 self.assertEqual(bytes[3], 0x3F) 

79 self.assertEqual(bytes[4], 0) 

80 self.assertEqual(bytes[5], 7) 

81 self.assertEqual(bytes[6], 6) 

82 self.assertEqual(bytes[7], 0) 

83 self.assertEqual(bytes[8], 0) 

84 

85 bytes = bytearray(EngineeringModeFile(mode=EngineeringModeMode.ENGINEERING_MODE_MODE_PER_RX, flags=9, timeout=8, 

86 channel_id=ChannelID( 

87 channel_header=ChannelHeader(ChannelCoding.CW, ChannelClass.HI_RATE, 

88 ChannelBand.BAND_868), 

89 channel_index=7), 

90 eirp=-6)) 

91 

92 self.assertEqual(len(bytes), 9) 

93 self.assertEqual(bytes[0], 3) 

94 self.assertEqual(bytes[1], 9) 

95 self.assertEqual(bytes[2], 8) 

96 self.assertEqual(bytes[3], 0x3F) 

97 self.assertEqual(bytes[4], 0) 

98 self.assertEqual(bytes[5], 7) 

99 self.assertEqual(bytes[6], 0xFA) 

100 self.assertEqual(bytes[7], 0) 

101 self.assertEqual(bytes[8], 0)