Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 56 additions & 2 deletions easyPythonpi/TestBin2Hex.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,62 @@ def test_invalid_regexpression(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2hex('[0-1]')


# class TestBin2Octal(unittest.TestCase):

class TestBin2Octal(unittest.TestCase):
def test_single_binary_zero(self):
self.assertEqual( easyPythonpi.bin2oct('0'), '0')
def test_single_binary_one(self):
self.assertEqual( easyPythonpi.bin2oct('1'), '1')
def test_single_binary_triple_zero(self):
self.assertEqual( easyPythonpi.bin2oct('000'), '0')
def test_single_binary_001(self):
self.assertEqual( easyPythonpi.bin2oct('001'), '1')
def test_single_binary_010(self):
self.assertEqual( easyPythonpi.bin2oct('010'), '2')
def test_single_binary_011(self):
self.assertEqual( easyPythonpi.bin2oct('011'), '3')
def test_single_binary_100(self):
self.assertEqual( easyPythonpi.bin2oct('100'), '4')
def test_single_binary_101(self):
self.assertEqual( easyPythonpi.bin2oct('101'), '5')
def test_single_binary_110(self):
self.assertEqual( easyPythonpi.bin2oct('110'), '6')
def test_single_binary_111(self):
self.assertEqual( easyPythonpi.bin2oct('111'), '7')
def test_single_binary_000010(self):
self.assertEqual( easyPythonpi.bin2oct('000010'), '02')
def test_single_binary_00010(self):
self.assertEqual( easyPythonpi.bin2oct('00010'), '02')
def test_invalid_binary_A(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('A')
def test_invalid_binary_123(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('123')
def test_invalid_binary_0101A1000100(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('0101A1000100')
def test_invalid_binary_A101100010B(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('A101100010B')
def test_invalid_binary_nonalphanumeric(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('!')
def test_invalid_binary_nonalphanumeric_in_binary(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('001~')
def test_invalid_binary_subtraction(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('0000-1000')
def test_invalid_binary_anding(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('0000&1000')
def test_invalid_helloWorld_expression(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('hello world')
def test_invalid_regexpression(self):
with self.assertRaises(easyPythonpi.InvalidBinaryException):
easyPythonpi.bin2oct('[0-1]')

if __name__ == '__main__':
unittest.main()
46 changes: 46 additions & 0 deletions easyPythonpi/TestFibRefactored.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import unittest
import easyPythonpi
from easyPythonpi import InvalidNumberFibException

class TestFibRefactored(unittest.TestCase):

def test_fibonacci_0(self):
with self.assertRaises(easyPythonpi.InvalidNumberFibException):
easyPythonpi.fibonacci(0)

def test_fibonacci_negative_number(self):
with self.assertRaises(easyPythonpi.InvalidNumberFibException):
easyPythonpi.fibonacci(-10)

def test_fibonacci_1(self):
self.assertEqual( easyPythonpi.fibonacci(1), 0)

def test_fibonacci_2(self):
self.assertEqual( easyPythonpi.fibonacci(2), 1)

def test_fibonacci_3(self):
self.assertEqual( easyPythonpi.fibonacci(3), 1)

def test_fibonacci_4(self):
self.assertEqual( easyPythonpi.fibonacci(4), 2)

def test_fibonacci_5(self):
self.assertEqual( easyPythonpi.fibonacci(5), 3)

def test_fibonacci_6(self):
self.assertEqual( easyPythonpi.fibonacci(6), 5)

def test_fibonacci_7(self):
self.assertEqual( easyPythonpi.fibonacci(7), 8)

def test_fibonacci_8(self):
self.assertEqual( easyPythonpi.fibonacci(8), 13)

def test_fibonacci_9(self):
self.assertEqual( easyPythonpi.fibonacci(9), 21)

def test_fibonacci_10(self):
self.assertEqual( easyPythonpi.fibonacci(10), 34)

if __name__ == '__main__':
unittest.main()
Binary file not shown.
80 changes: 76 additions & 4 deletions easyPythonpi/easyPythonpi.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,17 +41,42 @@ def Perimeter_circle(r:'float')->'float': # To find the perimeter of a circle us
PI = 3.142
return 2 * PI * r


def fibonacci(n:'int')->'int': #To find the nth fibonacci series
if n<0:
print("Incorrect input")
"""Finds the fibonacci of the nth sequence.

This function calculates the fibonacci sequence. This function calculates
the nth fibonacci of a number by finding the sum of two numbers in the
fibonacci sequence before n

Args:
n ('int') : The number to find the fibonacci sequence of, assumes n >=1
as valid numbers to find the fibonacci of n.

Returns:
The fibonacci of arg n.

Raises:
No errors
"""
if n<=0:
raise InvalidNumberFibException(n)
# First Fibonacci number is 0
elif n==1:
return 0
# Second Fibonacci number is 1
elif n==2:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
fib1 = 0
fib2 = 1

for i in range(2,n-1):
fibN = fib1 + fib2
fib1 = fib2
fib2 = fibN

return fib1 +fib2

def sort(list:'list'): # To bubble sort and array or list
for i in range(len(list) - 1, 0, -1):
Expand Down Expand Up @@ -208,8 +233,50 @@ def bin2hex(x:'bin')->'hex':
h = 'E' + h
elif substring == '1111':
h = 'F' + h

return h


return h
def bin2oct(x:'bin')->'oct':
o = '' # hexadecimal number converted from binary and to be returned

x=str(x)

# Determine if the string has invalid characters
if re.search('[^(0-1)]', x):
raise InvalidBinaryException

# Get the length of the string
l=len(x)

# Begin the process of converting x to its hexadecimal number

# If the length is not a multiple of 3, prepend 0's before converting
if l % 3 != 0:
numZerosPrepended = 3 - ( l % 3 ) # number of zeros to prepend
x = (numZerosPrepended * '0') + x # concatenate numZerosPrepended to x

for i in range(len(x), 0, -3):
substring = x[i-3:i]

if substring == '000':
o = '0' + o
elif substring == '001':
o = '1' + o
elif substring == '010':
o = '2' + o
elif substring == '011':
o = '3' + o
elif substring == '100':
o = '4' + o
elif substring == '101':
o = '5' + o
elif substring == '110':
o = '6' + o
elif substring == '111':
o = '7' + o

return o

def createarray(length:'int',dtype='int')->'array': # To create an array of entered length and entered data type(interger data type is a default data type)
import numpy as np
Expand Down Expand Up @@ -420,3 +487,8 @@ def count_vowels(ip_str:'str')->'int':
# define exception for invalid Binary Strings
class InvalidBinaryException(Exception):
pass

class InvalidNumberFibException(Exception):
def __init__(self, n, message="n is not valid, must be greater than or equal to 1"):
self.n = n
self.message = message