(in-package :cl-user) (defpackage transacc-tests (:use :cl :fiveam)) (in-package :transacc-tests) (def-suite transacc-suite :description "Test transacc") ;;; Game tests (def-suite* game-suite :description "Test object and methods for game" :in transacc-suite) (test make-game (let* ((p (player:init-player "Joze")) (c (list (commodities:new-commodity "apple" 5) (commodities:new-commodity "pear" 7))) (z (zone:new-zone "Bronx" c)) (g (game:new-game p z (list z)))) (is (equal (type-of g) 'game::game)))) ;; testing buy-item (test buy-item (let* ((p (player:init-player "Joze")) (c (list (commodities:new-commodity "apple" 5) (commodities:new-commodity "pear" 7))) (z (zone:new-zone "Bronx" c)) (g (game:new-game p z (list z)))) (is (game:buy-item g "apple" 10)) (is (not (game:sell-item g "pear" 1))) (is (game:sell-item g "apple" 5)) (is (game:sell-item g "apple" 5)) (is (game:buy-item g "pear" 20)) (is (game:sell-item g "pear" 100)))) ;; testing change-zone (test change-zone (let* ((p (player:init-player "Joze")) (c (list (commodities:new-commodity "apple" 5) (commodities:new-commodity "pear" 7))) (c2 (list (commodities:new-commodity "apple" 6) (commodities:new-commodity "pear" 2))) (z (zone:new-zone "Bronx" c)) (z2 (zone:new-zone "Manhattan" c2)) (g (game:new-game p z (list z z2)))) (is (string= (zone:name (game::cur-zone g)) "Bronx")) (is (game:change-zone g "Manhattan")) (is (string= (zone:name (game::cur-zone g)) "Manhattan")) (game:buy-item g "pear" 10) (is (not (game:change-zone g "Paris"))) (is (game:change-zone g "Bronx")) (game:sell-item g "pear" 10) (is (= (player:get-cash (game::player g)) 2050)))) ;; testing get profit (test get-profit (let* ((p (player:init-player "Joze")) (c (list (commodities:new-commodity "apple" 5) (commodities:new-commodity "pear" 7))) (c2 (list (commodities:new-commodity "apple" 6) (commodities:new-commodity "pear" 2))) (z (zone:new-zone "Bronx" c)) (z2 (zone:new-zone "Manhattan" c2)) (g (game:new-game p z2 (list z z2)))) (is (= 0 (game:get-profit g "pear"))) (game:buy-item g "pear" 10) (is (= 0 (game:get-profit g "pear"))) (is (= 5 (game:get-profit-in-zone g "pear" z))) (game:change-zone g "Bronx") (is (= 5 (game:get-profit g "pear"))) (is (= 0 (game:get-profit-in-zone g "pear" z2)))))