add some dsl examples

This commit is contained in:
2026-04-11 09:28:53 +03:00
parent 3a7e69df9b
commit dacae83dc6
6 changed files with 352 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
// Тонкая настройка: timeout и memory_limit на разных уровнях (file → group
// → test), режимы скоринга (partial / all_or_none), переменные окружения,
// проверка exit code, передача аргументов.
toolchains {
gcc { platforms = "linux" }
}
build "release" {
language = "c"
standard = "c11"
sources = "solution.c"
output = "solution"
profile = release
}
// Глобальные дефолты. Применяются к каждому тесту, если тот не
// переопределит у себя или на уровне группы.
timeout 5s
memory_limit = 256M
normalize_crlf = true // стрип \r перед сравнением — полезно на Windows
trim_trailing_ws = true // trim trailing space/tab на каждой строке
group("strict-subset") {
weight = 0.4
scoring = all_or_none // группа даёт weight или 0 — без частичного
// Эти дефолты применятся к каждому тесту группы.
timeout = 2s
memory_limit = 64M
env("LC_ALL") = "C"
env("LANG") = "C"
test("fast") {
args = "--mode" "fast"
stdout = "ok\n"
}
test("strict-timeout") {
timeout = 500ms // переопределяет group timeout
stdout = "ok\n"
}
test("high-memory") {
memory_limit = 128M // переопределяет group memory_limit
stdout = "ok\n"
}
test("own-env") {
env("FOO") = "bar" // добавляется к group env
stdout = "ok\n"
}
}
group("partial-credit") {
weight = 0.6
scoring = partial // default: weight * passed/total
test("case-1") {
stdin = "1\n"
stdout = "1\n"
exitCode = 0
}
test("case-2") {
stdin = "2\n"
stdout = "4\n"
exitCode = 0
}
test("case-error") {
// Программа ДОЛЖНА выйти с кодом 1 на плохом вводе.
stdin = "abc\n"
exitCode = 1
stderr contains "invalid input"
}
}