Skip to content

Commit

Permalink
fixed py formatting
Browse files Browse the repository at this point in the history
fixed py formatting
  • Loading branch information
MarcDarazi99 committed Jan 11, 2025
1 parent e4b83ca commit ffc5cf5
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 12 deletions.
9 changes: 6 additions & 3 deletions solutions/hex_to_binary.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
"""
hex_to_binary.py
This module provides a utility function to convert a hexadecimal string
to its binary representation.
Functions:
- hex_to_binary: Converts a hexadecimal string to its binary equivalent.
Author: Marc Darazi
"""


def hex_to_binary(hex_string):
"""
Convert a hexadecimal string to its binary representation.
Expand All @@ -28,11 +29,13 @@ def hex_to_binary(hex_string):
'11010'
>>> hex_to_binary("0xFF")
'11111111'
>>> hex_to_binary("0x0")
'0'
"""
# Remove '0x' prefix if present
if hex_string.startswith("0x"):
hex_string = hex_string[2:]

try:
# Convert to integer, then to binary
binary_string = bin(int(hex_string, 16))[2:] # Remove '0b' prefix
Expand Down
26 changes: 17 additions & 9 deletions solutions/tests/test_hex_to_binary.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
"""
This module provides a utility function to convert a hexadecimal string
to its binary representation.
Functions:
- hex_to_binary: Converts a hexadecimal string to its binary equivalent.
Author: Marc Darazi
"""

import unittest
from hex_to_binary import hex_to_binary


class TestHexToBinary(unittest.TestCase):
"""
Unit tests for the hex_to_binary function.
Expand All @@ -9,44 +20,41 @@ class TestHexToBinary(unittest.TestCase):
hexadecimal strings to binary strings, handling both cases with and
without the '0x' prefix and invalid inputs.
"""

def test_valid_hex_without_prefix(self):
"""
Test converting a valid hexadecimal string without the '0x' prefix.
"""
self.assertEqual(hex_to_binary("1A"), "11010")

def test_valid_hex_with_prefix(self):
"""
Test converting a valid hexadecimal string with the '0x' prefix.
"""
self.assertEqual(hex_to_binary("0xFF"), "11111111")

def test_single_digit_hex(self):
"""
Test converting a single digit hexadecimal string.
"""
self.assertEqual(hex_to_binary("9"), "1001")

def test_hex_with_lowercase_letters(self):
"""
Test converting a hexadecimal string with lowercase letters.
"""
self.assertEqual(hex_to_binary("a"), "1010")

def test_invalid_hex_with_non_hex_characters(self):
"""
Test an invalid hexadecimal string with non-hex characters.
"""
with self.assertRaises(ValueError):
hex_to_binary("G1")

def test_empty_string(self):
"""
Test an empty string as input, which should raise a ValueError.
"""
with self.assertRaises(ValueError):
hex_to_binary("")

if __name__ == "_main_":
unittest.main()

0 comments on commit ffc5cf5

Please sign in to comment.