diff --git a/code/Test4.hs b/code/Test4.hs new file mode 100644 index 0000000..6387a30 --- /dev/null +++ b/code/Test4.hs @@ -0,0 +1,369 @@ +module Test4 where + +import Angabe4 +import Test.Tasty +import Test.Tasty.HUnit +import Test.Tasty.Ingredients (composeReporters) +import Test.Tasty.Ingredients.ConsoleReporter (consoleTestReporter) + +main :: IO () +main = defaultMainWithIngredients [consoleTestReporter] spec + +{-----TESTDATEN BEGINN-----} + +-- Geschaeftspartner +maxM = GP "Max" datum_1_r +maxM2 = GP "Max" datum_2_r +maxMar1 = GP "Max" datum_1_Mar_r +anna = GP "Annaa" datum_2_r +anna2 = GP "Annab" datum_2_r + +--KBE Zahlung Normalfälle +kbe_Zahlung_sk = (maxM2, zahlung_sk ) +kbe_Zahlung_s3 = (maxM, zahlung_s3 ) +kbe_Zahlung_s5 = (anna, zahlung_s5 ) +kbe_Zahlung_s10 = (anna, zahlung_s10 ) +kbe_Zahlung_sk_Antw = (maxM2, zahlung_sk_ap ) +kbe_Zahlung_s3_Antw = (maxM, zahlung_s3_ap ) +kbe_Zahlung_s5_Antw = (anna, zahlung_s5_ap ) +kbe_Zahlung_s10_Antw = (anna, zahlung_s10_ap ) + +k_kbe_Zahlung_sk_Antw = (maxM2, k_zahlung_sk_ap ) +k_kbe_Zahlung_s3_Antw = (maxM, k_zahlung_s3_ap ) +k_kbe_Zahlung_s5_Antw = (anna, k_zahlung_s5_ap ) +k_kbe_Zahlung_s10_Antw = (anna, k_zahlung_s10_ap ) + +zahlung_sk = Zahlung brut skonto_k datum_1_r +zahlung_s3 = Zahlung brut skonto_3 datum_1_r +zahlung_s5 = Zahlung brut skonto_5 datum_1_r +zahlung_s10 = Zahlung brut skonto_10 datum_1_r +zahlung_sk_ap = AP_Zahlung brut datum_1_r +zahlung_s3_ap = AP_Zahlung (C (55005-1650)) datum_1_r +zahlung_s5_ap = AP_Zahlung (C (55005-2750)) datum_1_r +zahlung_s10_ap = AP_Zahlung (C (55005-5500)) datum_1_r + +k_zahlung_sk_ap = K_Zahlung (EC 550 5) datum_1_r +k_zahlung_s3_ap = K_Zahlung (EC 533 55) datum_1_r +k_zahlung_s5_ap = K_Zahlung (EC 522 55) datum_1_r +k_zahlung_s10_ap = K_Zahlung (EC 495 5) datum_1_r + +k_kbe_Zahlung_sk_EC10 = (maxM, k_zahlung_sk_EC10 ) +k_zahlung_sk_EC10 = K_Zahlung (EC 10 0) datum_1_r +k_kbe_Zahlung_sk_EC70_5 =(maxM, k_zahlung_sk_EC70_5 ) +k_zahlung_sk_EC70_5 = K_Zahlung (EC 70 5) datum_1_r + +brut = C 55005 +gutschriftsb = C 1000 +skonto_k = KeinSkonto +skonto_3 = DreiProzent +skonto_5 = FuenfProzent +skonto_10 = ZehnProzent + +--allgemeine Gutschrift +gutschrift1 = Gutschrift gutschriftsb datum_1_r +gutschrift1_ap = P_Gutschrift gutschriftsb datum_1_r +k_gutschrift1_ap = K_Gutschrift (EC 10 0) datum_1_r + +--KBE Gutschrift Normalfall +kbe_Gutsch = (GP "Max" datum_1_r, gutschrift1 ) +kbe_Gutsch_Antw = (GP "Max" datum_1_r, gutschrift1_ap ) +k_kbe_Gutsch_Antw = (GP "Max" datum_1_r, k_gutschrift1_ap ) + +kbe_Gutsch_2 = (maxM2, gutschrift1 ) +kbe_Gutsch_2_Antw = (maxM2, gutschrift1_ap ) +k_kbe_Gutsch_2_Antw = (maxM2, k_gutschrift1_ap ) + +kbe_Gutsch_anna1 = (anna, gutschrift1 ) +kbe_Gutsch_anna2 = (anna2, gutschrift1 ) + + + +--KBE Datum nicht richtig - Feb + +kbe_29_Feb_NSJ_ng_d = (GP "Max" datum_1_Mar_r, gutschrift1 ) +kbe_30_Feb_ng_d = (GP "Max" datum_30_2_ng, gutschrift1 ) +kbe_31_Feb_ng_d = (GP "Max" datum_31_2_ng, gutschrift1 ) +kbe_29_Feb_SJ_ng_d = (GP "Max" datum_29_2_SJ_r, gutschrift1 ) + +kbe_1_Mar_r = (GP "Max" datum_1_Mar_r, gutschrift1_ap ) +kbe_29_Feb_SJ_r = (GP "Max" datum_29_2_SJ_r, gutschrift1_ap ) +k_kbe_1_Mar_r = (GP "Max" datum_1_Mar_r, k_gutschrift1_ap ) +k_kbe_29_Feb_SJ_r = (GP "Max" datum_29_2_SJ_r, k_gutschrift1_ap ) + + +--KBE Datum nicht richtig - 31. + +kbe_Nov_ng_d = (GP "Max" datum_Nov_ng, gutschrift1 ) +kbe_Apr_ng_d = (GP "Max" datum_Apr_ng, gutschrift1 ) +kbe_Jun_ng_d = (GP "Max" datum_Jun_ng, gutschrift1 ) +kbe_Sep_ng_d = (GP "Max" datum_Sep_ng, gutschrift1 ) +kbe_Nov_r = (GP "Max" datum_Nov_r, gutschrift1_ap ) +kbe_Apr_r = (GP "Max" datum_Apr_r, gutschrift1_ap ) +kbe_Jun_r = (GP "Max" datum_Jun_r, gutschrift1_ap ) +kbe_Sep_r = (GP "Max" datum_Sep_r, gutschrift1_ap ) + +k_kbe_Nov_r = (GP "Max" datum_Nov_r, k_gutschrift1_ap ) +k_kbe_Apr_r = (GP "Max" datum_Apr_r, k_gutschrift1_ap ) +k_kbe_Jun_r = (GP "Max" datum_Jun_r, k_gutschrift1_ap ) +k_kbe_Sep_r = (GP "Max" datum_Sep_r, k_gutschrift1_ap ) + + +--Datum Feb +datum_29_2_SJ_r = D XXIX Feb 2000 +datum_29_2_NSJ_ng = D XXIX Feb 2001 +datum_30_2_ng = D XXX Feb 2000 +datum_31_2_ng = D XXXI Feb 2000 + +datum_1_Mar_r = D I Mar 2000 + + +--Datum 31 falsch +datum_Nov_ng = D XXXI Nov 2000 +datum_Apr_ng = D XXXI Apr 2000 +datum_Jun_ng = D XXXI Jun 2000 +datum_Sep_ng = D XXXI Sep 2000 +datum_Nov_r = D I Dez 2000 +datum_Apr_r = D I Mai 2000 +datum_Jun_r = D I Jul 2000 +datum_Sep_r = D I Okt 2000 + +-- Datum richtig +datum_1_r = D I Jan 2000 +datum_2_r = D II Jun 2000 + +-- Kassabuch +kassabuc_Guts = KB [ + kbe_Gutsch + ] +kassabuc_Guts_Antw = KKB [ + k_kbe_Gutsch_Antw + ] + +kassabuc_Guts_Feb = KB [ + kbe_29_Feb_NSJ_ng_d, + kbe_30_Feb_ng_d, + kbe_31_Feb_ng_d, + kbe_29_Feb_SJ_ng_d + ] + +kassabuc_Guts_Feb_Antw = KKB [ + k_kbe_1_Mar_r, + k_kbe_1_Mar_r, + k_kbe_1_Mar_r, + k_kbe_29_Feb_SJ_r + ] + +kassabuc_Guts_31 = KB [ + kbe_Nov_ng_d, + kbe_Apr_ng_d, + kbe_Jun_ng_d, + kbe_Sep_ng_d + ] + +kassabuc_Guts_31_Antw = KKB [ + k_kbe_Nov_r, + k_kbe_Apr_r, + k_kbe_Jun_r, + k_kbe_Sep_r + ] + + +kassabuc_Zahl = KB [kbe_Zahlung_sk,kbe_Zahlung_s3, + kbe_Zahlung_s5, + kbe_Zahlung_s10 + ] +kassabuc_Zahl_Antw = KKB [k_kbe_Zahlung_sk_Antw,k_kbe_Zahlung_s3_Antw, + k_kbe_Zahlung_s5_Antw, + k_kbe_Zahlung_s10_Antw + ] + +--KKB fuer saldo +kassabuc_kein_Geschaftsb = KKB [ + k_kbe_Zahlung_sk_Antw --GP maxM2 + ] + +kassabuc_Ausgeglichen = KKB [ + k_kbe_Zahlung_sk_Antw, --GP maxM2 (not counting) + k_kbe_Zahlung_sk_EC10, --EC -10 + k_kbe_Gutsch_Antw --EC +10 + ] + +kassabuc_Forderungssaldo_50 = KKB [ + k_kbe_Zahlung_sk_Antw, --GP maxM2 (not counting) + k_kbe_Gutsch_Antw, + k_kbe_Gutsch_Antw, + k_kbe_Gutsch_Antw, + k_kbe_Gutsch_Antw, + k_kbe_Gutsch_Antw + ] +kassabuc_Zahlungssaldo_100_5 = KKB [ + k_kbe_Zahlung_sk_Antw, --GP maxM2 (not counting) + k_kbe_Zahlung_sk_EC10, + k_kbe_Zahlung_sk_EC10, + k_kbe_Zahlung_sk_EC10, + k_kbe_Zahlung_sk_EC70_5 + ] + + +-- KB + SKB fuer saldiere +kassab_lexikographisch_einfach = KB [ + kbe_Gutsch_anna2,--anna2 + kbe_Gutsch_anna2,--anna2 +-- anna2 Gutschrift +20 + + kbe_Gutsch_anna1 --anna +10 +-- anna Zahlung 917 60 + ] + +sKB_lexikographisch_einfach = SKB [ + (anna, Forderungssaldo (EC 10 0)), + (anna2, Forderungssaldo (EC 20 0)) + ] + + +kassab_lexikographisch = KB [ + kbe_Gutsch_anna1, --anna +10 + kbe_Zahlung_s5, --anna -522 55 + kbe_Zahlung_s10, --anna -495 5 +-- anna Zahlung 1007 60 + + kbe_Gutsch_anna2--anna2 +-- anna2 Gutschrift +10 + ] +sKB_lexikographisch = SKB [ + (anna, Zahlungssaldo (EC 1007 60)), + (anna2, Forderungssaldo (EC 10 0)) + ] + +kassab_lexikographisch_datum_vergl = KB [ + kbe_Gutsch_2, --maxM2, +10 Datum OK + kbe_Zahlung_sk, -- maxM2 -550 5 Datum OK +-- maxM2(2.Juni) Zahl 540 5 + + kbe_29_Feb_NSJ_ng_d, --MaxMar1 +10 Datum NOK + kbe_30_Feb_ng_d,--MaxMar1 +10 Datum NOK + kbe_31_Feb_ng_d--MaxMar1 +10 Datum NOK +-- maxMar1 Gutschrift 30 0 + ] + +sKB_lexikographisch_datum_vergl = SKB [ + (maxMar1, Forderungssaldo (EC 30 0)), + (maxM2, Zahlungssaldo (EC 540 5)) + ] + + +{-----TESTDATEN ENDE-----} + + +spec :: TestTree +spec = + testGroup + "Test2 Spec" + [ + a1_waup_tests, + a2_konsolidiere_tests, + a3_saldo_tests, + a4_saldiere_tests + ] + +a1_waup_tests :: TestTree +a1_waup_tests = + testGroup + "-----A1 waup Tests-----" + [ + -- NF Gutschrift + testCase "(GP OK, Gutschrift OK)" $ + waup kbe_Gutsch @?= kbe_Gutsch_Antw, + -- Feb test cases Gutschrift + testCase "(GP -Datum NOK, Gutschrift OK) - Feb 31-> Mar 1" $ + waup kbe_31_Feb_ng_d @?= kbe_1_Mar_r, + testCase "(GP -Datum NOK, Gutschrift OK) - Feb 30-> Mar 1" $ + waup kbe_30_Feb_ng_d @?= kbe_1_Mar_r, + testCase "(GP -Datum NOK, Gutschrift OK) - Feb 29-> Mar 1" $ + waup kbe_29_Feb_NSJ_ng_d @?= kbe_1_Mar_r, + testCase "(GP -Datum OK, Gutschrift OK)- Feb 29 -> Feb 29" $ + waup kbe_29_Feb_SJ_ng_d @?= kbe_29_Feb_SJ_r, + + -- 31. test cases Gutschrift + testCase "(GP -Datum NOK, Gutschrift OK) - Nov 31-> Dez 1" $ + waup kbe_Nov_ng_d @?= kbe_Nov_r, + testCase "(GP -Datum NOK, Gutschrift OK)- Sep 31-> Okt 1" $ + waup kbe_Sep_ng_d @?= kbe_Sep_r, + testCase "(GP -Datum NOK, Gutschrift OK)- Jun 31-> Jul 1" $ + waup kbe_Jun_ng_d @?= kbe_Jun_r, + testCase "(GP -Datum NOK, Gutschrift OK) - Apr 31-> Apr 1" $ + waup kbe_Apr_ng_d @?= kbe_Apr_r, + + -- NF Zahlung + testCase "(GP OK, Zahlung (skonto keins) OK)" $ + waup kbe_Zahlung_sk @?= kbe_Zahlung_sk_Antw, + testCase "(GP OK, Zahlung (skonto 3) OK)" $ + waup kbe_Zahlung_s3 @?= kbe_Zahlung_s3_Antw, + testCase "(GP OK, Zahlung (skonto 5) OK)" $ + waup kbe_Zahlung_s5 @?= kbe_Zahlung_s5_Antw, + testCase "(GP OK, Zahlung (skonto 10) OK)" $ + waup kbe_Zahlung_s10 @?= kbe_Zahlung_s10_Antw + + + ] + +a2_konsolidiere_tests :: TestTree +a2_konsolidiere_tests = + testGroup + "-----A2 konsolidiere Tests-----" + [ + -- NF Gutschrift + testCase "kassabuc_Guts" $ + konsolidiere kassabuc_Guts @?= kassabuc_Guts_Antw, + -- Feb test cases Gutschrift + testCase "kassabuc_Guts_Feb" $ + konsolidiere kassabuc_Guts_Feb @?= kassabuc_Guts_Feb_Antw, + + -- 31. test cases Gutschrift + testCase "kassabuc_Guts_31" $ + konsolidiere kassabuc_Guts_31 @?= kassabuc_Guts_31_Antw, + + -- NF Zahlung + testCase "kassabuc_Zahl" $ + konsolidiere kassabuc_Zahl @?= kassabuc_Zahl_Antw + + + ] + +a3_saldo_tests :: TestTree +a3_saldo_tests = + testGroup + "-----A3 saldo Tests-----" + [ + + testCase "Forderungssaldo_EC50" $ + saldo maxM kassabuc_Forderungssaldo_50 @?= Forderungssaldo (EC 50 0), + + testCase "Zahlungssaldo_EC100_5" $ + saldo maxM kassabuc_Zahlungssaldo_100_5 @?= Zahlungssaldo (EC 100 5), + + testCase "Ausgeglichen" $ + saldo maxM kassabuc_Ausgeglichen @?= Ausgeglichen, + + testCase "Keine Geschäftsbez" $ + saldo maxM kassabuc_kein_Geschaftsb @?= Keine_Geschaeftsbeziehung + + + ] +a4_saldiere_tests :: TestTree +a4_saldiere_tests = + testGroup + "-----A4 saldiere Tests-----" + [ + + testCase "lexikographisch_einfach" $ + saldiere kassab_lexikographisch_einfach @?= sKB_lexikographisch_einfach, + + testCase "lexikographisch" $ + saldiere kassab_lexikographisch @?= sKB_lexikographisch, + + testCase "lexikographisch + datumsvergl noetig" $ + saldiere kassab_lexikographisch_datum_vergl @?= sKB_lexikographisch_datum_vergl + + + ]