def test_SmartNixieTubeDisplay_set_one_tube_display_numbers(self):
        # set one tube
        number_of_tubes_in_display = 1
        display = SmartNixieTubeDisplay(number_of_tubes_in_display, serial_port_name=self.inputPort)

        display.set_display_number(9)
        self.assertEqual('$9,N,N,000,000,000,000!', display.generate_command_string())
    def test_SmartNixieTubeDisplay_2tubes_generateCommandString(self):
        number_of_tubes_in_display = 2
        display = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                        serial_port_name=self.inputPort)

        self.assertEqual('$-,N,N,000,000,000,000$-,N,N,000,000,000,000!',
                         display.generate_command_string())
    def test_SmartNixieTubeDisplay_set_one_tube_display_numbers(self):
        # set one tube
        number_of_tubes_in_display = 1
        display = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                        serial_port_name=self.inputPort)

        display.set_display_number(9)
        self.assertEqual('$9,N,N,000,000,000,000!',
                         display.generate_command_string())
    def test_SmartNixieTubeDisplay_3tubes_nonDefault_generateCommandString(self):
        number_of_tubes_in_display = 3
        display = SmartNixieTubeDisplay(number_of_tubes_in_display, serial_port_name=self.inputPort)

        display.tubes[0].digit = '0'
        display.tubes[1].digit = '1'
        display.tubes[2].digit = '2'

        self.assertEqual('$2,N,N,000,000,000,000$1,N,N,000,000,000,000$0,N,N,000,000,000,000!',
                         display.generate_command_string())
    def test_init_display_brightness(self):
        # set one tube
        number_of_tubes_in_display = 1
        display = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                        serial_port_name=self.inputPort)

        display.brightness = 128
        self.assertEqual('$-,N,N,128,000,000,000!',
                         display.generate_command_string())

        # set two tubes
        number_of_tubes_in_display = 2
        tube_display = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                             serial_port_name=self.inputPort)
        display2 = tube_display

        display2.brightness = 128
        self.assertEqual('$-,N,N,128,000,000,000$-,N,N,128,000,000,000!',
                         display2.generate_command_string())

        # set three tubes
        number_of_tubes_in_display = 3
        display3 = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                         serial_port_name=self.inputPort)

        display3.brightness = 128
        self.assertEqual(
            '$-,N,N,128,000,000,000$-,N,N,128,000,000,000$-,N,N,128,000,000,000!',
            display3.generate_command_string())
Exemplo n.º 6
0
    def test_generateCommandString(self):
        tube = SmartNixieTubeDisplay.SmartNixieTube()
        self.assertEqual('$-,N,N,000,000,000,000', tube.generate_command_string())

        tube2 = SmartNixieTubeDisplay.SmartNixieTube('9', left_decimal_point=False, right_decimal_point=False,
                                                     brightness=128, red=0, green=255, blue=255)
        self.assertEqual('$9,N,N,128,000,255,255', tube2.generate_command_string())

        tube3 = SmartNixieTubeDisplay.SmartNixieTube('5', left_decimal_point=False, right_decimal_point=False,
                                                     brightness=28, red=0, green=10, blue=1)
        self.assertEqual('$5,N,N,028,000,010,001', tube3.generate_command_string())
Exemplo n.º 7
0
    def test_init_green_out_of_range(self):
        try:
            self.assertRaises(ValueError, SmartNixieTubeDisplay.SmartNixieTube(green=-1))  # this should fail
            self.fail("Didn't raise ValueError")
        except ValueError as e:
            self.assertEqual('Green must be between 0-255', str(e))

        try:
            self.assertRaises(ValueError, SmartNixieTubeDisplay.SmartNixieTube(green=256))  # this should fail
            self.fail("Didn't raise ValueError")
        except ValueError as e:
            self.assertEqual('Green must be between 0-255', str(e))
    def test_SmartNixieTubeDisplay_3tubes_nonDefault_generateCommandString(
            self):
        number_of_tubes_in_display = 3
        display = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                        serial_port_name=self.inputPort)

        display.tubes[0].digit = '0'
        display.tubes[1].digit = '1'
        display.tubes[2].digit = '2'

        self.assertEqual(
            '$2,N,N,000,000,000,000$1,N,N,000,000,000,000$0,N,N,000,000,000,000!',
            display.generate_command_string())
    def test_SmartNixieTubeDisplay_set_two_tube_display_numbers(self):
        # set two tubes
        number_of_tubes_in_display = 2
        display2 = SmartNixieTubeDisplay(number_of_tubes_in_display, serial_port_name=self.inputPort)

        display2.set_display_number(9)
        self.assertEqual('$9,N,N,000,000,000,000$0,N,N,000,000,000,000!', display2.generate_command_string())

        display2.set_display_number(90)
        self.assertEqual('$0,N,N,000,000,000,000$9,N,N,000,000,000,000!', display2.generate_command_string())

        display2.set_display_number(99)
        self.assertEqual('$9,N,N,000,000,000,000$9,N,N,000,000,000,000!', display2.generate_command_string())
    def test_SmartNixieTubeDisplay_set_display_numbers_out_of_bounds(self):
        number_of_tubes_in_display = 1
        display = SmartNixieTubeDisplay(number_of_tubes_in_display, serial_port_name=self.inputPort)

        try:
            self.assertRaises(ValueError, display.set_display_number(-1))  # this should fail
            self.fail("Didn't raise ValueError")
        except ValueError as e:
            self.assertEqual(str(e), 'Display number must be positive')

        try:
            self.assertRaises(ValueError, display.set_display_number(10))  # this should fail (too many digits)
            self.fail("Didn't raise ValueError")
        except ValueError as e:
            self.assertEqual(str(e), 'Not enough tubes to display all digits')
Exemplo n.º 11
0
 def test_init_rightDecimalPoint_wrong_type(self):
     try:
         self.assertRaises(TypeError,
                           SmartNixieTubeDisplay.SmartNixieTube(right_decimal_point=-1))  # this should fail
         self.fail("Didn't raise TypeError")
     except TypeError as e:
         self.assertEqual('Right decimal point must be of type bool', str(e))
    def test_SmartNixieTubeDisplay_init_with_one_tube(self):
        number_of_tubes_in_display = 1
        display = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                        serial_port_name=self.inputPort)

        self.assertEqual(len(display.tubes), number_of_tubes_in_display)
        self.assertEqual('$-,N,N,000,000,000,000',
                         display.tubes[0].generate_command_string())
    def test_SmartNixieTubeDisplay_init_with_two_tubes(self):
        number_of_tubes_in_display = 2
        display = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                        serial_port_name=self.inputPort)

        self.assertEqual(len(display.tubes), number_of_tubes_in_display)
        for tube in display.tubes:
            self.assertEqual('$-,N,N,000,000,000,000',
                             tube.generate_command_string())
Exemplo n.º 14
0
 def test_init_defaults(self):
     tube = SmartNixieTubeDisplay.SmartNixieTube()
     self.assertEqual('-', tube.digit)
     self.assertEqual(False, tube.left_decimal_point)
     self.assertEqual(False, tube.right_decimal_point)
     self.assertEqual(0, tube.brightness)
     self.assertEqual(0, tube.blue)
     self.assertEqual(0, tube.green)
     self.assertEqual(0, tube.red)
Exemplo n.º 15
0
    def test_turnOff(self):
        # turn on anything, check that it's on
        tube = SmartNixieTubeDisplay.SmartNixieTube('9', left_decimal_point=False, right_decimal_point=False,
                                                    brightness=128, red=0, green=255, blue=255)
        self.assertEqual('$9,N,N,128,000,255,255', tube.generate_command_string())

        # test that the generate command string sends out zeros and a dash after turn_off()
        tube.turn_off()
        self.assertEqual('$-,N,N,000,000,000,000', tube.generate_command_string())
    def test_SmartNixieTubeDisplay_set_display_numbers_out_of_bounds(self):
        number_of_tubes_in_display = 1
        display = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                        serial_port_name=self.inputPort)

        try:
            self.assertRaises(
                ValueError, display.set_display_number(-1))  # this should fail
            self.fail("Didn't raise ValueError")
        except ValueError as e:
            self.assertEqual(str(e), 'Display number must be positive')

        try:
            self.assertRaises(ValueError, display.set_display_number(
                10))  # this should fail (too many digits)
            self.fail("Didn't raise ValueError")
        except ValueError as e:
            self.assertEqual(str(e), 'Not enough tubes to display all digits')
    def test_SmartNixieTubeDisplay_initialisation_with_no_tubes(self):
        number_of_tubes_in_display = 0

        try:
            self.assertRaises(
                ValueError, SmartNixieTubeDisplay(
                    number_of_tubes_in_display))  # this should fail
            self.fail("Didn't raise ValueError")
        except ValueError as e:
            self.assertEqual(
                'number_of_tubes_in_display must be greater than 0', str(e))
    def test_sendCommand_3tubes_nonDefault(self):
        number_of_tubes_in_display = 3
        display = SmartNixieTubeDisplay(number_of_tubes_in_display, serial_port_name=self.output_port)

        display.set_display_number(909)
        # this should equal: '$9,N,N,000,000,000,000$0,N,N,000,000,000,000$9,N,N,000,000,000,000!'

        read_from_port = serial.Serial(
            port=self.input_port,
            baudrate=115200,
            bytesize=serial.EIGHTBITS,
            parity=serial.PARITY_NONE,
            stopbits=serial.STOPBITS_ONE
        )

        display.send_command()

        if read_from_port.isOpen():
            last_received = b''
            buffer_string = b''
            while last_received != b'!':
                last_received = read_from_port.readline(1)
                # print(last_received)
                buffer_string = buffer_string + last_received
                if b'!' in buffer_string:
                    # print(buffer_string)
                    self.assertEqual('$9,N,N,000,000,000,000$0,N,N,000,000,000,000$9,N,N,000,000,000,000!'.encode()
                                     , buffer_string)
        else:
            self.fail('read_from_port failed to open')

        read_from_port.close()
    def test_init_display_green_out_of_range(self):
        try:
            self.assertRaises(
                ValueError,
                SmartNixieTubeDisplay(
                    number_of_tubes_in_display=1,
                    green=-1,
                    serial_port_name=self.inputPort))  # this should fail
            self.fail("Didn't raise ValueError")
        except ValueError as e:
            self.assertEqual('Green must be between 0-255', str(e))

        try:
            self.assertRaises(
                ValueError,
                SmartNixieTubeDisplay(
                    number_of_tubes_in_display=1,
                    green=256,
                    serial_port_name=self.inputPort))  # this should fail
            self.fail("Didn't raise ValueError")
        except ValueError as e:
            self.assertEqual('Green must be between 0-255', str(e))
    def test_init_display_blue(self):
        # set one tube
        number_of_tubes_in_display = 1
        display = SmartNixieTubeDisplay(number_of_tubes_in_display, serial_port_name=self.inputPort)

        display.blue = 128
        self.assertEqual('$-,N,N,000,000,000,128!', display.generate_command_string())

        # set two tubes
        number_of_tubes_in_display = 2
        display2 = SmartNixieTubeDisplay(number_of_tubes_in_display, serial_port_name=self.inputPort)

        display2.blue = 128
        self.assertEqual('$-,N,N,000,000,000,128$-,N,N,000,000,000,128!', display2.generate_command_string())

        # set three tubes
        number_of_tubes_in_display = 3
        display3 = SmartNixieTubeDisplay(number_of_tubes_in_display, serial_port_name=self.inputPort)

        display3.blue = 128
        self.assertEqual('$-,N,N,000,000,000,128$-,N,N,000,000,000,128$-,N,N,000,000,000,128!',
                         display3.generate_command_string())
Exemplo n.º 21
0
 def test_convertDigitToStringWithLeadingZeros(self):
     tube = SmartNixieTubeDisplay.SmartNixieTube()
     self.assertEqual('000', tube.convert_digit_to_string_with_leading_zeros(0))
     self.assertEqual('001', tube.convert_digit_to_string_with_leading_zeros(1))
     self.assertEqual('010', tube.convert_digit_to_string_with_leading_zeros(10))
     self.assertEqual('100', tube.convert_digit_to_string_with_leading_zeros(100))
    def test_SmartNixieTubeDisplay_set_three_tube_display_numbers(self):
        # set three tubes
        number_of_tubes_in_display = 3
        display3 = SmartNixieTubeDisplay(number_of_tubes_in_display,
                                         serial_port_name=self.inputPort)

        display3.set_display_number(9)
        self.assertEqual(
            '$9,N,N,000,000,000,000$0,N,N,000,000,000,000$0,N,N,000,000,000,000!',
            display3.generate_command_string())

        display3.set_display_number(99)
        self.assertEqual(
            '$9,N,N,000,000,000,000$9,N,N,000,000,000,000$0,N,N,000,000,000,000!',
            display3.generate_command_string())

        display3.set_display_number(909)
        self.assertEqual(
            '$9,N,N,000,000,000,000$0,N,N,000,000,000,000$9,N,N,000,000,000,000!',
            display3.generate_command_string())

        display3.set_display_number(990)
        self.assertEqual(
            '$0,N,N,000,000,000,000$9,N,N,000,000,000,000$9,N,N,000,000,000,000!',
            display3.generate_command_string())
Exemplo n.º 23
0
 def test_init_digits_not_a_number(self):
     tube = SmartNixieTubeDisplay.SmartNixieTube(digit='A', left_decimal_point=False, right_decimal_point=False,
                                                 brightness=0,
                                                 red=0, green=0,
                                                 blue=0)
     self.assertEqual('-', tube.digit)  # tube turned off if send something out of bounds.
Exemplo n.º 24
0
 def test_init_digit_in_range(self):
     tube = SmartNixieTubeDisplay.SmartNixieTube(digit='0')
     self.assertEqual('0', tube.digit)
 def test_SmartNixieTube_initialisation(self):
     number_of_tubes_in_display = 3
     smart_nixie_tube_display = SmartNixieTubeDisplay(
         number_of_tubes_in_display, serial_port_name=self.inputPort)
     self.assertEqual(smart_nixie_tube_display.number_of_tubes_in_display,
                      number_of_tubes_in_display)
Exemplo n.º 26
0
 def test_RightDecimalCommandString(self):
     tube = SmartNixieTubeDisplay.SmartNixieTube(right_decimal_point=True)
     self.assertEqual('$-,N,Y,000,000,000,000', tube.generate_command_string())
 def test_init_serialPort(self):
     try:
         self.assertRaises(TypeError, SmartNixieTubeDisplay(1, serial_port_name=-1), shell=True)  # this should fail
         self.fail("Didn't raise TypeError")
     except TypeError as e:
         self.assertEqual('serialPort must be of type str', str(e))
Exemplo n.º 28
0
    from smartnixietube.SmartNixieTube import SmartNixieTubeDisplay
except ImportError as e:
    import sys
    import os

    PACKAGE_PARENT = '..'
    SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__))))
    sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))

    from smartnixietube.SmartNixieTube import SmartNixieTubeDisplay

# set number of tubes in the display
numberOfTubesInDisplay = 3

# instantiate the display -- serial ports tested on Linux and Mac OS X.
display = SmartNixieTubeDisplay(numberOfTubesInDisplay, '/dev/tty.usbserial-A9QHHRFJ')  # '/dev/tty.usbserial-A9UD9RRV')

# all the properties can be set like this:
display.brightness = 255

for i in range(255):
    display.red = random.randint(0, 255)
    display.green = random.randint(0, 255)
    display.blue = random.randint(0, 255)

    # set the display number
    display.set_display_number(i)  # random.randint(0,999))

    # send the command set to the display
    display.send_command()
Exemplo n.º 29
0
    import os

    PACKAGE_PARENT = '..'
    SCRIPT_DIR = os.path.dirname(
        os.path.realpath(
            os.path.join(os.getcwd(), os.path.expanduser(__file__))))
    sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT)))

    from smartnixietube.SmartNixieTube import SmartNixieTubeDisplay

# set number of tubes in the display
numberOfTubesInDisplay = 3

# instantiate the display -- serial ports tested on Linux and Mac OS X.
display = SmartNixieTubeDisplay(
    numberOfTubesInDisplay,
    '/dev/tty.usbserial-A9QHHRFJ')  # '/dev/tty.usbserial-A9UD9RRV')

# all the properties can be set like this:
display.brightness = 255

for i in range(255):
    display.red = random.randint(0, 255)
    display.green = random.randint(0, 255)
    display.blue = random.randint(0, 255)

    # set the display number
    display.set_display_number(i)  # random.randint(0,999))

    # send the command set to the display
    display.send_command()
Exemplo n.º 30
0
 def test_convertFromBoolToYN(self):
     tube = SmartNixieTubeDisplay.SmartNixieTube()
     self.assertEqual(tube.convert_from_bool_to_yn(True), 'Y')
     self.assertEqual(tube.convert_from_bool_to_yn(False), 'N')
    def test_SmartNixieTubeDisplay_3tubes_generateCommandString(self):
        number_of_tubes_in_display = 3
        display = SmartNixieTubeDisplay(number_of_tubes_in_display, serial_port_name=self.inputPort)

        self.assertEqual('$-,N,N,000,000,000,000$-,N,N,000,000,000,000$-,N,N,000,000,000,000!',
                         display.generate_command_string())