Ejemplo n.º 1
0
class TestCodeBug(TestCodeBugRawObject):

    def setUp(self):
        # self.codebug = CodeBug('/dev/pts/29')
        self.codebug = CodeBug('/dev/ttyACM0')
        self.num_channels = 5

    def test_write_text(self):
        msg = "Hello, CodeBug!"
        delay = 0.025
        for i in range(len(msg) * 5 + 5):
            self.codebug.write_text(5 - i, 0, msg)
            time.sleep(delay)

        for i in range(len(msg) * 6 + 6):
            self.codebug.write_text(0, i - 5, msg, direction="down")
            time.sleep(delay)

        for i in range(len(msg) * 5 + 5):
            self.codebug.write_text(0 - i, 0, msg, direction="left")
            time.sleep(delay)

        for i in range(len(msg) * 6 + 6):
            self.codebug.write_text(0, i - 5, msg, direction="up")
            time.sleep(delay)
Ejemplo n.º 2
0
class TestCodeBugInput(unittest.TestCase):

    def setUp(self):
        self.codebug = CodeBug('/dev/ttyACM0')
        # self.codebug.set_pullup(0, 0)
        # self.codebug.set_pullup(2, 0)

    def test_get_input_channel(self):
        print(bin(self.codebug.get(5)))
Ejemplo n.º 3
0
 def setUp(self):
     self.codebug = CodeBug('/dev/ttyACM0')
Ejemplo n.º 4
0
 def setUp(self):
     # self.codebug = CodeBug('/dev/pts/29')
     self.codebug = CodeBug('/dev/ttyACM0')
     self.num_channels = 5
Ejemplo n.º 5
0
 def setUp(self):
     self.codebug = CodeBug()
Ejemplo n.º 6
0
class TestCodeBug(unittest.TestCase):
    def setUp(self):
        self.codebug = CodeBug()

    def test_get_input(self):
        # configure as inputs
        for i in range(7):
            self.codebug.set_leg_io(i, 1)
        # and just print them
        for i in ['A', 'B'] + list(range(8)):
            print("Input {} is {}".format(i, self.codebug.get_input(i)))

    def test_set_output(self):
        num_outputs = 8
        for i in range(num_outputs):
            self.codebug.set_leg_io(i, 0)  # set to output
        for i in range(num_outputs):
            self.codebug.set_output(i, 1)  # set to ON

        # check that they are all on
        for i in range(num_outputs):
            self.assertEqual(self.codebug.get_output(i), 1,
                             'self.codebug.get_output({}) != 1'.format(i))

        # then turn off again
        for i in range(num_outputs):
            self.codebug.set_output(i, 0)  # set to OFF

    # def test_set_leg_io(self):
    #     self.codebug.set_leg_io(0, 0)
    #     self.codebug.set_leg_io(1, 1)
    #     self.codebug.set_leg_io(2, 0)
    #     self.codebug.set_leg_io(3, 1)
    #     self.codebug.set_leg_io(4, 0)
    #     self.codebug.set_leg_io(5, 1)
    #     self.codebug.set_leg_io(6, 0)
    #     self.codebug.set_leg_io(7, 1)
    #     value = struct.unpack('B',
    #                           self.codebug.get(CHANNEL_INDEX_IO_DIRECTION))[0]
    #     self.assertEqual(value, 0xAA)

    #     self.codebug.set_leg_io(0, 1)
    #     self.codebug.set_leg_io(1, 0)
    #     self.codebug.set_leg_io(2, 1)
    #     self.codebug.set_leg_io(3, 0)
    #     self.codebug.set_leg_io(4, 1)
    #     self.codebug.set_leg_io(5, 0)
    #     self.codebug.set_leg_io(6, 1)
    #     self.codebug.set_leg_io(7, 0)
    #     value = struct.unpack('B',
    #                           self.codebug.get(CHANNEL_INDEX_IO_DIRECTION))[0]
    #     self.assertEqual(value, 0x55)

    #     # safely back to inputs
    #     for i in range(7):
    #         self.codebug.set_leg_io(i, 1)

    def test_clear(self):
        self.codebug.clear()
        rows = struct.unpack('B' * 5, self.codebug.get_bulk(0, 5))
        self.assertEqual(rows, (0, ) * 5)

    def test_set_row(self):
        for test_value in (0x0A, 0x15):
            for i in range(5):
                self.codebug.set_row(i, test_value)
            rows = self.codebug.get_bulk(0, 5)
            self.assertEqual(rows, bytes((test_value, ) * 5))
        self.codebug.clear()

    def test_get_row(self):
        for test_value in (0x0A, 0x15):
            self.codebug.set_bulk(0, bytes([test_value] * 5))
            for i in range(5):
                self.assertEqual(self.codebug.get_row(i), test_value)
        self.codebug.clear()

    def test_set_col(self):
        for i in range(5):
            self.codebug.set_col(i, 0x0A)
        rows = struct.unpack('B' * 5, self.codebug.get_bulk(0, 5))
        self.assertEqual(rows, (0x00, 0x1F, 0x00, 0x1F, 0x00))
        self.codebug.clear()

        for i in range(5):
            self.codebug.set_col(i, 0x15)
        rows = struct.unpack('B' * 5, self.codebug.get_bulk(0, 5))
        self.assertEqual(rows, (0x1F, 0x00, 0x1F, 0x00, 0x1F))
        self.codebug.clear()

    def test_get_col(self):
        self.codebug.set_bulk(0, bytes((0x00, 0x1F, 0x00, 0x1F, 0x00)))
        for i in range(5):
            self.assertEqual(self.codebug.get_col(i), 0x0A)
        self.codebug.clear()
        self.codebug.set_bulk(0, bytes((0x1F, 0x00, 0x1F, 0x00, 0x1F)))
        for i in range(5):
            self.assertEqual(self.codebug.get_col(i), 0x15)
        self.codebug.clear()

    def test_set_pixel(self):
        self.codebug.clear()
        for y in range(5):
            for x in range(5):
                self.codebug.set_pixel(x, y, 1)
                value = struct.unpack('B', self.codebug.get(y))[0]
                self.assertEqual(value, 1 << (4 - x))
                self.codebug.set_pixel(x, y, 0)

    def test_get_pixel(self):
        self.codebug.clear()
        for y in range(5):
            for x in range(5):
                for i in range(2):
                    self.codebug.set_pixel(x, y, i)
                    get_value = self.codebug.get_pixel(x, y)
                    self.assertEqual(get_value, i)

    def test_get_set_buffer(self):
        v = bytes(range(255))
        self.codebug.set_buffer(0, bytes(v))
        self.assertEqual(self.codebug.get_buffer(0, len(v)), v)
        v = bytes(range(100))
        self.codebug.set_buffer(0, bytes(v), 100)
        self.assertEqual(
            self.codebug.get_buffer(0, 255),
            bytes(range(100)) + bytes(range(100)) +
            bytes(range(100 + 100, 255)))
        self.assertEqual(self.codebug.get_buffer(0, 101, 100),
                         bytes(range(100)) + bytes((range(255)[200], )))

    def test_draw_sprite(self):
        self.codebug.clear()

        def fill_sprite(s):
            for x in range(s.width):
                for y in range(s.height):
                    s.set_pixel(x, y, 1)

        sprite = Sprite(4, 4)
        fill_sprite(sprite)

        self.codebug.draw_sprite(0, 0, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x00)
        self.assertEqual(self.codebug.get_row(3), 0x1E)
        self.assertEqual(self.codebug.get_row(2), 0x1E)
        self.assertEqual(self.codebug.get_row(1), 0x1E)
        self.assertEqual(self.codebug.get_row(0), 0x1E)

        self.codebug.draw_sprite(1, 1, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x0F)
        self.assertEqual(self.codebug.get_row(3), 0x0F)
        self.assertEqual(self.codebug.get_row(2), 0x0F)
        self.assertEqual(self.codebug.get_row(1), 0x0F)
        self.assertEqual(self.codebug.get_row(0), 0x00)

        sprite = Sprite(2, 3)
        fill_sprite(sprite)
        self.codebug.draw_sprite(0, 0, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x00)
        self.assertEqual(self.codebug.get_row(3), 0x00)
        self.assertEqual(self.codebug.get_row(2), 0x18)
        self.assertEqual(self.codebug.get_row(1), 0x18)
        self.assertEqual(self.codebug.get_row(0), 0x18)

        sprite = Sprite(3, 3)
        fill_sprite(sprite)
        sprite.set_pixel(1, 2, 0)  # key the sprite

        self.codebug.draw_sprite(0, 0, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x00)
        self.assertEqual(self.codebug.get_row(3), 0x00)
        self.assertEqual(self.codebug.get_row(2), 0x14)
        self.assertEqual(self.codebug.get_row(1), 0x1C)
        self.assertEqual(self.codebug.get_row(0), 0x1C)

        self.codebug.draw_sprite(2, 2, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x05)
        self.assertEqual(self.codebug.get_row(3), 0x07)
        self.assertEqual(self.codebug.get_row(2), 0x07)
        self.assertEqual(self.codebug.get_row(1), 0x00)
        self.assertEqual(self.codebug.get_row(0), 0x00)

        hello_str = StringSprite('Hello!')
        self.codebug.draw_sprite(0, 0, hello_str)
        self.assertEqual(self.codebug.get_row(4), 0x12)
        self.assertEqual(self.codebug.get_row(3), 0x12)
        self.assertEqual(self.codebug.get_row(2), 0x1E)
        self.assertEqual(self.codebug.get_row(1), 0x12)
        self.assertEqual(self.codebug.get_row(0), 0x12)
        self.codebug.draw_sprite(-7, 0, hello_str)
        self.assertEqual(self.codebug.get_row(4), 0x03)
        self.assertEqual(self.codebug.get_row(3), 0x11)
        self.assertEqual(self.codebug.get_row(2), 0x19)
        self.assertEqual(self.codebug.get_row(1), 0x01)
        self.assertEqual(self.codebug.get_row(0), 0x1B)
Ejemplo n.º 7
0
 def setUp(self):
     self.codebug = CodeBug()
Ejemplo n.º 8
0
class TestCodeBug(unittest.TestCase):

    def setUp(self):
        self.codebug = CodeBug()

    def test_get_input(self):
        # configure as inputs
        for i in range(7):
            self.codebug.set_leg_io(i, 1)
        # and just print them
        for i in ['A', 'B'] + list(range(8)):
            print("Input {} is {}".format(i, self.codebug.get_input(i)))

    def test_set_output(self):
        num_outputs = 8
        for i in range(num_outputs):
            self.codebug.set_leg_io(i, 0)  # set to output
            self.codebug.set_output(i, 1)  # set to ON

        # check that they are all on
        for i in range(num_outputs):
            self.assertEqual(self.codebug.get_output(i), 1)

        # then turn off again
        for i in range(num_outputs):
            self.codebug.set_output(i, 0)  # set to OFF

    def test_set_leg_io(self):
        self.codebug.set_leg_io(0, 0)
        self.codebug.set_leg_io(1, 1)
        self.codebug.set_leg_io(2, 0)
        self.codebug.set_leg_io(3, 1)
        self.codebug.set_leg_io(4, 0)
        self.codebug.set_leg_io(5, 1)
        self.codebug.set_leg_io(6, 0)
        self.codebug.set_leg_io(7, 1)
        value = struct.unpack('B',
                              self.codebug.get(CHANNEL_INDEX_IO_DIRECTION))[0]
        self.assertEqual(value, 0xAA)

        self.codebug.set_leg_io(0, 1)
        self.codebug.set_leg_io(1, 0)
        self.codebug.set_leg_io(2, 1)
        self.codebug.set_leg_io(3, 0)
        self.codebug.set_leg_io(4, 1)
        self.codebug.set_leg_io(5, 0)
        self.codebug.set_leg_io(6, 1)
        self.codebug.set_leg_io(7, 0)
        value = struct.unpack('B',
                              self.codebug.get(CHANNEL_INDEX_IO_DIRECTION))[0]
        self.assertEqual(value, 0x55)

        # safely back to inputs
        for i in range(7):
            self.codebug.set_leg_io(i, 1)

    def test_clear(self):
        self.codebug.clear()
        rows = struct.unpack('B'*5, self.codebug.get_bulk(0, 5))
        self.assertEqual(rows, (0,)*5)

    def test_set_row(self):
        for test_value in (0x0A, 0x15):
            for i in range(5):
                self.codebug.set_row(i, test_value)
            rows = self.codebug.get_bulk(0, 5)
            self.assertEqual(rows, bytes((test_value,)*5))
        self.codebug.clear()

    def test_get_row(self):
        for test_value in (0x0A, 0x15):
            self.codebug.set_bulk(0, (test_value,)*5)
            for i in range(5):
                self.assertEqual(self.codebug.get_row(i), test_value)
        self.codebug.clear()

    def test_set_col(self):
        for i in range(5):
            self.codebug.set_col(i, 0x0A)
        rows = struct.unpack('B'*5, self.codebug.get_bulk(0, 5))
        self.assertEqual(rows, (0x00, 0x1F, 0x00, 0x1F, 0x00))
        self.codebug.clear()

        for i in range(5):
            self.codebug.set_col(i, 0x15)
        rows = struct.unpack('B'*5, self.codebug.get_bulk(0, 5))
        self.assertEqual(rows, (0x1F, 0x00, 0x1F, 0x00, 0x1F))
        self.codebug.clear()

    def test_get_col(self):
        self.codebug.set_bulk(0, (0x00, 0x1F, 0x00, 0x1F, 0x00))
        for i in range(5):
            self.assertEqual(self.codebug.get_col(i), 0x0A)
        self.codebug.clear()
        self.codebug.set_bulk(0, (0x1F, 0x00, 0x1F, 0x00, 0x1F))
        for i in range(5):
            self.assertEqual(self.codebug.get_col(i), 0x15)
        self.codebug.clear()

    def test_set_pixel(self):
        self.codebug.clear()
        for y in range(5):
            for x in range(5):
                self.codebug.set_pixel(x, y, 1)
                value = struct.unpack('B', self.codebug.get(y))[0]
                self.assertEqual(value, 1 << (4-x))
                self.codebug.set_pixel(x, y, 0)

    def test_get_pixel(self):
        self.codebug.clear()
        for y in range(5):
            for x in range(5):
                for i in range(2):
                    self.codebug.set_pixel(x, y, i)
                    get_value = self.codebug.get_pixel(x, y)
                    self.assertEqual(get_value, i)

    def test_get_set_buffer(self):
        v = bytes(range(255))
        self.codebug.set_buffer(0, v)
        self.assertEqual(self.codebug.get_buffer(0, len(v)), v)
        v = bytes(range(100))
        self.codebug.set_buffer(0, v, 100)
        self.assertEqual(self.codebug.get_buffer(0, 255),
                         bytes(range(100))+bytes(range(100))+bytes(range(100+100, 255)))
        self.assertEqual(self.codebug.get_buffer(0, 101, 100),
                         bytes(range(100))+bytes((range(255)[200],)))

    def test_draw_sprite(self):
        self.codebug.clear()

        def fill_sprite(s):
            for x in range(s.width):
                for y in range(s.height):
                    s.set_pixel(x, y, 1)

        sprite = Sprite(4, 4)
        fill_sprite(sprite)

        self.codebug.draw_sprite(0, 0, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x00)
        self.assertEqual(self.codebug.get_row(3), 0x1E)
        self.assertEqual(self.codebug.get_row(2), 0x1E)
        self.assertEqual(self.codebug.get_row(1), 0x1E)
        self.assertEqual(self.codebug.get_row(0), 0x1E)

        self.codebug.draw_sprite(1, 1, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x0F)
        self.assertEqual(self.codebug.get_row(3), 0x0F)
        self.assertEqual(self.codebug.get_row(2), 0x0F)
        self.assertEqual(self.codebug.get_row(1), 0x0F)
        self.assertEqual(self.codebug.get_row(0), 0x00)

        sprite = Sprite(2, 3)
        fill_sprite(sprite)
        self.codebug.draw_sprite(0, 0, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x00)
        self.assertEqual(self.codebug.get_row(3), 0x00)
        self.assertEqual(self.codebug.get_row(2), 0x18)
        self.assertEqual(self.codebug.get_row(1), 0x18)
        self.assertEqual(self.codebug.get_row(0), 0x18)

        sprite = Sprite(3, 3)
        fill_sprite(sprite)
        sprite.set_pixel(1, 2, 0) # key the sprite

        self.codebug.draw_sprite(0, 0, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x00)
        self.assertEqual(self.codebug.get_row(3), 0x00)
        self.assertEqual(self.codebug.get_row(2), 0x14)
        self.assertEqual(self.codebug.get_row(1), 0x1C)
        self.assertEqual(self.codebug.get_row(0), 0x1C)

        self.codebug.draw_sprite(2, 2, sprite)
        self.assertEqual(self.codebug.get_row(4), 0x05)
        self.assertEqual(self.codebug.get_row(3), 0x07)
        self.assertEqual(self.codebug.get_row(2), 0x07)
        self.assertEqual(self.codebug.get_row(1), 0x00)
        self.assertEqual(self.codebug.get_row(0), 0x00)

        hello_str = StringSprite('Hello!')
        self.codebug.draw_sprite(0, 0, hello_str)
        self.assertEqual(self.codebug.get_row(4), 0x12)
        self.assertEqual(self.codebug.get_row(3), 0x12)
        self.assertEqual(self.codebug.get_row(2), 0x1E)
        self.assertEqual(self.codebug.get_row(1), 0x12)
        self.assertEqual(self.codebug.get_row(0), 0x12)
        self.codebug.draw_sprite(-7, 0, hello_str)
        self.assertEqual(self.codebug.get_row(4), 0x03)
        self.assertEqual(self.codebug.get_row(3), 0x11)
        self.assertEqual(self.codebug.get_row(2), 0x19)
        self.assertEqual(self.codebug.get_row(1), 0x01)
        self.assertEqual(self.codebug.get_row(0), 0x1B)