def test_ready(self):
     base_component = BaseComponent(2, function_and)
     self.assertFalse(base_component.ready())
     base_component.set_input(0, 0)
     self.assertFalse(base_component.ready())
     base_component.set_input(1, 1)
     self.assertTrue(base_component.ready())
 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_ready(self):
     base_component = BaseComponent(2, function_and)
     self.assertFalse(base_component.ready())
     base_component.set_input(0, 0)
     self.assertFalse(base_component.ready())
     base_component.set_input(1, 1)
     self.assertTrue(base_component.ready())
    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())
Example #6
0
 def __init__(self, number_of_input_ports, function, id=""):
     BaseComponent.__init__(self, number_of_input_ports, function, id)
     self.__failures = dict()
     self.__last_failures = []
Example #7
0
 def clear(self):
     BaseComponent.clear(self)
 def __init__(self, number_of_input_ports, function, id = ""):
     BaseComponent.__init__(self, number_of_input_ports, function, id)
     self.__failures = dict()
     self.__last_failures = []
 def test_set_input(self):
     base_component = BaseComponent(2, function_and)
     self.assertRaises(ValueError, base_component.set_input, -1, 0)
     self.assertRaises(ValueError, base_component.set_input, 0, 2)
 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_exception(self):
     base_component = BaseComponent(2, function_and)
     self.assertRaises(Exception, base_component.out)
    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 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_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_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 clear(self):
     BaseComponent.clear(self)