Beispiel #1
0
 def set_input(self, value):
     BaseLine.set_input(self, value)
     if self._output_component:
         self._output_component.set_input(self._output_component_input_port,
                                          value)
         if self._output_component.ready():
             self._output_component.out()
    def test_base_connection(self):
        #inputs
        comp_in1 = BaseComponent(1, function_in)
        comp_in2 = BaseComponent(1, function_in)
        #and
        comp_and1 = BaseComponent(2, function_and)
        #lines
        line_in1_to_and1 = BaseLine()
        line_in2_to_and1 = BaseLine()
        line_out = BaseLine()

        comp_in1.attach_output_line(line_in1_to_and1)
        comp_in2.attach_output_line(line_in2_to_and1)
        comp_and1.attach_input_line(0, line_in1_to_and1)
        comp_and1.attach_input_line(1, line_in1_to_and1)
        comp_and1.attach_output_line(line_out)

        comp_in1.set_input(0, 0)
        comp_in1.out()
        comp_in2.set_input(0, 0)
        comp_in2.out()
        comp_and1.set_input(0, line_in1_to_and1.get_value())
        comp_and1.set_input(1, line_in2_to_and1.get_value())
        comp_and1.out()
        self.assertEqual(0, line_out.get_value())

        comp_in1.set_input(0, 1)
        comp_in1.out()
        comp_in2.set_input(0, 1)
        comp_in2.out()
        comp_and1.set_input(0, line_in1_to_and1.get_value())
        comp_and1.set_input(1, line_in2_to_and1.get_value())
        comp_and1.out()
        self.assertEqual(1, line_out.get_value())
 def test_get_lines_and_components(self):
     c = BaseComponent(1, function_in)
     neg = BaseComponent(1, function_neg)
     l_in = BaseLine()
     l_out = BaseLine()
     c.attach_output_line(l_in)
     neg.attach_input_line(0, l_in)
     neg.attach_output_line(l_out)
     comp = c.get_output_line().get_output_component()
     self.assertIs(neg, comp)
     line = neg.get_output_line()
     self.assertIs(line, l_out)
    def test_2components(self):
        '''3 inputs, 1 output
        in1 and in2 or in3'''
        #components
        c_in1 = BaseComponent(1, function_in)
        c_in2 = BaseComponent(1, function_in)
        c_in3 = BaseComponent(1, function_in)
        c_and = BaseComponent(2, function_and)
        c_or = BaseComponent(2, function_or)
        #lines (1 and 2 connects to component 'and')
        #3 connects to component 'or'
        #4 links output of 'and' and input of 'or'
        l_in1 = BaseLine()
        l_in2 = BaseLine()
        l_in3 = BaseLine()
        l_in4 = BaseLine()
        l_out = BaseLine()

        c_in1.attach_output_line(l_in1)
        c_in2.attach_output_line(l_in2)
        c_and.attach_input_line(0, l_in1)
        c_and.attach_input_line(1, l_in2)
        c_and.attach_output_line(l_in4)

        c_in3.attach_output_line(l_in3)
        c_or.attach_input_line(0, l_in4)
        c_or.attach_input_line(1, l_in3)
        c_or.attach_output_line(l_out)

        c_in2.set_input(0, 1)
        c_in1.set_input(0, 1)
        c_in3.set_input(0, 0)
        c_in1.out()
        c_in2.out()
        c_in3.out()
        c_and.set_input(0, l_in1.get_value())
        c_and.set_input(1, l_in2.get_value())
        c_and.out()
        c_or.set_input(0, l_in4.get_value())
        c_or.set_input(1, l_in3.get_value())
        c_or.out()
        self.assertEqual(1, l_out.get_value())
 def test_out(self):
     base_component = BaseComponent(2, function_and)
     base_line = BaseLine()
     base_component.attach_output_line(base_line)
     base_component.set_input(0, 0)
     base_component.set_input(1, 0)
     self.assertEqual(0, base_component.out())
     base_component.set_input(0, 0)
     base_component.set_input(1, 1)
     self.assertEqual(0, base_component.out())
     base_component.set_input(0, 1)
     base_component.set_input(1, 0)
     self.assertEqual(0, base_component.out())
     base_component.set_input(0, 1)
     base_component.set_input(1, 1)
     self.assertEqual(1, base_component.out())
 def test_clear(self):
    base_line = BaseLine()
    self.assertIsNone(base_line.get_value())
    base_line.set_input(1)
    self.assertEqual(1, base_line.get_value())
    base_line.clear()
    self.assertIsNone(base_line.get_value())
    base_line.set_output(1)
    self.assertEqual(1, base_line.get_value())
 def test_set_output(self):
    base_line = BaseLine()
    self.assertRaises(ValueError, base_line.set_output, -1)
    self.assertRaises(ValueError, base_line.set_output, 2)
    base_line.set_output(1)
    base_line.set_output(0)
    def test_split_lines(self):
        '''not(in1) or not(in1)
        function is not a mistake. it tests line's splitting'''
        c_in = BaseComponent(1, function_in)
        c_neg1 = BaseComponent(1, function_neg)
        c_neg2 = BaseComponent(1, function_neg)
        c_or = BaseComponent(2, function_or)

        l_in1 = BaseLine()
        l_in2 = BaseLine()#1 to 2 to neg1
        l_in3 = BaseLine()#1 to 3 to neg2
        l_in4 = BaseLine()#to 'or'
        l_in5 = BaseLine()#to 'or'
        l_out = BaseLine()

        c_in.attach_output_line(l_in1)
        l_in1.attach_output_line(l_in2)
        l_in1.attach_output_line(l_in3)
        c_neg1.attach_input_line(0, l_in2)
        c_neg2.attach_input_line(0, l_in3)

        c_neg1.attach_output_line(l_in4)
        c_neg2.attach_output_line(l_in5)
        c_or.attach_input_line(0, l_in4)
        c_or.attach_input_line(1, l_in5)

        c_or.attach_output_line(l_out)

        c_in.set_input(0, 0)
        c_in.out()
        c_neg1.set_input(0, l_in2.get_value())
        c_neg2.set_input(0, l_in3.get_value())
        c_neg1.out()
        c_neg2.out()
        c_or.set_input(0, l_in4.get_value())
        c_or.set_input(1, l_in5.get_value())
        c_or.out()
        self.assertEqual(1, l_out.get_value())
 def test_clear(self):
     base_line = BaseLine()
     self.assertIsNone(base_line.get_value())
     base_line.set_input(1)
     self.assertEqual(1, base_line.get_value())
     base_line.clear()
     self.assertIsNone(base_line.get_value())
     base_line.set_output(1)
     self.assertEqual(1, base_line.get_value())
 def test_set_output(self):
     base_line = BaseLine()
     self.assertRaises(ValueError, base_line.set_output, -1)
     self.assertRaises(ValueError, base_line.set_output, 2)
     base_line.set_output(1)
     base_line.set_output(0)
    def test_split_lines(self):
        '''not(in1) or not(in1)
        function is not a mistake. it tests line's splitting'''
        c_in = BaseComponent(1, function_in)
        c_neg1 = BaseComponent(1, function_neg)
        c_neg2 = BaseComponent(1, function_neg)
        c_or = BaseComponent(2, function_or)

        l_in1 = BaseLine()
        l_in2 = BaseLine()  #1 to 2 to neg1
        l_in3 = BaseLine()  #1 to 3 to neg2
        l_in4 = BaseLine()  #to 'or'
        l_in5 = BaseLine()  #to 'or'
        l_out = BaseLine()

        c_in.attach_output_line(l_in1)
        l_in1.attach_output_line(l_in2)
        l_in1.attach_output_line(l_in3)
        c_neg1.attach_input_line(0, l_in2)
        c_neg2.attach_input_line(0, l_in3)

        c_neg1.attach_output_line(l_in4)
        c_neg2.attach_output_line(l_in5)
        c_or.attach_input_line(0, l_in4)
        c_or.attach_input_line(1, l_in5)

        c_or.attach_output_line(l_out)

        c_in.set_input(0, 0)
        c_in.out()
        c_neg1.set_input(0, l_in2.get_value())
        c_neg2.set_input(0, l_in3.get_value())
        c_neg1.out()
        c_neg2.out()
        c_or.set_input(0, l_in4.get_value())
        c_or.set_input(1, l_in5.get_value())
        c_or.out()
        self.assertEqual(1, l_out.get_value())
    def test_2components(self):
        '''3 inputs, 1 output
        in1 and in2 or in3'''
        #components
        c_in1 = BaseComponent(1, function_in)
        c_in2 = BaseComponent(1, function_in)
        c_in3 = BaseComponent(1, function_in)
        c_and = BaseComponent(2, function_and)
        c_or = BaseComponent(2, function_or)
        #lines (1 and 2 connects to component 'and')
        #3 connects to component 'or'
        #4 links output of 'and' and input of 'or'
        l_in1 = BaseLine()
        l_in2 = BaseLine()
        l_in3 = BaseLine()
        l_in4 = BaseLine()
        l_out = BaseLine()

        c_in1.attach_output_line(l_in1)
        c_in2.attach_output_line(l_in2)
        c_and.attach_input_line(0, l_in1)
        c_and.attach_input_line(1, l_in2)
        c_and.attach_output_line(l_in4)

        c_in3.attach_output_line(l_in3)
        c_or.attach_input_line(0, l_in4)
        c_or.attach_input_line(1, l_in3)
        c_or.attach_output_line(l_out)

        c_in2.set_input(0, 1)
        c_in1.set_input(0, 1)
        c_in3.set_input(0, 0)
        c_in1.out()
        c_in2.out()
        c_in3.out()
        c_and.set_input(0, l_in1.get_value())
        c_and.set_input(1, l_in2.get_value())
        c_and.out()
        c_or.set_input(0, l_in4.get_value())
        c_or.set_input(1, l_in3.get_value())
        c_or.out()
        self.assertEqual(1, l_out.get_value())
    def test_base_connection(self):
        #inputs
        comp_in1 = BaseComponent(1, function_in)
        comp_in2 = BaseComponent(1, function_in)
        #and
        comp_and1 = BaseComponent(2, function_and)
        #lines
        line_in1_to_and1 = BaseLine()
        line_in2_to_and1 = BaseLine()
        line_out = BaseLine()

        comp_in1.attach_output_line(line_in1_to_and1)
        comp_in2.attach_output_line(line_in2_to_and1)
        comp_and1.attach_input_line(0, line_in1_to_and1)
        comp_and1.attach_input_line(1, line_in1_to_and1)
        comp_and1.attach_output_line(line_out)

        comp_in1.set_input(0, 0)
        comp_in1.out()
        comp_in2.set_input(0, 0)
        comp_in2.out()
        comp_and1.set_input(0, line_in1_to_and1.get_value())
        comp_and1.set_input(1, line_in2_to_and1.get_value())
        comp_and1.out()
        self.assertEqual(0, line_out.get_value())

        comp_in1.set_input(0, 1)
        comp_in1.out()
        comp_in2.set_input(0, 1)
        comp_in2.out()
        comp_and1.set_input(0, line_in1_to_and1.get_value())
        comp_and1.set_input(1, line_in2_to_and1.get_value())
        comp_and1.out()
        self.assertEqual(1, line_out.get_value())
 def set_input(self, value):
     BaseLine.set_input(self, value)
     if self._output_component:
         self._output_component.set_input(self._output_component_input_port, value)
         if self._output_component.ready():
             self._output_component.out()