diff --git a/exercises/practice/queen-attack/.meta/example.factor b/exercises/practice/queen-attack/.meta/example.factor index 33f6487..db7a6a8 100644 --- a/exercises/practice/queen-attack/.meta/example.factor +++ b/exercises/practice/queen-attack/.meta/example.factor @@ -1,13 +1,14 @@ USING: accessors kernel locals math ; IN: queen-attack +ERROR: row-not-on-board ; +ERROR: column-not-on-board ; + TUPLE: queen row column ; :: ( row column -- queen ) - row 0 < [ "row not positive" throw ] when - row 7 > [ "row not on board" throw ] when - column 0 < [ "column not positive" throw ] when - column 7 > [ "column not on board" throw ] when + row 0 < row 7 > or [ row-not-on-board ] when + column 0 < column 7 > or [ column-not-on-board ] when row column queen boa ; :: can-attack? ( queen1 queen2 -- ? ) diff --git a/exercises/practice/queen-attack/.meta/generator.jl b/exercises/practice/queen-attack/.meta/generator.jl index 9b0b1fc..f9e6874 100644 --- a/exercises/practice/queen-attack/.meta/generator.jl +++ b/exercises/practice/queen-attack/.meta/generator.jl @@ -10,8 +10,9 @@ function gen_test_case(case) column = Int(pos["column"]) expected = case["expected"] if expected isa AbstractDict - msg = expected["error"] - return """[ $(row) $(column) ]\n[ "$(escape_factor(msg))" = ] must-fail-with""" + pred = occursin("row", expected["error"]) ? + "row-not-on-board?" : "column-not-on-board?" + return """[ $(row) $(column) ]\n[ $(pred) ] must-fail-with""" else return """[ $(row) $(column) drop ] must-not-fail""" end diff --git a/exercises/practice/queen-attack/queen-attack/queen-attack-tests.factor b/exercises/practice/queen-attack/queen-attack/queen-attack-tests.factor index b04db84..1793507 100644 --- a/exercises/practice/queen-attack/queen-attack/queen-attack-tests.factor +++ b/exercises/practice/queen-attack/queen-attack/queen-attack-tests.factor @@ -8,19 +8,19 @@ STOP-HERE "queen must have positive row" description [ -2 2 ] -[ "row not positive" = ] must-fail-with +[ row-not-on-board? ] must-fail-with "queen must have row on board" description [ 8 4 ] -[ "row not on board" = ] must-fail-with +[ row-not-on-board? ] must-fail-with "queen must have positive column" description [ 2 -2 ] -[ "column not positive" = ] must-fail-with +[ column-not-on-board? ] must-fail-with "queen must have column on board" description [ 4 8 ] -[ "column not on board" = ] must-fail-with +[ column-not-on-board? ] must-fail-with "cannot attack" description { f } [ 2 4 6 6 can-attack? ] unit-test diff --git a/exercises/practice/queen-attack/queen-attack/queen-attack.factor b/exercises/practice/queen-attack/queen-attack/queen-attack.factor index 5280922..7b0aa50 100644 --- a/exercises/practice/queen-attack/queen-attack/queen-attack.factor +++ b/exercises/practice/queen-attack/queen-attack/queen-attack.factor @@ -1,6 +1,9 @@ USING: kernel ; IN: queen-attack +ERROR: row-not-on-board ; +ERROR: column-not-on-board ; + : ( row column -- queen ) "unimplemented" throw ;