From 9183f8aecb3ea946286529ab1ccdb5d9b275bf85 Mon Sep 17 00:00:00 2001 From: declanjcasey Date: Tue, 7 Sep 2021 12:45:24 -0400 Subject: [PATCH 1/8] began initial code, not completed --- .DS_Store | Bin 0 -> 6148 bytes code/SoftwritersCodeChallenge/src/__init__.py | 0 .../src/cash_register.py | 50 ++++++++++++++++++ code/SoftwritersCodeChallenge/src/file.csv | 3 ++ .../tests/__innit__.py | 0 5 files changed, 53 insertions(+) create mode 100644 .DS_Store create mode 100644 code/SoftwritersCodeChallenge/src/__init__.py create mode 100644 code/SoftwritersCodeChallenge/src/cash_register.py create mode 100644 code/SoftwritersCodeChallenge/src/file.csv create mode 100644 code/SoftwritersCodeChallenge/tests/__innit__.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f6acbf046507c0bff64736968ec1c3d905fe0156 GIT binary patch literal 6148 zcmeHK%}&EG47Q<2mALH4F|V-mE@dhwj(q{N6>UQ8GJ)V6o{h)gW%wMMiE0tIAwag2 ze2)Lpeo~W~hbH~_!>)&sWxH;5*=^l4O+-*<~Ji0go&VV!E3^)TP zWx(#5`tqc^cyVXI8Tg9~$oUX31RKMon2!!jxdi}LFlT`-y@cch!^SWv!UJJV1!^i= zi@}->d$731Fez#}u{9rTJAXDWoOeh4ki&@^MW3AkXJE>}xh`jN|KH$~DK`1j6kj<5 z&cHuofUCA^mv||=TaR8(?%IHHhan= DENOMINATIONS['hundred_dollar'] + + + +def calculate_random_denomonations(change): + initial_change = change + + + + +for line in file: + (total, paid) = line + total = Decimal(total) + paid = Decimal(paid) + change = calculate_change(total, paid) + print(change) + # check if change is not divisble by three + if (change % 3) != 0: + change = calculate_minimum_denominations(change) + else: + change = calculate_random_denomonations(change) + return change \ No newline at end of file diff --git a/code/SoftwritersCodeChallenge/src/file.csv b/code/SoftwritersCodeChallenge/src/file.csv new file mode 100644 index 00000000..fba6116f --- /dev/null +++ b/code/SoftwritersCodeChallenge/src/file.csv @@ -0,0 +1,3 @@ +2.12,3.00 +1.97,2.00 +3.33,5.00 \ No newline at end of file diff --git a/code/SoftwritersCodeChallenge/tests/__innit__.py b/code/SoftwritersCodeChallenge/tests/__innit__.py new file mode 100644 index 00000000..e69de29b From 8fe7578aaa27563a601c486ee394514b046f1c21 Mon Sep 17 00:00:00 2001 From: declanjcasey Date: Tue, 7 Sep 2021 12:50:33 -0400 Subject: [PATCH 2/8] Restructred files --- .DS_Store | Bin 6148 -> 6148 bytes .../src => src}/__init__.py | 0 .../src => src}/cash_register.py | 0 .../src => src}/file.csv | 0 .../tests => tests}/__innit__.py | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename {code/SoftwritersCodeChallenge/src => src}/__init__.py (100%) rename {code/SoftwritersCodeChallenge/src => src}/cash_register.py (100%) rename {code/SoftwritersCodeChallenge/src => src}/file.csv (100%) rename {code/SoftwritersCodeChallenge/tests => tests}/__innit__.py (100%) diff --git a/.DS_Store b/.DS_Store index f6acbf046507c0bff64736968ec1c3d905fe0156..1cd4ddeb42f73f260fc64559ded379e41c84dd8b 100644 GIT binary patch literal 6148 zcmeHKOHRW;4E6LQ1;L_A1e>`+ZxBj20O|!$TLhI_5|MPDeYf0$LvRTeY!F)x!SmQE zGfELVK**LnZ!)&WnwMxC6Oo&27Gt6j5oJ)u-T{U^!gkh<^mOG2=)xY&>SjEhm+PwI zYYTsq0e*KwTGAa=w4r_PFS4%7qL{798Dg@B=k57R{dAVbugk?Z9@TB<3+Yo$_cTwx zo#7#NR!f}sa(nvvCV6+(&zxOrn$KfXoVTHCB`mu~2NHo+39Z0|Nsi1A_oVPWt3L=8g3rJ_|!KLq05D)@&y^#%oc)JTozoEmy@5D4m6N) qb0c#b%jOBpPZ>9}bMSKjoemWF&ODi4#F7K#Dxm9`HV24oVFmzokT6{U diff --git a/code/SoftwritersCodeChallenge/src/__init__.py b/src/__init__.py similarity index 100% rename from code/SoftwritersCodeChallenge/src/__init__.py rename to src/__init__.py diff --git a/code/SoftwritersCodeChallenge/src/cash_register.py b/src/cash_register.py similarity index 100% rename from code/SoftwritersCodeChallenge/src/cash_register.py rename to src/cash_register.py diff --git a/code/SoftwritersCodeChallenge/src/file.csv b/src/file.csv similarity index 100% rename from code/SoftwritersCodeChallenge/src/file.csv rename to src/file.csv diff --git a/code/SoftwritersCodeChallenge/tests/__innit__.py b/tests/__innit__.py similarity index 100% rename from code/SoftwritersCodeChallenge/tests/__innit__.py rename to tests/__innit__.py From 526f5c48e042f96d2ab834225285b74658ea098e Mon Sep 17 00:00:00 2001 From: declanjcasey Date: Tue, 7 Sep 2021 16:08:52 -0400 Subject: [PATCH 3/8] added to calculate_minimum_denominations --- src/cash_register.py | 81 +++++++++++++++++++++++++++++--------------- src/file.csv | 4 +-- 2 files changed, 54 insertions(+), 31 deletions(-) diff --git a/src/cash_register.py b/src/cash_register.py index 15d99ae9..ba98eea0 100644 --- a/src/cash_register.py +++ b/src/cash_register.py @@ -6,45 +6,70 @@ # dictionary for denomination and value? # is this structure necesary? -DENOMINATIONS = {'hundred_dollar': 100.00, - 'fifty_dollar': 50.00, - 'twenty_dollar': 20.00, - 'ten_dollar': 10.00, - 'five_dollar': 5.00, - 'one_dollar': 1.00, - 'quarter': 0.25, - 'dime': 0.10, - 'nickel': 0.05, - 'penny': 0.01} +DENOMINATIONS = {#'hundred_dollar': 100.00, + #'fifty_dollar': 50.00, + #'twenty_dollar': 20.00, + #'ten_dollar': 10.00, + #'five_dollar': 5.00, + 'dollar': float(1.00), + 'quarter': float(0.25), + 'dime': float(0.10), + 'nickel': float(0.05), + 'penny': float(0.01)} def calculate_change(total, paid): change = paid - total + round(change, 4) return change def calculate_minimum_denominations(change): - initial_change = change - # final_change should be a string - final_change = - if initial_change >= DENOMINATIONS['hundred_dollar'] - - - -def calculate_random_denomonations(change): - initial_change = change - + dynamic_change = change + # final_change should be of string type + final_change = [] + while dynamic_change >= DENOMINATIONS['dollar']: + final_change.append('dollar') + dynamic_change = (dynamic_change - 1) + round(dynamic_change, 2) + print(dynamic_change) + while dynamic_change <= DENOMINATIONS['dollar'] and dynamic_change >= DENOMINATIONS['quarter']: + final_change.append('quarter') + dynamic_change = (dynamic_change - 0.25) + print(dynamic_change) + round(float(dynamic_change), 4) + print(dynamic_change) + while dynamic_change <= DENOMINATIONS['quarter'] and dynamic_change >= DENOMINATIONS['dime']: + final_change.append('dime') + dynamic_change = (dynamic_change - 0.10) + round(dynamic_change, 4) + #print(dynamic_change) + while dynamic_change <= DENOMINATIONS['dime'] and dynamic_change >= DENOMINATIONS['nickel']: + final_change.append('nickel') + dynamic_change = (dynamic_change - 0.05) + round(dynamic_change, 4) + #print(dynamic_change) + while dynamic_change <= DENOMINATIONS['nickel'] and dynamic_change >= DENOMINATIONS['penny']: + final_change.append('penny') + dynamic_change = (dynamic_change - 0.01) + round(dynamic_change, 4) + #print(dynamic_change) + return final_change + +# def calculate_random_denomonations(change): +# initial_change = change for line in file: (total, paid) = line - total = Decimal(total) - paid = Decimal(paid) + total = float(total) + paid = float(paid) change = calculate_change(total, paid) - print(change) + #print(change) # check if change is not divisble by three - if (change % 3) != 0: - change = calculate_minimum_denominations(change) - else: - change = calculate_random_denomonations(change) - return change \ No newline at end of file + # if (change % 3) != 0: + # change = calculate_minimum_denominations(change) + # else: + # change = calculate_random_denomonations(change) + change = calculate_minimum_denominations(change) + #print(change) \ No newline at end of file diff --git a/src/file.csv b/src/file.csv index fba6116f..1007802a 100644 --- a/src/file.csv +++ b/src/file.csv @@ -1,3 +1 @@ -2.12,3.00 -1.97,2.00 -3.33,5.00 \ No newline at end of file +2.12,3.00 \ No newline at end of file From e6826b3c6c91521dffb76ed67759eba128de6053 Mon Sep 17 00:00:00 2001 From: declanjcasey Date: Tue, 7 Sep 2021 20:12:59 -0400 Subject: [PATCH 4/8] fixed floating point memory loss issue in calculate_minimum_denominations --- src/cash_register.py | 53 ++++++++++++++++---------------------------- src/file.csv | 2 +- 2 files changed, 20 insertions(+), 35 deletions(-) diff --git a/src/cash_register.py b/src/cash_register.py index ba98eea0..781bb567 100644 --- a/src/cash_register.py +++ b/src/cash_register.py @@ -4,18 +4,13 @@ # load and read file file = csv.reader(open('file.csv'), delimiter = ',') -# dictionary for denomination and value? -# is this structure necesary? -DENOMINATIONS = {#'hundred_dollar': 100.00, - #'fifty_dollar': 50.00, - #'twenty_dollar': 20.00, - #'ten_dollar': 10.00, - #'five_dollar': 5.00, - 'dollar': float(1.00), - 'quarter': float(0.25), - 'dime': float(0.10), - 'nickel': float(0.05), - 'penny': float(0.01)} +# using decimal class to avoid memory loss with floating points +DENOMINATIONS = {'dollar': Decimal('1.00'), + 'quarter': Decimal('0.25'), + 'dime': Decimal('0.10'), + 'nickel': Decimal('0.05'), + 'penny': Decimal('0.01')} + def calculate_change(total, paid): change = paid - total @@ -27,32 +22,22 @@ def calculate_minimum_denominations(change): dynamic_change = change # final_change should be of string type final_change = [] + while dynamic_change >= DENOMINATIONS['dollar']: final_change.append('dollar') - dynamic_change = (dynamic_change - 1) - round(dynamic_change, 2) - print(dynamic_change) - while dynamic_change <= DENOMINATIONS['dollar'] and dynamic_change >= DENOMINATIONS['quarter']: + dynamic_change = (dynamic_change - DENOMINATIONS['dollar']) + while dynamic_change <= DENOMINATIONS['dollar'] and dynamic_change > DENOMINATIONS['quarter']: final_change.append('quarter') - dynamic_change = (dynamic_change - 0.25) - print(dynamic_change) - round(float(dynamic_change), 4) - print(dynamic_change) - while dynamic_change <= DENOMINATIONS['quarter'] and dynamic_change >= DENOMINATIONS['dime']: + dynamic_change = (dynamic_change - DENOMINATIONS['quarter']) + while dynamic_change <= DENOMINATIONS['quarter'] and dynamic_change > DENOMINATIONS['dime']: final_change.append('dime') - dynamic_change = (dynamic_change - 0.10) - round(dynamic_change, 4) - #print(dynamic_change) - while dynamic_change <= DENOMINATIONS['dime'] and dynamic_change >= DENOMINATIONS['nickel']: + dynamic_change = (dynamic_change - DENOMINATIONS['dime']) + while dynamic_change <= DENOMINATIONS['dime'] and dynamic_change > DENOMINATIONS['nickel']: final_change.append('nickel') - dynamic_change = (dynamic_change - 0.05) - round(dynamic_change, 4) - #print(dynamic_change) + dynamic_change = (dynamic_change - DENOMINATIONS['nickel']) while dynamic_change <= DENOMINATIONS['nickel'] and dynamic_change >= DENOMINATIONS['penny']: final_change.append('penny') - dynamic_change = (dynamic_change - 0.01) - round(dynamic_change, 4) - #print(dynamic_change) + dynamic_change = dynamic_change - DENOMINATIONS['penny'] return final_change @@ -62,8 +47,8 @@ def calculate_minimum_denominations(change): for line in file: (total, paid) = line - total = float(total) - paid = float(paid) + total = Decimal(total) + paid = Decimal(paid) change = calculate_change(total, paid) #print(change) # check if change is not divisble by three @@ -72,4 +57,4 @@ def calculate_minimum_denominations(change): # else: # change = calculate_random_denomonations(change) change = calculate_minimum_denominations(change) - #print(change) \ No newline at end of file + print(change) \ No newline at end of file diff --git a/src/file.csv b/src/file.csv index 1007802a..77ebaa42 100644 --- a/src/file.csv +++ b/src/file.csv @@ -1 +1 @@ -2.12,3.00 \ No newline at end of file +2.12,4.00 \ No newline at end of file From 8095061af4887589d2551b496f929118500058b8 Mon Sep 17 00:00:00 2001 From: declanjcasey Date: Tue, 7 Sep 2021 20:44:56 -0400 Subject: [PATCH 5/8] add to-do list --- src/cash_register.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/cash_register.py b/src/cash_register.py index 781bb567..6b8f7ac4 100644 --- a/src/cash_register.py +++ b/src/cash_register.py @@ -1,6 +1,17 @@ import csv from decimal import Decimal +""" +TO-DO LIST: +1) Find way to calculate denominations randomly +2) Write a clear main method +3) Testing +4) Probably remove calculate_change() and put it somewhere else +5) Find way to go through the final_change list and sum up and display the values + how it they ask in the sample output in the readme +6) Clean up so it adheres to Python coding standards +""" + # load and read file file = csv.reader(open('file.csv'), delimiter = ',') @@ -12,6 +23,7 @@ 'penny': Decimal('0.01')} +# do I really need this method? def calculate_change(total, paid): change = paid - total round(change, 4) @@ -20,9 +32,9 @@ def calculate_change(total, paid): def calculate_minimum_denominations(change): dynamic_change = change - # final_change should be of string type + # final_change is a list that keep strack each individual final_change = [] - + while dynamic_change >= DENOMINATIONS['dollar']: final_change.append('dollar') dynamic_change = (dynamic_change - DENOMINATIONS['dollar']) @@ -44,7 +56,7 @@ def calculate_minimum_denominations(change): # def calculate_random_denomonations(change): # initial_change = change - +# convert this to an actual main method for line in file: (total, paid) = line total = Decimal(total) From 1712f6902a1b450a68458666083eadb6a7a78a9a Mon Sep 17 00:00:00 2001 From: declanjcasey Date: Wed, 8 Sep 2021 17:16:34 -0400 Subject: [PATCH 6/8] completed final_change_output, debugged calculate_minimum_denominations --- src/cash_register.py | 72 --------- src/file.csv | 1 - src/{ => register}/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 155 bytes .../__pycache__/cash_register.cpython-39.pyc | Bin 0 -> 2310 bytes src/register/cash_register.py | 144 ++++++++++++++++++ src/register/data.csv | 4 + {tests => src/tests}/__innit__.py | 0 ..._cash_register.cpython-39-pytest-6.2.5.pyc | Bin 0 -> 508 bytes src/tests/test_cash_register.py | 10 ++ src/tests/test_data.csv | 5 + 11 files changed, 163 insertions(+), 73 deletions(-) delete mode 100644 src/cash_register.py delete mode 100644 src/file.csv rename src/{ => register}/__init__.py (100%) create mode 100644 src/register/__pycache__/__init__.cpython-39.pyc create mode 100644 src/register/__pycache__/cash_register.cpython-39.pyc create mode 100644 src/register/cash_register.py create mode 100644 src/register/data.csv rename {tests => src/tests}/__innit__.py (100%) create mode 100644 src/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc create mode 100644 src/tests/test_cash_register.py create mode 100644 src/tests/test_data.csv diff --git a/src/cash_register.py b/src/cash_register.py deleted file mode 100644 index 6b8f7ac4..00000000 --- a/src/cash_register.py +++ /dev/null @@ -1,72 +0,0 @@ -import csv -from decimal import Decimal - -""" -TO-DO LIST: -1) Find way to calculate denominations randomly -2) Write a clear main method -3) Testing -4) Probably remove calculate_change() and put it somewhere else -5) Find way to go through the final_change list and sum up and display the values - how it they ask in the sample output in the readme -6) Clean up so it adheres to Python coding standards -""" - -# load and read file -file = csv.reader(open('file.csv'), delimiter = ',') - -# using decimal class to avoid memory loss with floating points -DENOMINATIONS = {'dollar': Decimal('1.00'), - 'quarter': Decimal('0.25'), - 'dime': Decimal('0.10'), - 'nickel': Decimal('0.05'), - 'penny': Decimal('0.01')} - - -# do I really need this method? -def calculate_change(total, paid): - change = paid - total - round(change, 4) - return change - - -def calculate_minimum_denominations(change): - dynamic_change = change - # final_change is a list that keep strack each individual - final_change = [] - - while dynamic_change >= DENOMINATIONS['dollar']: - final_change.append('dollar') - dynamic_change = (dynamic_change - DENOMINATIONS['dollar']) - while dynamic_change <= DENOMINATIONS['dollar'] and dynamic_change > DENOMINATIONS['quarter']: - final_change.append('quarter') - dynamic_change = (dynamic_change - DENOMINATIONS['quarter']) - while dynamic_change <= DENOMINATIONS['quarter'] and dynamic_change > DENOMINATIONS['dime']: - final_change.append('dime') - dynamic_change = (dynamic_change - DENOMINATIONS['dime']) - while dynamic_change <= DENOMINATIONS['dime'] and dynamic_change > DENOMINATIONS['nickel']: - final_change.append('nickel') - dynamic_change = (dynamic_change - DENOMINATIONS['nickel']) - while dynamic_change <= DENOMINATIONS['nickel'] and dynamic_change >= DENOMINATIONS['penny']: - final_change.append('penny') - dynamic_change = dynamic_change - DENOMINATIONS['penny'] - return final_change - - -# def calculate_random_denomonations(change): -# initial_change = change - -# convert this to an actual main method -for line in file: - (total, paid) = line - total = Decimal(total) - paid = Decimal(paid) - change = calculate_change(total, paid) - #print(change) - # check if change is not divisble by three - # if (change % 3) != 0: - # change = calculate_minimum_denominations(change) - # else: - # change = calculate_random_denomonations(change) - change = calculate_minimum_denominations(change) - print(change) \ No newline at end of file diff --git a/src/file.csv b/src/file.csv deleted file mode 100644 index 77ebaa42..00000000 --- a/src/file.csv +++ /dev/null @@ -1 +0,0 @@ -2.12,4.00 \ No newline at end of file diff --git a/src/__init__.py b/src/register/__init__.py similarity index 100% rename from src/__init__.py rename to src/register/__init__.py diff --git a/src/register/__pycache__/__init__.cpython-39.pyc b/src/register/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1991701f5bce10ef5a39cc16ef3bf94683a8cc83 GIT binary patch literal 155 zcmYe~<>g`kg8lz25<&E15P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!H6erR!OQL%nX zYI06uUUFh_YNftQYH@Z+eu2JoVsS=LYIKeE6QjN4NR>1gR{ zS<$izRPARgu)#3DmF;kk*S{x$%YD9vvBDdC9b;8k`{d4dK~2z zV_npRca8+U@bSLpl%6HQnplIrF{M32{vll91Lunh5YCiAtIlQ`YQ*<9ri7Bz7Y+W_ zYg;&v*M-B$6Bal}4>-L^+Gk!M1EkZYg|jcBxF05Cmxp<{6=e@z(oM`)xJcrDoC`TN zcei$S#^%n}haW4stMwhN@9eg%!sde{31#6N9fuMDg~{W-DC{(jdLk*Tp-9tFMAaK- zmw{0|SMX$iLrlmCy-!ZqgyvY5^Q33V%?W!uJCMu z$E?P0E-+L+)ViVZ4>jIc;4!Q5C8xqr`Ap+Yjen-`<^qpdjW0PBhRVM*-hysHSKnhT z@R-$j@L&P#jqjB>++Z1TrKQyh)nXf zQP|O8nBEtG&qrz4kE3pB7v4dfhRMwOjYuDCFRyNYlL?t^a}gzB8ikn{ZSRY$mk);9 zSHkS@hPWSRShej;M%!|30C(7(TU*0X@lF&b(Qy*yqT7$txPRR5a*+<8hj~0mvkQ1v z_8tVGrfV{fR;f?V{fCqd;3B5bvrAQjN{FtAAD~PKHp>JR!8q+P`R)X@V3G6Kte>EC z_Q;V5j{(mfJjN-H3C}Hf%u^lW4Oxf3@K={D z@Rl>Ak)>Eu;6{cNE-%;@n9a^Y5bEM?EP*cxTe=9xwcXaN*}_|!>&mTq$=F3KS}=UBR+K~a7e!ijWldVD z%BlL!xU$>Qty=q(77OK5U8HRWwX(@{c^u_IW4Umx8Z)E`a^lo6QnJ}Mbtk51Nl1u literal 0 HcmV?d00001 diff --git a/src/register/cash_register.py b/src/register/cash_register.py new file mode 100644 index 00000000..ccefdea8 --- /dev/null +++ b/src/register/cash_register.py @@ -0,0 +1,144 @@ +import csv +from decimal import Decimal + +''' +TO-DO LIST: +1) Find way to calculate denominations randomly +2) Write a clear main method +3) Testing ideas + - test for decimal types to ensure there are no floats + - test type of output in calculate_minimum_denominations +6) Clean up so it adheres to Python coding standards +7) Change all code to work for up to 10, 20, maybe even 50 dollar bills +''' + +# load and read file +file = csv.reader(open('data.csv'), delimiter = ',') + +# using decimal class to avoid memory loss with floating points +DENOMINATIONS_VALUE = {'dollar': Decimal('1.00'), + 'quarter': Decimal('0.25'), + 'dime': Decimal('0.10'), + 'nickel': Decimal('0.05'), + 'penny': Decimal('0.01')} + + +DENOMINATIONS_ = {'dollar': 0, + 'quarter': 0, + 'dime': 0, + 'nickel': 0, + 'penny': 0} + + +def calculate_minimum_denominations(change): + dynamic_change = change + + ''' + final_change is a list that keeps track of each individual denomination to be returned, + for example, ['dollar', 'quarter', 'quarter', 'quarter', 'dime', 'penny', 'penny', 'penny']. + The total amount of each denomination will be calculated using this list before being returned as output. + ''' + + final_change = [] + + while dynamic_change >= DENOMINATIONS_VALUE['dollar']: + final_change.append('dollar') + dynamic_change = (dynamic_change - DENOMINATIONS_VALUE['dollar']) + while dynamic_change <= DENOMINATIONS_VALUE['dollar'] and dynamic_change > DENOMINATIONS_VALUE['quarter']: + final_change.append('quarter') + dynamic_change = (dynamic_change - DENOMINATIONS_VALUE['quarter']) + while dynamic_change <= DENOMINATIONS_VALUE['quarter'] and dynamic_change > DENOMINATIONS_VALUE['dime']: + final_change.append('dime') + dynamic_change = (dynamic_change - DENOMINATIONS_VALUE['dime']) + while dynamic_change <= DENOMINATIONS_VALUE['dime'] and dynamic_change > DENOMINATIONS_VALUE['nickel']: + final_change.append('nickel') + dynamic_change = (dynamic_change - DENOMINATIONS_VALUE['nickel']) + while dynamic_change <= DENOMINATIONS_VALUE['nickel'] and dynamic_change >= DENOMINATIONS_VALUE['penny']: + final_change.append('penny') + dynamic_change = dynamic_change - DENOMINATIONS_VALUE['penny'] + return final_change + + +# def calculate_random_denomonations(change): +# initial_change = change + + +def sum_final_change(final_change, DENOMINATIONS_): + for denomination in final_change: + if denomination == 'dollar': + DENOMINATIONS_['dollar'] += 1 + elif denomination == 'quarter': + DENOMINATIONS_['quarter'] += 1 + elif denomination == 'dime': + DENOMINATIONS_['dime'] += 1 + elif denomination == 'nickel': + DENOMINATIONS_['nickel'] += 1 + else: + DENOMINATIONS_['penny'] += 1 + return DENOMINATIONS_ + + +# must be a way to condense this, it's 40 lines +def final_change_output(change_dict): + final_change_str = "" + #print("dict:") + #print(change_dict) + change_copy = {**change_dict} + #print(change_dict) + for denom in change_copy: + if change_copy['dollar'] > 0: + if change_copy[denom] == 1: + final_change_str = final_change_str + "1 dollar, " + change_copy[denom] = 0 + elif change_copy[denom] > 1: + final_change_str = final_change_str + f"{change_copy['dollar']} dollars, " + change_copy[denom] = 0 + if change_copy['quarter'] > 0: + if change_copy[denom] == 1: + final_change_str = final_change_str + "1 quarter, " + change_copy[denom] = 0 + elif change_copy[denom] > 1: + final_change_str = final_change_str + f"{change_copy['quarter']} quarters, " + change_copy[denom] = 0 + if change_copy['dime'] > 0: + if change_copy[denom] == 1: + final_change_str = final_change_str + "1 dime, " + change_copy[denom] = 0 + elif change_copy[denom] > 1: + final_change_str = final_change_str + f"{change_copy['dime']} dimes, " + change_copy[denom] = 0 + if change_copy['nickel'] > 0: + if change_copy[denom] == 1: + final_change_str = final_change_str + "1 nickel, " + change_copy[denom] = 0 + elif change_copy[denom] > 1: + final_change_str = final_change_str + f"{change_copy['nickel']} nickels, " + change_copy[denom] = 0 + if change_copy['penny'] > 0: + if change_copy[denom] == 1: + final_change_str = final_change_str + "1 penny, " + change_copy[denom] = 0 + elif change_copy[denom] > 1: + final_change_str = final_change_str + f"{change_copy['penny']} pennies, " + change_copy[denom] = 0 + return final_change_str + + +for line in file: + (total, paid) = line + total = Decimal(total) + paid = Decimal(paid) + change = paid - total + rem = change % Decimal('.03') + if rem != Decimal('0.00'): + change = calculate_minimum_denominations(change) + change = sum_final_change(change, DENOMINATIONS_) + change = final_change_output(change) + print(change) + print() + else: + #change = calculate_random_denomonations(change) + print("divisible by three") + print() + DENOMINATIONS_ = DENOMINATIONS_.fromkeys(DENOMINATIONS_, 0) + \ No newline at end of file diff --git a/src/register/data.csv b/src/register/data.csv new file mode 100644 index 00000000..590f3727 --- /dev/null +++ b/src/register/data.csv @@ -0,0 +1,4 @@ +4.89,10.00 +3.33,10.00 +2.66,5.00 +2.64,5.00 \ No newline at end of file diff --git a/tests/__innit__.py b/src/tests/__innit__.py similarity index 100% rename from tests/__innit__.py rename to src/tests/__innit__.py diff --git a/src/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc b/src/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5249a3a553510bb81eb54c894d8a102be9cbc422 GIT binary patch literal 508 zcmY*Vy-ve05Vq5wq-|1KU|~aSU78sQp-LdJF@RXSSf)8>z)39I1%;Itp(F3ZWD4qZpO ztm`8o3%!n51mQ#Pt?zLF@rte}OEz4B_7EbB@4#?HeUCtniZL5g0=rr3wc+SBnY6#~ zZ*n=IE}09n;2Q38V?nlnDGM6?ljf-ch=3DQ8tGdaV3S&Uqyeg*} zo^@`)^|q7?f4M#uH|bnx*Ik<~sEliw+PJn7cHzP-*QF@HMH+`!uF;5C=cdK$%nk literal 0 HcmV?d00001 diff --git a/src/tests/test_cash_register.py b/src/tests/test_cash_register.py new file mode 100644 index 00000000..9b4df0b1 --- /dev/null +++ b/src/tests/test_cash_register.py @@ -0,0 +1,10 @@ +import pytest +import os, sys + +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +sys.path.append(parentdir) + +from register import cash_register + +print("hello tests") diff --git a/src/tests/test_data.csv b/src/tests/test_data.csv new file mode 100644 index 00000000..0d59de62 --- /dev/null +++ b/src/tests/test_data.csv @@ -0,0 +1,5 @@ +4.89,10.00 +3.33,10.00 +2.66,5.00 +2.64,5.00 +abcd,efgh \ No newline at end of file From c0a706ad588f74344a8f88c96f907ee409d0ff2d Mon Sep 17 00:00:00 2001 From: declanjcasey Date: Wed, 8 Sep 2021 17:26:20 -0400 Subject: [PATCH 7/8] add Pipfile --- src/Pipfile | 12 ++++++++++++ .../conftest.cpython-39-pytest-6.2.5.pyc | Bin 0 -> 465 bytes ...st_cash_register.cpython-39-pytest-6.2.5.pyc | Bin 508 -> 392 bytes src/tests/conftest.py | 8 ++++++++ src/tests/test_cash_register.py | 6 +++--- 5 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 src/Pipfile create mode 100644 src/tests/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc create mode 100644 src/tests/conftest.py diff --git a/src/Pipfile b/src/Pipfile new file mode 100644 index 00000000..1c3b5776 --- /dev/null +++ b/src/Pipfile @@ -0,0 +1,12 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] + +[dev-packages] +pytest = "*" + +[requires] +python_version = "3.9" \ No newline at end of file diff --git a/src/tests/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc b/src/tests/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7234f505013e3720328d216f3355210870f952b2 GIT binary patch literal 465 zcmYk3%}&BV5P)|}p#=enKOtVdabeFUYCs@{n1Cr@;$GH;4pJ>`(=9ReY2@fD?bXD@ zSMcOeBQnX(WWM>?nO#|_lnBbCaV9^}er%jw$)nT4qaIMX#HBvrG_%GsXAnx3CePE~ zNP!o!h{Y|};I^CNMJPO#-u5zGhRT|*DX)TsY~LkN1-nk5SSM=(JJ1nnm|u7c8N8aT z*6Cvgo|%hdM;n;=ung_$pdnN*OnE~w`uj95pig#(YC pN+4$V0Bkd}VzV%qXUj&Zw$GQLyYk_ZVn?<4zf)=(CN+&C`U6t^hSmT8 literal 0 HcmV?d00001 diff --git a/src/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc b/src/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc index 5249a3a553510bb81eb54c894d8a102be9cbc422..ae66e1b8ab97132fc76d04efde6c5742c3ce928d 100644 GIT binary patch delta 120 zcmeyv+`+7!$ji&c00iqbEfa46>Bk@rGGGF79DumkYofL(UkXDCQx0b?R}>c`Ln`;g zS%!=}6VIf|aTKMdXBL;F78QY%-(oE&%FHWS$xy@x*=&)O?1x1;8B`X<a`rV^t7lL#XZBM%b~69CB_JevRj diff --git a/src/tests/conftest.py b/src/tests/conftest.py new file mode 100644 index 00000000..e4498bb2 --- /dev/null +++ b/src/tests/conftest.py @@ -0,0 +1,8 @@ +import os +import sys + +GO_BACK_A_DIRECTORY = "/../" +GO_INTO_SRC_DIRECTORY = "src" + +PREVIOUS_DIRECTORY = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, PREVIOUS_DIRECTORY + GO_BACK_A_DIRECTORY + GO_INTO_SRC_DIRECTORY) \ No newline at end of file diff --git a/src/tests/test_cash_register.py b/src/tests/test_cash_register.py index 9b4df0b1..b38eb2df 100644 --- a/src/tests/test_cash_register.py +++ b/src/tests/test_cash_register.py @@ -1,9 +1,9 @@ import pytest import os, sys -currentdir = os.path.dirname(os.path.realpath(__file__)) -parentdir = os.path.dirname(currentdir) -sys.path.append(parentdir) +# currentdir = os.path.dirname(os.path.realpath(__file__)) +# parentdir = os.path.dirname(currentdir) +# sys.path.append(parentdir) from register import cash_register From 60c5fa3f7e6f549cf33b96bdd02b1e0ba3acd309 Mon Sep 17 00:00:00 2001 From: declanjcasey Date: Thu, 9 Sep 2021 19:11:04 -0400 Subject: [PATCH 8/8] final commit --- src/Pipfile => Pipfile | 0 .../conftest.cpython-39-pytest-6.2.5.pyc | Bin 0 -> 142 bytes before_review.txt | 3 + src/register/__init__.py => conftest.py | 0 input/data.csv | 5 + .../__innit__.py => register/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin .../__pycache__/cash_register.cpython-39.pyc | Bin 0 -> 4164 bytes {src/register => register}/cash_register.py | 132 +++++++++++------- .../__pycache__/cash_register.cpython-39.pyc | Bin 2310 -> 0 bytes src/register/data.csv | 4 - .../conftest.cpython-39-pytest-6.2.5.pyc | Bin 465 -> 0 bytes ..._cash_register.cpython-39-pytest-6.2.5.pyc | Bin 392 -> 0 bytes src/tests/conftest.py | 8 -- src/tests/test_cash_register.py | 10 -- tests/__innit__.py | 0 .../conftest.cpython-39-pytest-6.2.5.pyc | Bin 0 -> 400 bytes ..._cash_register.cpython-39-pytest-6.2.5.pyc | Bin 0 -> 4694 bytes tests/test_cash_register.py | 71 ++++++++++ {src/tests => tests}/test_data.csv | 0 20 files changed, 158 insertions(+), 75 deletions(-) rename src/Pipfile => Pipfile (100%) create mode 100644 __pycache__/conftest.cpython-39-pytest-6.2.5.pyc create mode 100644 before_review.txt rename src/register/__init__.py => conftest.py (100%) create mode 100644 input/data.csv rename src/tests/__innit__.py => register/__init__.py (100%) rename {src/register => register}/__pycache__/__init__.cpython-39.pyc (100%) create mode 100644 register/__pycache__/cash_register.cpython-39.pyc rename {src/register => register}/cash_register.py (51%) delete mode 100644 src/register/__pycache__/cash_register.cpython-39.pyc delete mode 100644 src/register/data.csv delete mode 100644 src/tests/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc delete mode 100644 src/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc delete mode 100644 src/tests/conftest.py delete mode 100644 src/tests/test_cash_register.py create mode 100644 tests/__innit__.py create mode 100644 tests/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc create mode 100644 tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc create mode 100644 tests/test_cash_register.py rename {src/tests => tests}/test_data.csv (100%) diff --git a/src/Pipfile b/Pipfile similarity index 100% rename from src/Pipfile rename to Pipfile diff --git a/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc b/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc new file mode 100644 index 0000000000000000000000000000000000000000..65d4a4a6404ce551995d4aa83ea5b0c412f38ce8 GIT binary patch literal 142 zcmYe~<>g`k0!dw~L=gQLL?8o3AjbiSi&=m~3PUi1CZpdyU!d=tSey}*nx0u)l3JvnoS&Cgl3HA%S5SG2!zMRBr8Fni L4rJJ8AZ7pniU}Xe literal 0 HcmV?d00001 diff --git a/before_review.txt b/before_review.txt new file mode 100644 index 00000000..49740554 --- /dev/null +++ b/before_review.txt @@ -0,0 +1,3 @@ +Thank you for taking the time to review my work! I apologize if it took too much time to complete, +but I would just like to note that in order for the data to be read in correctly the code must be ran +from the main CashRegister directory, not one level deeper in the register directory. Thank you again! \ No newline at end of file diff --git a/src/register/__init__.py b/conftest.py similarity index 100% rename from src/register/__init__.py rename to conftest.py diff --git a/input/data.csv b/input/data.csv new file mode 100644 index 00000000..05e7ab00 --- /dev/null +++ b/input/data.csv @@ -0,0 +1,5 @@ +3.33, 5.01 +1.23, 4.00 +0.78, 5.00 +2.76, 3.00 +0.01, 1.00 \ No newline at end of file diff --git a/src/tests/__innit__.py b/register/__init__.py similarity index 100% rename from src/tests/__innit__.py rename to register/__init__.py diff --git a/src/register/__pycache__/__init__.cpython-39.pyc b/register/__pycache__/__init__.cpython-39.pyc similarity index 100% rename from src/register/__pycache__/__init__.cpython-39.pyc rename to register/__pycache__/__init__.cpython-39.pyc diff --git a/register/__pycache__/cash_register.cpython-39.pyc b/register/__pycache__/cash_register.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af855e06b5f0c4c8bd039e2cc0561b7a8397aad7 GIT binary patch literal 4164 zcmcIn-EZT@5#QyPs1NIWc0TUVG-ZOKhzeJ>FK8PS#vzAuie8gANPG!U;SLI;UCFE| zQeINNN}yiqpdUaAr083k0#1NFT>pTe5BW>@*ghrbLx8>%hdlH*OG&2BN!p+&2`+bc zW`5k6otYi_D=RgIYv&I?@?ZQWV}GYX`EoFL9#1kwBbeYJ>(JW>`OxSXyqGgPrZj|k z!qHl~wRP+0wsOLS`@Y?=L{-$@W*uA9MFVd~tcWJw6>&+d;_ZsdVh!)AtcmqQLmkWN z3BwooK5ISl3BJ$vT0F1p%3d(^!>P61-rAa4TkUJ#r*>QSw{(AN`@Wq!A`U}e<&~qc zuTrUUO9VriJ5kU(lwod=kewxr@;uS9f&Z0KbJk@f%Bi%xeCPB@b8c=)S4>-_iW$k{`30zrZ9Ou0GcM zmgfIh^IJ=P%xeAulX$rLhvv7@x6!Bd*h_xQYJT9r%+8*&ptrKAp}kiXYFsoeBVXTr zVegffZ|&Ww5^fy|p?68XcR*PV|W{UGwg`RG1V zO`tva>E`Q+RLQ20z0i+(ej+EEyD~XUyTc#~hT~yZ$S6kNPlGs0R`9{(+h`cKa5s33H~Ez>Y1JzD&bb8{ zgC25?b49+sMGV|2RifsZt zE4IlvTGiaNO}2V(Daq7(!W{75GLru_>tn-&^EO;;m!14)w2DUibcxK=r@|E0z$oFl zUjwg7c+l*+MkI7bBUqvKVR?=9uYuXnYb>-Ue5O{(La-bt+BwOJ=)*b5N+z6hWlzx- zJV3B-ZJqh)xxF&LKpwnKdvyiP06~0r6??^h!;ZPKGX8tx$l5QwP`l!NBRASxxvgF1 zKF_Q27d<&5$I)bU2`G7OCxkop;^F9e8{>cCVbg18ey99M#1FY$dnb&+kz7Y-A*_Sy ze_gR!!`IcL)KDzx6{^S4dzMC|wGP{sd1j>l?{}YDephD-ThTVCDw^CWEJMj54ti42 zanrI@9WNXJ6s3u35H|&Br%|?Jp`2Dz@4=H_ZSJQ5ko*7*jT{xyvWSztCUV6H4N-&{%=ka`ZN z&96XxQ=>u}sFyCFuFf?_HeFZ}m?!|mHppimDB7TAO#14Np7aw7%`lD=kp#i$0O5keIrVMg0Yut2;!X;(|bnl1zgZ zT_RE{nO3(wU8iXp^#VyWa@m&EsTUPSR|LJZvs!lCZj!1cxfhQn>Jf-M?Cp@F-2llz|^QHmj2Q-=o9NNLoVj~bxWxblG5BiO}7%G0Am7o9F_$Bh7o`zO?a~M(cWH#uyEH-xel{xM^Pd~3DRgNrs=qU4MRNNK9h7&B znK3g{B(oC)E#CMVLKY#3!x%+OYKhtje~itjkYC)5_wAXJ*`TeU5Hi)jQai)CW>)HC zR_2@-=vC%3jNXe?MbD(}f5(|Qr`606^$(1hbM#BW;H1sH>5p%t>OAx&@!0Ff${Qy^ zH1KXJiPG;_dQ?h!yUM@k?Z@F*SA)geqQ3O@Cnz(APfdSvEAr9<=?Ope+r8x2>jxpc zbred}rk;#Yi)#8v;TZGcz8(Y+_1=>7$AW7gCSeAr%kQcCP~t+Jm4Gn2doMi216KMP0jY!vr1w@%7oIqf(#zx!YIq@K8>YRwcK{z_}F$k<9HhPW`ZB(WdFL zB{!8ED*P;8NGI0N526f&gpvs34sQ2L9->h`S=9{ip2O7!P;= DENOMINATIONS_VALUE['dollar']: final_change.append('dollar') dynamic_change = (dynamic_change - DENOMINATIONS_VALUE['dollar']) @@ -59,8 +31,37 @@ def calculate_minimum_denominations(change): return final_change -# def calculate_random_denomonations(change): -# initial_change = change +def calculate_random_denominations(change): + denoms = ['dollar', 'quarter', 'dime', 'nickel', 'penny'] + #print(type(change)) + dynamic_change = change + final_change = [] + while dynamic_change > Decimal('0.00'): + if dynamic_change >= DENOMINATIONS_VALUE['dollar']: + random_denom = random.choice(denoms) + final_change.append(random_denom) + dynamic_change = (dynamic_change - DENOMINATIONS_VALUE[random_denom]) + elif dynamic_change >= DENOMINATIONS_VALUE['quarter'] and dynamic_change < DENOMINATIONS_VALUE['dollar']: + exception = ['dollar'] + random_denom = random.choice([denom for denom in denoms if denom not in exception]) + final_change.append(random_denom) + dynamic_change = (dynamic_change - DENOMINATIONS_VALUE[random_denom]) + elif dynamic_change >= DENOMINATIONS_VALUE['dime'] and dynamic_change < DENOMINATIONS_VALUE['quarter']: + exception = ['dollar', 'quarter'] + random_denom = random.choice([denom for denom in denoms if denom not in exception]) + final_change.append(random_denom) + dynamic_change = (dynamic_change - DENOMINATIONS_VALUE[random_denom]) + elif dynamic_change >= DENOMINATIONS_VALUE['nickel'] and dynamic_change < DENOMINATIONS_VALUE['dime']: + exception = ['dollar', 'quarter', 'dime'] + random_denom = random.choice([denom for denom in denoms if denom not in exception]) + final_change.append(random_denom) + dynamic_change = (dynamic_change - DENOMINATIONS_VALUE[random_denom]) + elif dynamic_change >= DENOMINATIONS_VALUE['penny'] and dynamic_change < DENOMINATIONS_VALUE['nickel']: + final_change.append(DENOMINATIONS_VALUE['penny']) + dynamic_change = (dynamic_change - DENOMINATIONS_VALUE['penny']) + else: + pass + return final_change def sum_final_change(final_change, DENOMINATIONS_): @@ -78,13 +79,9 @@ def sum_final_change(final_change, DENOMINATIONS_): return DENOMINATIONS_ -# must be a way to condense this, it's 40 lines def final_change_output(change_dict): final_change_str = "" - #print("dict:") - #print(change_dict) change_copy = {**change_dict} - #print(change_dict) for denom in change_copy: if change_copy['dollar'] > 0: if change_copy[denom] == 1: @@ -124,21 +121,50 @@ def final_change_output(change_dict): return final_change_str -for line in file: - (total, paid) = line - total = Decimal(total) - paid = Decimal(paid) - change = paid - total - rem = change % Decimal('.03') - if rem != Decimal('0.00'): - change = calculate_minimum_denominations(change) - change = sum_final_change(change, DENOMINATIONS_) - change = final_change_output(change) - print(change) - print() - else: - #change = calculate_random_denomonations(change) - print("divisible by three") - print() - DENOMINATIONS_ = DENOMINATIONS_.fromkeys(DENOMINATIONS_, 0) - \ No newline at end of file +def main(): + print() + print() + print("Thank you for using Creative Cash Draw Solutions Cash Register System!") + print() + print("In the data.csv file, please enter the price of the item being purchased") + print() + print("followed by the amount of money paid, separated by a comma. You may use the") + print() + print("data already in the file as a guide to input your own data, or leave it as it is.") + print() + print("After adding data, please rerun this file in order to get up to date results.") + print() + print("The data being displayed currently is the data that was in the data.csv file before runtime.") + print() + print() + print() + file = csv.reader(open('input/data.csv'), delimiter = ',') + for line in file: + (total, paid) = line + total = Decimal(total) + paid = Decimal(paid) + change = paid - total + rem = change % Decimal('.03') + DENOMINATIONS_ = {'dollar': 0, + 'quarter': 0, + 'dime': 0, + 'nickel': 0, + 'penny': 0} + + if rem != Decimal('0.00'): + change = calculate_minimum_denominations(change) + change = sum_final_change(change, DENOMINATIONS_) + change = final_change_output(change) + print(change) + print() + else: + change = calculate_random_denominations(change) + change = sum_final_change(change, DENOMINATIONS_) + change = final_change_output(change) + print(change) + print() + DENOMINATIONS_ = DENOMINATIONS_.fromkeys(DENOMINATIONS_, 0) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/register/__pycache__/cash_register.cpython-39.pyc b/src/register/__pycache__/cash_register.cpython-39.pyc deleted file mode 100644 index 31a4141ec00cb374b05e119d978fab2e02d7a575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2310 zcmaJ@&yU+g6rLIXOyYR6Sz6i?DMA&Imi+-jfV4s_-5x4IDz(sq)hcy8vt1L%$&S61 z5@jW%AWlW<9gx}s2mXPIL;n(s6FpVpz`5#yZ^lWQbOBp_^WMDgeRkfwd6TeSuM%9v z#m~a$X9#(&jOELQaS2cM3W5_(6B4MACA7~1Mu{Nb8p7nplyZ|>KeE6QjN4NR>1gR{ zS<$izRPARgu)#3DmF;kk*S{x$%YD9vvBDdC9b;8k`{d4dK~2z zV_npRca8+U@bSLpl%6HQnplIrF{M32{vll91Lunh5YCiAtIlQ`YQ*<9ri7Bz7Y+W_ zYg;&v*M-B$6Bal}4>-L^+Gk!M1EkZYg|jcBxF05Cmxp<{6=e@z(oM`)xJcrDoC`TN zcei$S#^%n}haW4stMwhN@9eg%!sde{31#6N9fuMDg~{W-DC{(jdLk*Tp-9tFMAaK- zmw{0|SMX$iLrlmCy-!ZqgyvY5^Q33V%?W!uJCMu z$E?P0E-+L+)ViVZ4>jIc;4!Q5C8xqr`Ap+Yjen-`<^qpdjW0PBhRVM*-hysHSKnhT z@R-$j@L&P#jqjB>++Z1TrKQyh)nXf zQP|O8nBEtG&qrz4kE3pB7v4dfhRMwOjYuDCFRyNYlL?t^a}gzB8ikn{ZSRY$mk);9 zSHkS@hPWSRShej;M%!|30C(7(TU*0X@lF&b(Qy*yqT7$txPRR5a*+<8hj~0mvkQ1v z_8tVGrfV{fR;f?V{fCqd;3B5bvrAQjN{FtAAD~PKHp>JR!8q+P`R)X@V3G6Kte>EC z_Q;V5j{(mfJjN-H3C}Hf%u^lW4Oxf3@K={D z@Rl>Ak)>Eu;6{cNE-%;@n9a^Y5bEM?EP*cxTe=9xwcXaN*}_|!>&mTq$=F3KS}=UBR+K~a7e!ijWldVD z%BlL!xU$>Qty=q(77OK5U8HRWwX(@{c^u_IW4Umx8Z)E`a^lo6QnJ}Mbtk51Nl1u diff --git a/src/register/data.csv b/src/register/data.csv deleted file mode 100644 index 590f3727..00000000 --- a/src/register/data.csv +++ /dev/null @@ -1,4 +0,0 @@ -4.89,10.00 -3.33,10.00 -2.66,5.00 -2.64,5.00 \ No newline at end of file diff --git a/src/tests/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc b/src/tests/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc deleted file mode 100644 index 7234f505013e3720328d216f3355210870f952b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmYk3%}&BV5P)|}p#=enKOtVdabeFUYCs@{n1Cr@;$GH;4pJ>`(=9ReY2@fD?bXD@ zSMcOeBQnX(WWM>?nO#|_lnBbCaV9^}er%jw$)nT4qaIMX#HBvrG_%GsXAnx3CePE~ zNP!o!h{Y|};I^CNMJPO#-u5zGhRT|*DX)TsY~LkN1-nk5SSM=(JJ1nnm|u7c8N8aT z*6Cvgo|%hdM;n;=ung_$pdnN*OnE~w`uj95pig#(YC pN+4$V0Bkd}VzV%qXUj&Zw$GQLyYk_ZVn?<4zf)=(CN+&C`U6t^hSmT8 diff --git a/src/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc b/src/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc deleted file mode 100644 index ae66e1b8ab97132fc76d04efde6c5742c3ce928d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmY*UJx{|h5Vf5)Nz(+evLUuC@r;B}C6JI97>ZcDL?*GQh4UewD->3K4HN&zD-(Z# ziAzc=ILYt%`ObImWR@ia<0C(p9{F<=e}kb|;elI(n$*+~K__NSzz8MHOw8#n6N+%k zL?W6v7BMn2izX2XC2Cm*Zxn0kJ;`TZ*pJ-h)Mu51O=;DW2B+-na-)ptPMrb=dFtcG ztu{`#;L}w?%Kkt7ptA}i^G$T_HPM(9?MH$#Qttum1G^_@Gt>D>pJ-tFXAY{e(*6PEv0EBe95 U7fn}hjk=`R8$yILdK{+g2VkCb5C8xG diff --git a/src/tests/conftest.py b/src/tests/conftest.py deleted file mode 100644 index e4498bb2..00000000 --- a/src/tests/conftest.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -import sys - -GO_BACK_A_DIRECTORY = "/../" -GO_INTO_SRC_DIRECTORY = "src" - -PREVIOUS_DIRECTORY = os.path.dirname(os.path.abspath(__file__)) -sys.path.insert(0, PREVIOUS_DIRECTORY + GO_BACK_A_DIRECTORY + GO_INTO_SRC_DIRECTORY) \ No newline at end of file diff --git a/src/tests/test_cash_register.py b/src/tests/test_cash_register.py deleted file mode 100644 index b38eb2df..00000000 --- a/src/tests/test_cash_register.py +++ /dev/null @@ -1,10 +0,0 @@ -import pytest -import os, sys - -# currentdir = os.path.dirname(os.path.realpath(__file__)) -# parentdir = os.path.dirname(currentdir) -# sys.path.append(parentdir) - -from register import cash_register - -print("hello tests") diff --git a/tests/__innit__.py b/tests/__innit__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc b/tests/__pycache__/conftest.cpython-39-pytest-6.2.5.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ef06a60ae5ab76baffdc5b5f6fd0ef99f2a0451 GIT binary patch literal 400 zcmYjLJx{|h5Vf6KeWfn>lFtPD~~#akVJhKBS|1~oO(R;IEG12CF@yFd$#jUi>ag!WEOn69pvtfW!db=CX1~qjjGX(=WWOL z-3f0y186dV2->Ko&NRGgWx$U1l8yhg)R~9xTxiQ0v;lT#!&aEJja;}(u(4R67s5@W zY8y+XYf*tsIA5s}IJb$0XN3mz2hqpwMi1W?`J?k=E@4@UdMOaP{1))VG;Mw(aDBfs g<->l=mrcF$hqs+guBt|EOSq;k4I>AqG+}4#2TeV8_5c6? literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc b/tests/__pycache__/test_cash_register.cpython-39-pytest-6.2.5.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ce0be6dccf0dbef62016c57f80d4568810830bf GIT binary patch literal 4694 zcmeHLNs}B$6|Stcw^=kZS}p96jj@YmW_mV_j3rA*0(@XhU=u)xBPvRrHKRh+)lFtK zFym?;EFFA;2+lfm6I_~u&m8;{IB~2XhyWr8^cNHy_+D0bPjzb)(t#sW(JxSS;_c8@B3k z8jdPUjS@;dDz_?)3ey7n=hc2q$+=*Dzy_?b5R}li$hBaB8|Srwu0}GWGp(h@5_F5( zkF>@zcX$cq3NP~t%Co%6Ybek0IX;i_JYV38C@=6cdsUyx;jHt{FwB@LD(UVdzz z(|Q)K@M>y>47#0EU{Ou&0ei?k!?~JT&*+(4!+zEF1;cuWR%Y{d6!{`^e$n*>HYhWB z*a{kU95x>WQD$|5I6fL0!iKq^%@RP8He{I|${{=6c=PSf(UvPKpNy2%>#L+~xbkf( z>#lSwz12{v)*V-7W^&XCvf4oy`;phY@5hG$eY2Si&CI}yBP4d@Pz*6#%JLDKH5-v-uyG=lm%tzIgL}2L1;`LKmW0<600%s7Fwq~i7+woq~D=3@gv5c>q)7`&5OV!x8Oxa zYCh0=R%*%561{J5JGJ0V4z-gvp$#?zrb?4M;;~K`r>K$I3hz#0q1R5GBHn>{jIJ7yAGqwPe*L=3j+aK5UA>;ecpLE51?>XiZu__h#@!r@yRM_aD9+K4 z=Sf^3ahb$dNW2Q+mc(nMuaY1HGztjVC?a4>T$yy|FxV-=;Hm;aF1`lC=bdEG>Lf>A z72-#`3h<%{qA{rJ&)E@DmYk(n+0PzEw9e*~NQc#J+-&}_sX$$~UR9i)SXRU3{@ zm3SMDV=JN{#~Bkv6}`17qF`_w9X}K9Ne5ZoKQ`-Y^}3=Ba+fRQF8kyz@Pj=1Lz#*G zaG$&j%BTy3pon2p5d(3NbHd~anOrYy+q;_64U-VbaJSD6J15`+$s9)Ua@ku zp(rJH+4{y*ZFAOXcU}szqi7trK`rFY!?p5_J8WUVjaV~me@cc>LfNv z(55zCJ@Gc-$Gkn`sA8KeXWVpl&8NNite4UO6utBY>Qig}zn4zDRP55WzeD2NBxVj^ zdj@o;9>6T-=*)|ldk^)g{ig^zq5i+20_sN`#A9%il4zAYQ?vwy9B>TJ@*BQ;ejVU1E}tB^_{va2*=E>9z#P#W=sm@-c&C|wdY5|n~wcDtK^ zdNV^NLM&4A3JId(aq_xcOkBO(KF?oolj%zaDul>YGXD+<${fV&B;FwLRT48Gcte5U zluwUyKTMbc<><^8DbCzQed^4o;>=C-;-bWGQF_@#VRJT7aP@uHXxI|T_+h=_U=C0= z$I8~}QApgumro5fm!Dmv%7i?+XHW#0AR4^?UDT&mM`)fP`p>Am7|}?Qa^5!;?|(^2 z5>QRN4^)qM9|>yT9`U}>chrUO0G8@%NSqDSjx9b#yQ5J3Iay3lO**kTmBi+!UHgD+ zaDVaIS77q-)lb~S!o)2Sgk(@Uy8%XDCq{qqeeQ<3j)CxVW+m{s<_TAeWg3@gdMaby z13`nf_uOhu&FcIVHNPy_N347TcFIt5#D5D~&c`_gUz(7EBcRFuEur#3}@V}3` zdpRqO?}>tPhU}u3=do*f@`2mlnh1U+!UVU(NmJ&G+LR+_dRrrsLm}s-@)NZW{%j*RWehKO`F)cU9blv(otA8TmfGg;@#8A}hVyYV&Rs+#tu6loM^Tn!du8^qNts;;~Pj{{pDOf 0 \ No newline at end of file diff --git a/src/tests/test_data.csv b/tests/test_data.csv similarity index 100% rename from src/tests/test_data.csv rename to tests/test_data.csv