This repository has been archived on 2021-11-27. You can view files and clone it, but cannot push or open issues or pull requests.
fprog2021WS/code/Test4.hs
2021-11-09 17:59:12 +01:00

370 lines
10 KiB
Haskell

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
]