def test_that_GIVEN_the_last_bit_on_THEN_one_is_returned(self):
        # Given:
        word = [False, False, False, True]

        # When:
        result = convert_to_hexadecimal(word, 2)

        # Then:
        expected = "01"
        assert_that(result, is_(equal_to(expected)))
    def test_that_GIVEN_4_off_bits_THEN_0_is_returned(self):
        # Given:
        word = [False, False, False, False]

        # When:
        result = convert_to_hexadecimal(word, 1)

        # Then:
        expected = "0"
        assert_that(result, is_(equal_to(expected)))
    def test_that_GIVEN_32_bits_THEN_a_zero_padded_8_digit_hex_number_is_returned(
            self):
        # Given:
        bits = [False for _ in range(0, 32)]

        # When:
        result = convert_to_hexadecimal(bits, 8)

        # Then:
        expected = "0" * 8
        assert_that(result, is_(equal_to(expected)))
    def test_that_GIVEN_a_byte_and_padding_of_5_THEN_a_5_padded_two_digit_hex_character_is_returned(
            self):
        # Given:
        word = [True, False, False, False, True, True, False, False]

        # When:
        result = convert_to_hexadecimal(word, 5)

        # Then:
        expected = "0" * 3 + "8C"
        assert_that(result, is_(equal_to(expected)))
    def test_that_GIVEN_32_bits_with_5th_bit_on_THEN_00000010_is_returned(
            self):
        # Given:
        bits = [False for _ in range(0, 32)]
        bits[-5] = True

        # When:
        result = convert_to_hexadecimal(bits, 8)

        # Then:
        expected = "0" * 6 + "10"
        assert_that(result, is_(equal_to(expected)))