From f2b2b3025a37c1ae45e741a9645b009623a1af0d Mon Sep 17 00:00:00 2001 From: Niko Strijbol Date: Sun, 19 Nov 2023 16:52:14 +0100 Subject: [PATCH] Update docs about !v See https://github.com/dodona-edu/universal-judge/pull/457 --- en/references/tested/dsl/index.md | 18 +++++------ nl/guides/exercises/testsuites/index.md | 43 +++++++++++++------------ nl/references/tested/dsl/index.md | 18 +++++------ 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/en/references/tested/dsl/index.md b/en/references/tested/dsl/index.md index 20e95a104..ae26b091a 100644 --- a/en/references/tested/dsl/index.md +++ b/en/references/tested/dsl/index.md @@ -149,13 +149,13 @@ For example, you cannot check that an assertion error or exception happened. Specifies the expected return value. -Depending on the value, this attribute is interpreted as: +By default, this attribute is interpreted as a YAML value. +For example, a YAML string will result in a literal string value. -- If an untagged string, the string uses the same Python syntax as for [expressions and statements](#expressions-and-statements). -- If it is an untagged object, it is seen as the advanced output for an oracle. -- If it is another value, it is interpreted as a YAML value. +If you need more advanced return values, there are two options: -With the tags `!v` or `!values`, you can mark strings or objects as also being YAML values. +- string tagged as `!expression` use the same Python syntax as for [expressions and statements](#expressions-and-statements) +- objects tagged as `!oracle` denote the return value oracle (see below) #### `exit_code` @@ -321,15 +321,13 @@ This name is programming language dependent: ## Supported tags -TESTed supports the following standard types: +TESTed supports the following standard YAML types: - `!!set` to denote a set. -TESTed also supports: - -- `!v` or `!value` to mark a return value as a YAML value. - Finally, all [TESTed types](/en/references/tested/types) can also be used as tags. +For example `!int64` or `!double`. +Note that custom types use one exclamation mark, while standard types use two. ## YAML cheat sheet diff --git a/nl/guides/exercises/testsuites/index.md b/nl/guides/exercises/testsuites/index.md index ea4203206..8449b01ce 100644 --- a/nl/guides/exercises/testsuites/index.md +++ b/nl/guides/exercises/testsuites/index.md @@ -38,18 +38,18 @@ Een voorbeeld van een testplan met alle niveaus is: contexts: - testcases: - expression: 'echo("hello")' - return: !v "hello" + return: "hello" - testcases: - expression: 'echo("world")' - return: !v "world" + return: "world" - tab: "Tabblad 2" contexts: - testcases: - expression: 'echo("4")' - return: !v "4" + return: "4" - testcases: - expression: 'echo("2")' - return: !v "2" + return: "2" ``` In dit testplan zijn twee analoge tabbladen. @@ -64,15 +64,15 @@ Daarom is het mogelijk om de contexten weg te laten: - tab: "Tabblad 1" testcases: - expression: 'echo("hello")' - return: !v "hello" + return: "hello" - expression: 'echo("world")' - return: !v "world" + return: "world" - tab: "Tabblad 2" testcases: - expression: 'echo("4")' - return: !v "4" + return: "4" - expression: 'echo("2")' - return: !v "2" + return: "2" ``` ## Formaat @@ -96,12 +96,15 @@ Een testgeval met een aantal functieoproepen is: return: 1 ``` -Voor returnwaarden zijn er twee opties: +Een returnwaarde wordt geïnterpreteerd als een YAML-waarde. +Een string is een string, een getal wordt een getal, enzovoort. + +Als je geavanceerde returnwaarden nodig hebt, zijn er twee opties: -1. Als je een string als returnwaarde opgeeft, gaan we ervan uit dat die string ook de Python-syntaxis gebruikt. -2. Als je iets anders dan een string (of object) opgeeft, interpreteren we het als een YAML-waarde. Met de tag `!v` of `!value` kan je ook een string laten interpreteren als een YAML-waarde. +- Een string met de tag `!expression` betekent dat de string de Python-syntaxis kan gebruiken. +- Een object met de tag `!oracle` wordt als een [eigen orakel](#eigen-checkfunctie-eigen-orakelfunctie) gezien. -Een voorbeeld van een returnwaarde (hier een verzameling getallen) is: +Een voorbeeld van een geavanceerde returnwaarde (hier een verzameling getallen) is: ```yaml - expression: 'unique(1, 1, 2, 3)' @@ -119,9 +122,9 @@ Om een string als returnwaarde te hebben zijn er dus twee mogelijkheden: ```yaml - expression: 'echo("hello")' - return: !v "hallo" # Een gewone string met als tag !v + return: "hallo" # Een gewone string - expression: 'echo("hello")' - return: "'hallo'" # Een string in Python-syntaxis + return: !expression "'hallo'" # Een string in Python-syntaxis ``` @@ -180,7 +183,7 @@ Als we dat in een testplan willen schrijven, wordt dat: - tab: "Vandaag" testcases: - expression: 'vandaag()' - return: !v "??????" # Wat moet er hier komen? + return: "??????" # Wat moet er hier komen? ``` De oplossing daarvoor is een eigen orakelfunctie schrijven. @@ -192,7 +195,7 @@ In het testplan wordt dit dan: - tab: "Vandaag" testcases: - expression: 'vandaag()' - return: + return: !oracle value: "'27-08-2023'" oracle: "custom_check" language: "python" @@ -290,7 +293,7 @@ Het is niet verplicht om argumenten te gebruiken: testcases: - stdin: "Jan" expression: "greet()" - return: !v "Hello, Jan." + return: "Hello, Jan." ``` ## Taalspecifieke expressies en statements @@ -321,7 +324,7 @@ In onderstaande voorbeeld wordt een functie opgeroepen met als argument de som v kotlin: "toString(1+1)" python: "submission.to_string(1+1)" csharp: "Submission.toString(1+1)" - return: !v "2" + return: "2" ``` ::: info Merk op @@ -339,7 +342,7 @@ Als je slechts één programmeertaal wilt ondersteunen, kan je de taal van de ex language: "java" testcases: - expression: "Submission.toString(1+1)" - return: !v "2" + return: "2" ``` ## Bestanden koppelen aan expressies @@ -357,7 +360,7 @@ In het testplan geef je vervolgens het attribuut `files` mee: - tab: "Voorbeeld met bestanden" testcases: - expression: "lees_het_bestand('bestand.txt')" - return: !v "Dit is de inhoud van het bestand" + return: "Dit is de inhoud van het bestand" files: - name: "bestand.txt" url: "media/bestand.txt" diff --git a/nl/references/tested/dsl/index.md b/nl/references/tested/dsl/index.md index 9ebf93eca..bdc9e55c2 100644 --- a/nl/references/tested/dsl/index.md +++ b/nl/references/tested/dsl/index.md @@ -153,13 +153,13 @@ Het is bijvoorbeeld niet mogelijk om te controleren of een _assertion error_ geb Specifieert de verwachte returnwaarde. -Afhankelijk van de waarde wordt dit attribuut als volgt geïnterpreteerd: +Standaard wordt de returnwaarde beschouwd als een YAML-waarde. +Een string in het testplan zal dus ook een string worden in de testcode. -- Als het een _untagged_ string is, gebruikt het dezelfde Python-syntaxis te gebruiken als voor de [expressies en statements](#expressies-en-statements). -- Als het een _untagged_ object is, wordt het gezien als de geavanceerde uitvoer voor een orakel. -- Als het een andere waarde is, wordt het geïnterpreteerd als een YAML-waarde. +Voor geavanceerde returnwaarden zijn er twee opties: -Met de tags `!v` of `!value` kunnen strings ook gezien worden als YAML-waarden. +- Een string met de tag `!expression` gebruikt het dezelfde Python-syntaxis te gebruiken als voor de [expressies en statements](#expressies-en-statements). +- Een object met de tag `!oracle` is het object voor een eigen orakel. #### `exit_code` @@ -328,15 +328,13 @@ Deze naam is programeertaalafhankelijk: ## Ondersteunde tags -TESTed ondersteunt de volgende standaardtypes: +TESTed ondersteunt de volgende standaardtypes van YAML: - `!!set` om een verzameling te definiëren. -Daarnaast ondersteunt TESTed ook: - -- `!v` of `!value` om bij een returnwaarde duidelijk te maken dat het om een YAML-waarde gaat, geen Python-syntaxis. - Tot slot kan ook de naam van elk [TESTed-type](/nl/references/tested/types) gebruikt worden als tag. +Voorbeelden zijn `!int64` of `!double`. +Merk op dat eigen types één uitroepteken gebruiken, terwijl standaardtypes er twee gebruiken. ## Spiekbriefje voor YAML