class Tests(unittest.TestCase): def setUp(self): self.model_p = Model(traffic=3.4, lines=10, blocking_rate=False) self.model_n = Model(traffic=3.4, lines=False, blocking_rate=0.0019) self.model_a = Model(traffic=False, lines=10, blocking_rate=0.0019) self.engset_p = Model(traffic=3.4, lines=10, blocking_rate=False, sources=500) self.engset_n = Model(traffic=3.4, lines=False, blocking_rate=0.0018, sources=500) self.engset_a = Model(traffic=False, lines=10, blocking_rate=0.0018, sources=500) def test_erlang_p(self): self.assertEqual(self.model_p.calculate_erlang(), 0.0019) def test_erlang_n(self): self.assertEqual(self.model_n.calculate_erlang(), 10) def test_erlang_a(self): self.assertEqual(self.model_a.calculate_erlang(), 3.5) def test_engset_p(self): self.assertAlmostEqual(self.engset_p.calculate_engset(), 0.0018) def test_engset_n(self): self.assertEqual(self.engset_n.calculate_engset(), 10) def test_engset_a(self): self.assertAlmostEqual(self.engset_a.calculate_engset(), 3.4)
def calculate(self, alg): """ :param alg: name of algorithm to use """ if alg == 'erlang': try: traffic = self.checkEnabled(self.ids.traffic_input) lines = self.checkEnabled(self.ids.lines_input) block = self.checkEnabled(self.ids.block_rate_input) model = Model(traffic, lines, block) self.ids.result.text = str(model.calculate_erlang()) except ValueError: self.popup.open() if alg == 'engset': try: traffic = self.checkEnabled(self.ids.engset_traffic) lines = self.checkEnabled(self.ids.engset_lines) block = self.checkEnabled(self.ids.engset_block) sources = self.checkEnabled(self.ids.sources) model = Model(traffic, lines, block, sources) self.ids.engset_result.text = str(model.calculate_engset()) except ValueError: self.popup.open()
def generate(self, graph): x = [] y = [] inputs = [] for i in range(self.lin): y.append([]) try: if graph == 'lines': if self.lin == 1: inputs.append(int(self.ids.line_one_input.text)) elif self.lin == 2: inputs.append(int(self.ids.line_one_input.text)) inputs.append(int(self.ids.line_two_input.text)) elif self.lin == 3: inputs.append(int(self.ids.line_one_input.text)) inputs.append(int(self.ids.line_two_input.text)) inputs.append(int(self.ids.line_three_input.text)) elif self.lin == 4: inputs.append(int(self.ids.line_one_input.text)) inputs.append(int(self.ids.line_two_input.text)) inputs.append(int(self.ids.line_three_input.text)) inputs.append(int(self.ids.line_four_input.text)) step = float(self.ids.spinner_id.text) n_steps = int(floor((float(self.ids.max_traffic.text) - float(self.ids.min_traffic.text)) / step)) x.append(float(self.ids.min_traffic.text)) for i in range(n_steps): x.append(x[i] + step) print(x[i]) for i in range(self.lin): for j in range(n_steps + 1): model = Model(traffic=x[j], lines=inputs[i], blocking_rate=False) y[i].append(model.calculate_erlang()) print(y[i]) elif graph == 'block': if self.lin == 1: inputs.append(float(self.ids.block_one_input.text)) elif self.lin == 2: inputs.append(float(self.ids.block_one_input.text)) inputs.append(float(self.ids.block_two_input.text)) elif self.lin == 3: inputs.append(float(self.ids.block_one_input.text)) inputs.append(float(self.ids.block_two_input.text)) inputs.append(float(self.ids.block_three_input.text)) elif self.lin == 4: inputs.append(float(self.ids.block_one_input.text)) inputs.append(float(self.ids.block_two_input.text)) inputs.append(float(self.ids.block_three_input.text)) inputs.append(float(self.ids.block_four_input.text)) step = int(self.ids.spinner2_id.text) n_steps = int(floor((int(self.ids.max_lines.text) - int(self.ids.min_lines.text)) / step)) x.append(int(self.ids.min_lines.text)) print(n_steps) print(x) for i in range(n_steps): x.append(x[i] + step) for i in range(self.lin): for j in range(n_steps+1): model = Model(traffic=False, lines= x[j], blocking_rate=inputs[i]) y[i].append(model.calculate_erlang()) print(y[i]) generate_graph(x, y, inputs, graph) except ValueError: raise