-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
DSL extensions
- i18n support
- identify DSL-attributes that can be translated
- these attributes may use a
!natural_languagemap for translations- mandatory if they can have other types of map-values (e.g.
return) - optional if they cannot have other types of map-values (e.g. string attributes such as
unit)
- mandatory if they can have other types of map-values (e.g.
- string attributes among those may also serve as template strings with placeholder variables
- identified attributes:
-
unitortab -
statement -
expression -
description -
return -
arguments -
stdin -
stdout -
stderr -
files -
file
-
- these attributes may use a
- support translated values (literal translations) (Support literal translations (map type !natural_language) #570)
- make distinction between different map-values for
returnattribute- map as actual type of return value (already supported by TESTed)
- return value with custom oracle: use
!oracletag (already supported by TESTed) - return value with map of natural language translations: use
!natural_languagetag
- make distinction between different map-values for
statementandexpression- map of programming language translations: use
!programming_languagetag - map of natural language translations: use
!natural_languagetag
- map of programming language translations: use
- other attributes do not support maps (yet), so
!natural_languagetag may be optional here for a map containing natural language translations
- make distinction between different map-values for
- support translation tables (inherited with merge strategy)
- process strings as template strings with placeholder variables if translation table and/or data available (only named placeholders or also positional?)
- identify DSL-attributes that can be translated
- parameterized testing (data-driven testing)
- testcase templates (simplified DSL)
- default template
- named templates
- repeated execution with
- oracle for individual execution
- aggragation and stop criterium for executions
- oracle across all executions (having access to aggregated results)
- dynamic generation of test data
- testcase templates (simplified DSL)
- consistent description of "file content" (stdin, stdout, stderr, input/output files) (add file content #577)
- inline content in DSL (short content)
- link external file in DSL (long content)
- heuristic for inlining / linking file content in feedback
- support testing of multiple generated files (now TESTed only supports testing of a single file per testcase)
- support additional file descriptors (now only stdin, stdout and stderr are supported)
- setup and teardown
- language-agnostic setup and teardown (shell scripts)
- specific support for environment variables (needed?)
- support for testing global scope (built-in + custom oracle)
generic language extensions
- line comments (Feat/add comments #555)
- indexing sequences
- indexing maps
- operators
- string conversion
- destructuring
- object identity checking
- object equivalence checking
new features
- TypeScript language module (Add TypeScript #553)
- pretty printing of nested data structures (in generated feedback)
- compute test coverage for test plan and sample solution
- static analysis
- extract types from type hints (simplified DSL)
- check explicitly if all required interfaces have been implemented (better feedback)
- skip tests relying on interfaces that aren't implemented (faster feedback)
- check implementation restrictions (e.g. recursive function implementation)
- support hidden units/test cases (visible to teachers but invisible to students; to avoid gaming — also known as programming to the test; Peveler et al., 2019)
- support for
doctest: +REPR; i.e. implicit string conversion of return value as in REPL environment; could be covered by translation into explicit string conversion during conversion to TESTed or specific TESTed support (e.g. !repl next to !expression as a type for the return value in TESTed) - two-fold execution of nested blocks (ACM/IEEE testing strategy explored in Python judge; low priority)
Metadata
Metadata
Assignees
Labels
No labels