diff --git a/tested/languages/haskell/config.py b/tested/languages/haskell/config.py index 7b45168d..1ec48433 100644 --- a/tested/languages/haskell/config.py +++ b/tested/languages/haskell/config.py @@ -79,6 +79,7 @@ def supported_constructs(self) -> set[Construct]: Construct.ASSIGNMENTS, Construct.EVALUATION, Construct.GLOBAL_VARIABLES, + Construct.HETEROGENEOUS_ARGUMENTS } def compilation(self, files: list[str]) -> CallbackResult: diff --git a/tested/manual.py b/tested/manual.py index eab988a1..7a355cb9 100644 --- a/tested/manual.py +++ b/tested/manual.py @@ -13,7 +13,7 @@ from tested.main import run from tested.testsuite import SupportedLanguage -exercise_dir = "/home/niko/Ontwikkeling/universal-judge/tests/exercises/echo-function" +exercise_dir = "/Users/tibvdm/PycharmProjects/universal-judge/tests/exercises/haskell" def read_config() -> DodonaConfig: @@ -24,10 +24,10 @@ def read_config() -> DodonaConfig: programming_language=SupportedLanguage("haskell"), natural_language="nl", resources=Path(exercise_dir, "evaluation"), - source=Path(exercise_dir, "solution/correct.hs"), + source=Path(exercise_dir, "solution/voorlaatste.hs"), judge=Path("."), workdir=Path("workdir"), - test_suite="two-specific.tson", + test_suite="voorlaatste.yaml", options=Options( linter=False, ), diff --git a/tests/exercises/haskell/evaluation/voorlaatste.yaml b/tests/exercises/haskell/evaluation/voorlaatste.yaml new file mode 100644 index 00000000..38c362bb --- /dev/null +++ b/tests/exercises/haskell/evaluation/voorlaatste.yaml @@ -0,0 +1,43 @@ +tabs: + - tab: 'voorlaatste (Int)' + testcases: + - expression: voorlaatste([1, 2]) + return: 1 + - expression: voorlaatste([1, 2, 3]) + return: 2 + - expression: voorlaatste([1, 2, 3, 4]) + return: 3 + - expression: voorlaatste([1, 2, 3, 4, 5]) + return: 4 + - expression: voorlaatste([1, 0, 1, 0, 1]) + return: 0 + - expression: voorlaatste([9, 81, 1, 2, 4, 1, 42, 1]) + return: 42 + - tab: 'voorlaatste (Double)' + testcases: + - expression: voorlaatste([1.0, 2.0]) + return: 1.0 + - expression: voorlaatste([1.0, 2.0, 3.0]) + return: 2.0 + - expression: voorlaatste([1.0, 2.0, 3.0, 4.0]) + return: 3.0 + - expression: voorlaatste([1.0, 2.0, 3.0, 4.0, 5.0]) + return: 4.0 + - expression: voorlaatste([1.0, 0.0, 1.0, 0.0, 1.0]) + return: 0.0 + - expression: voorlaatste([9.0, 81.0, 1.0, 2.0, 4.0, 1.0, 42.0, 1.0]) + return: 42.0 + - tab: 'voorlaatste (Char)' + testcases: + - expression: voorlaatste(['a', 'b']) + return: 'a' + - expression: voorlaatste(['a', 'b', 'c']) + return: 'b' + - expression: voorlaatste(['a', 'b', 'c', 'd']) + return: 'c' + - expression: voorlaatste(['a', 'b', 'c', 'd', 'e']) + return: 'd' + - expression: voorlaatste(['a', 'b', 'a', 'b', 'a']) + return: 'b' + - expression: voorlaatste(['c', 'd', 'a', 'b', 'g']) + return: 'b' diff --git a/tests/exercises/haskell/solution/voorlaatste.hs b/tests/exercises/haskell/solution/voorlaatste.hs new file mode 100644 index 00000000..3ea94e05 --- /dev/null +++ b/tests/exercises/haskell/solution/voorlaatste.hs @@ -0,0 +1,2 @@ +voorlaatste :: [a] -> a +voorlaatste = last . init