Limit scripted page numbers

The completions were generating page numbers that didn't make sense if
there were a small number of scripted tests. For example, suppose that
there were only two tests defined, it would generate *1of3 *2of3 and
*3of3 completions even though there weren't even three tests.
This commit is contained in:
Ethan Atkins 2019-10-06 14:05:56 -07:00
parent 9dff18d736
commit ae84e162ad
2 changed files with 8 additions and 2 deletions

View File

@ -136,7 +136,10 @@ object ScriptedPlugin extends AutoPlugin {
val groupP = token(id.examples(pairMap.keySet)) <~ token('/')
// A parser for page definitions
val pageNumber = NatBasic & not('0', "zero page number")
val pageNumber = (NatBasic & not('0', "zero page number")).flatMap { i =>
if (i <= pairs.size) Parser.success(i)
else Parser.failure(s"$i exceeds the number of tests (${pairs.size})")
}
val pageP: Parser[ScriptedTestPage] = ("*" ~> pageNumber ~ ("of" ~> pageNumber)) flatMap {
case (page, total) if page <= total => success(ScriptedTestPage(page, total))
case (page, total) => failure(s"Page $page was greater than $total")

View File

@ -53,7 +53,10 @@ object Scripted {
val groupP = token(id.examples(pairMap.keySet)) <~ token('/')
// A parser for page definitions
val pageNumber = NatBasic & not('0', "zero page number")
val pageNumber = (NatBasic & not('0', "zero page number")).flatMap { i =>
if (i <= pairs.size) Parser.success(i)
else Parser.failure(s"$i exceeds the number of tests (${pairs.size})")
}
val pageP: Parser[ScriptedTestPage] = ("*" ~> pageNumber ~ ("of" ~> pageNumber)) flatMap {
case (page, total) if page <= total => success(ScriptedTestPage(page, total))
case (page, total) => failure(s"Page $page was greater than $total")