Coverage for flexnetsim/bitrate.py: 100%
58 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-22 20:03 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-07-22 20:03 +0000
1import json
4class Bitrate():
5 def __init__(self, bit_rate):
6 self.__bit_rate = bit_rate
7 self.__modulation = []
8 self.__slots = []
9 self.__reach = []
11 @property
12 def bit_rate(self):
13 return self.__bit_rate
15 @property
16 def modulation(self):
17 return self.__modulation
19 @property
20 def slots(self):
21 return self.__slots
23 @property
24 def reach(self):
25 return self.__reach
27 def add_modulation(self, modulation: str, slots: int, reach):
28 self.modulation.append(modulation)
29 self.slots.append(slots)
30 self.reach.append(reach)
32 def get_modulation(self, pos: int):
33 if pos >= len(self.modulation):
34 raise ValueError(
35 f"Bitrate {self.bit_rate} does not have more than {len(self.modulation)} modulations")
37 return self.modulation[pos]
39 def get_number_of_slots(self, pos: int):
40 if pos >= len(self.slots):
41 raise ValueError(
42 f"Bitrate {self.bit_rate} does not have more than {len(self.slots)} modulations")
43 return self.slots[pos]
45 def get_reach(self, pos: int):
46 if pos >= len(self.reach):
47 raise ValueError(
48 f"Bitrate {self.bit_rate} does not have more than {len(self.reach)} modulations")
49 return self.reach[pos]
51 def read_bit_rate_file(filename: str):
52 f = open(filename)
53 bit_rate_file = json.load(f)
54 f.close()
55 vect = []
57 for x in bit_rate_file:
58 bit_rate = int(x)
59 number_of_modulations = len(bit_rate_file[x])
61 aux = Bitrate(bit_rate)
62 for i in range(number_of_modulations):
63 for j in bit_rate_file[x][i].items():
64 modulation = j[0]
65 reach = int(j[1]["reach"])
66 slots = int(j[1]["slots"])
68 if (reach < 0) and (slots < 0):
69 raise ValueError(
70 "Value entered for slots and reach is less than zero")
72 if reach < 0:
73 raise ValueError(
74 "Value entered for reach is less than zero")
76 if slots < 0:
77 raise ValueError(
78 "Value entered for slots is less than zero")
80 aux.add_modulation(modulation, slots, reach)
82 vect.append(aux)
83 return vect