(in-package :transacc-tests) ;;; Player tests (def-suite* player-suite :description "Test object and methods for player" :in transacc-suite) ;; testing player creation (test creating-player (let ((p (player:init-player "Joze")) (p2 (player:init-player "Mehmout" 555 8976))) (is (eql (type-of p) 'player::player)) (is (equal (player:name p) "Joze")) (is (= (player:get-cash p) 2000)) (is (= (player:get-debt p) 5000)) (is (eql (type-of p2) 'player::player)) (is (equal (player:name p2) "Mehmout")) (is (= (player:get-cash p2) 555)) (is (= (player:get-debt p2) 8976)))) (test repay-debt (let ((p (player::init-player "Joze")) (p2 (player::init-player "Mehmout"))) (is (player::repay-debt p 1000)) (is (player::repay-debt p 1000)) (is (not (player::repay-debt p2 3000))))) (test buy-item (let ((p (player:init-player "Joze")) (c (commodities:new-commodity "apple" 5)) (c2 (commodities:new-commodity "apple" 11)) (truck (commodities:new-commodity "truck" 100000))) (is (player:buy-item p c 10)) (is (= 1950 (player:get-cash p))) (is (not (player:buy-item p truck 1))) (is (= 10 (car (inventory:how-filled (player::stock p))))) (is (player:buy-item p c2 10)) (is (= 1840 (player:get-cash p))) (is (= 20 (car (inventory:how-filled (player::stock p))))))) (test sell-item (let ((p (player:init-player "Joze")) (c (commodities:new-commodity "apple" 5)) (c2 (commodities:new-commodity "apple" 11)) (c3 (commodities:new-commodity "apple" 8)) (k (commodities:new-commodity "car" 10000))) (is (player:buy-item p c 10)) (is (= 1950 (player:get-cash p))) (is (player:buy-item p c2 10)) (is (= 1840 (player:get-cash p))) (is (player:sell-item p c3 10)) (is (= 1920 (player:get-cash p))) (is (not (player:sell-item p k 1)))))