summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/player.lisp21
-rw-r--r--tests/test.lisp16
2 files changed, 28 insertions, 9 deletions
diff --git a/src/player.lisp b/src/player.lisp
index d91c32a..d497fed 100644
--- a/src/player.lisp
+++ b/src/player.lisp
@@ -2,8 +2,9 @@
(:use :cl)
(:export :init-player
:name
- :cash
- :debt
+ :get-cash
+ :get-debt
+ :repay-debt
:buy-item))
(in-package :player)
@@ -31,6 +32,14 @@
:cash cash
:debt debt))
+(defmethod get-debt ((p player))
+ (with-slots (debt) player
+ debt))
+
+(defmethod get-cash ((p player))
+ (with-slots (cash) player
+ cash))
+
(defmethod buy-item ((p player) item quantity)
(with-slots (stock cash) p
(let ((cost (* quantity
@@ -41,4 +50,10 @@
(setq cash (- cash cost))
t)))))
-
+(defmethod repay-debt ((p player) amount)
+ (with-slots (debt cash) p
+ (when (and (<= amount debt)
+ (<= amount cash))
+ (setq cash (- cash amount)
+ debt (- debt amount))
+ t)))
diff --git a/tests/test.lisp b/tests/test.lisp
index a98e0db..4961962 100644
--- a/tests/test.lisp
+++ b/tests/test.lisp
@@ -90,8 +90,6 @@
(commodities:price
(car (inventory::find-item i "apple")))))))
-;; creating inventory adding
-
;;; Player tests
(def-suite* player-suite
@@ -111,16 +109,22 @@
(is (= (player:cash p2) 555))
(is (= (player: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)
+ (c2 (commodities:new-commodity "apple" 11))
(truck (commodities:new-commodity "truck" 100000)))
(is (player:buy-item p c 10))
- (is (not (player:buy-item p kar 1)))
+ (is (not (player:buy-item p truck 1)))
(is (= 10
(inventory:filled (player::stock p))))
(is (player:buy-item p c2 10))
(is (= 20
- (inventory:filled (player::stock p))))
- ))
+ (inventory:filled (player::stock p))))))