From 74fb26f2935c61e0cb1bd37778762be9c86041f0 Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Sun, 22 Jan 2023 17:12:18 +0000 Subject: [PATCH] write `expect` macro for ease of testing. first test passes --- rover.fnl | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/rover.fnl b/rover.fnl index acd1579..bebdc6f 100644 --- a/rover.fnl +++ b/rover.fnl @@ -1,9 +1,42 @@ (local { : view } (require :fennel)) +(macro expect [text actual expected] + `(let [actual# ,actual] + (or (match actual# + ,expected true + _# false) + (assert false (view { + :text ,text + :expected ,expected + :actual actual# + }))))) + +(fn command [rover commands] + {:x 0 :y 1 :direction :n}) + (fn rover [x y direction] - {}) + {: x + : y + : direction + : command + }) (let [r (rover 0 0 :n)] - (match r - {:x 0 :y 0 :direction :n} true - _ (assert false (view r)))) + (expect + "rover knows (x,y) and the direction (N,S,E,W) it is facing" + r + {:x 0 :y 0 :direction :n})) + +(let [r (rover 0 0 :n)] + (expect "The rover receives a character array of commands" + (r:command [:f :f :f]) + {})) + +(let [r (rover 0 0 :n)] + (expect + "Moves north when pointing north and asked to move forward" + (r:command [:f]) + {:x 0 :y 1 :direction :n})) + + +(print "OK")