diff options
| -rw-r--r-- | tests/test-commodities.lisp | 24 | ||||
| -rw-r--r-- | tests/test-inventory.lisp | 59 | ||||
| -rw-r--r-- | tests/test-player.lisp | 55 | ||||
| -rw-r--r-- | tests/test.lisp | 138 | ||||
| -rw-r--r-- | transacc.asd | 6 |
5 files changed, 143 insertions, 139 deletions
diff --git a/tests/test-commodities.lisp b/tests/test-commodities.lisp new file mode 100644 index 0000000..c664629 --- /dev/null +++ b/tests/test-commodities.lisp @@ -0,0 +1,24 @@ +(in-package :transacc-tests) + +;;; TESTING COMMODITIES +(def-suite* commodities-suite + :description "Test object and methods for commodities" + :in transacc-suite) + +;; we make sure creating a commodity returns one +(test commodity-creation + (let ((c1 (commodities:new-commodity "apple" 1)) + (c2 (commodities:new-commodity "pear" 4)) + (c3 (commodities:new-commodity "petrol" -3)) + (c4 (commodities:new-commodity "void" 0))) + (is (equal (type-of c1) 'commodities::commodity)) + (is (equal (type-of c2) 'commodities::commodity)) + (is (eq c3 nil)) + (is (eq c4 nil)))) + +;; we make sure a commodity created with given values +;; in fact contains said values +(test commodity-values + (let ((c (commodities:new-commodity "car" 10000))) + (is (equal (commodities:name c) "car")) + (is (= (commodities:price c) 10000)))) diff --git a/tests/test-inventory.lisp b/tests/test-inventory.lisp new file mode 100644 index 0000000..ab732f5 --- /dev/null +++ b/tests/test-inventory.lisp @@ -0,0 +1,59 @@ +(in-package :transacc-tests) + +;;; TESTING INVENTORY +(def-suite* inventory-suite + :description "Test object and methods for inventory" + :in transacc-suite) + +;; test for creation of inventories +(test inventory-creation + (let ((i1 (inventory:new-inventory 100)) + (i2 (inventory:new-inventory 25)) + (i3 (inventory:new-inventory -100)) + (i4 (inventory:new-inventory 0))) + (is (eq (type-of i1) 'inventory::inventory)) + (is (eq (type-of i2) 'inventory::inventory)) + (is (eq i3 nil)) + (is (eq i4 nil)))) + +;; test for init values +(test inventory-init-values + (let ((i (inventory:new-inventory 100))) + (is (= (inventory::size i) 100)) + (is (= (inventory:filled i) 0)) + (is (eq (inventory::items i) nil)))) + +;; test add and substract +(test inventory-add-and-substract + (let ((i (inventory:new-inventory 100)) + (c (commodities:new-commodity "apple" 1)) + (c2 (commodities:new-commodity "apple" 99))) + ;; add 10 + (is (= (inventory:add-item i c 10) 10)) + (is (= (inventory:filled i) 10)) + ;; remove 4 + (is (equal (inventory:remove-item i "apple" 4) + (cons c 4))) + (is (= (inventory:filled i) 6)) + (is (equal (inventory::find-item i "apple") + (cons c 6))) + ;; adding 90 + (is (= (inventory:add-item i c 90) 96)) + ;; adding one too many + (is (not (inventory:add-item i c 5))) + (is (= (inventory::filled i) 96)) + (is (and + (commodities:commodity-eq + c + (car (inventory::find-item i "apple"))) + (= 96 (cdr (inventory::find-item i "apple"))))) + ;; test for adding differently priced same item + (is (= 1 + (commodities:price + (car (inventory::find-item i "apple"))))) + (inventory:remove-item i "apple" 46) + (is (= 100 + (inventory:add-item i c2 50))) + (is (= 50 + (commodities:price + (car (inventory::find-item i "apple"))))))) diff --git a/tests/test-player.lisp b/tests/test-player.lisp new file mode 100644 index 0000000..2f261d7 --- /dev/null +++ b/tests/test-player.lisp @@ -0,0 +1,55 @@ +(in-package :transacc-tests) + +;;; Player tests +(def-suite* player-suite + :description "Test object and methods for player" + :in transacc-suite) + +;; testing buy-item +(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 + (inventory:filled (player::stock p)))) + (is (player:buy-item p c2 10)) + (is (= 1840 (player:get-cash p))) + (is (= 20 + (inventory: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))))) diff --git a/tests/test.lisp b/tests/test.lisp index 85f5f5d..fb37c94 100644 --- a/tests/test.lisp +++ b/tests/test.lisp @@ -6,141 +6,3 @@ (def-suite transacc-suite :description "Test transacc") - - -;;; TESTING COMMODITIES -(def-suite* commodities-suite - :description "Test object and methods for commodities" - :in transacc-suite) - -;; we make sure creating a commodity returns one -(test commodity-creation - (let ((c1 (commodities:new-commodity "apple" 1)) - (c2 (commodities:new-commodity "pear" 4)) - (c3 (commodities:new-commodity "petrol" -3)) - (c4 (commodities:new-commodity "void" 0))) - (is (equal (type-of c1) 'commodities::commodity)) - (is (equal (type-of c2) 'commodities::commodity)) - (is (eq c3 nil)) - (is (eq c4 nil)))) - -;; we make sure a commodity created with given values -;; in fact contains said values -(test commodity-values - (let ((c (commodities:new-commodity "car" 10000))) - (is (equal (commodities:name c) "car")) - (is (= (commodities:price c) 10000)))) - - -;;; TESTING INVENTORY -(def-suite* inventory-suite - :description "Test object and methods for inventory" - :in transacc-suite) - -;; test for creation of inventories -(test inventory-creation - (let ((i1 (inventory:new-inventory 100)) - (i2 (inventory:new-inventory 25)) - (i3 (inventory:new-inventory -100)) - (i4 (inventory:new-inventory 0))) - (is (eq (type-of i1) 'inventory::inventory)) - (is (eq (type-of i2) 'inventory::inventory)) - (is (eq i3 nil)) - (is (eq i4 nil)))) - -;; test for init values -(test inventory-init-values - (let ((i (inventory:new-inventory 100))) - (is (= (inventory::size i) 100)) - (is (= (inventory:filled i) 0)) - (is (eq (inventory::items i) nil)))) - -;; test add and substract -(test inventory-add-and-substract - (let ((i (inventory:new-inventory 100)) - (c (commodities:new-commodity "apple" 1)) - (c2 (commodities:new-commodity "apple" 99))) - ;; add 10 - (is (= (inventory:add-item i c 10) 10)) - (is (= (inventory:filled i) 10)) - ;; remove 4 - (is (equal (inventory:remove-item i "apple" 4) - (cons c 4))) - (is (= (inventory:filled i) 6)) - (is (equal (inventory::find-item i "apple") - (cons c 6))) - ;; adding 90 - (is (= (inventory:add-item i c 90) 96)) - ;; adding one too many - (is (not (inventory:add-item i c 5))) - (is (= (inventory::filled i) 96)) - (is (and - (commodities:commodity-eq - c - (car (inventory::find-item i "apple"))) - (= 96 (cdr (inventory::find-item i "apple"))))) - ;; test for adding differently priced same item - (is (= 1 - (commodities:price - (car (inventory::find-item i "apple"))))) - (inventory:remove-item i "apple" 46) - (is (= 100 - (inventory:add-item i c2 50))) - (is (= 50 - (commodities:price - (car (inventory::find-item i "apple"))))))) - - -;;; Player tests -(def-suite* player-suite - :description "Test object and methods for player" - :in transacc-suite) - -;; testing buy-item -(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 - (inventory:filled (player::stock p)))) - (is (player:buy-item p c2 10)) - (is (= 1840 (player:get-cash p))) - (is (= 20 - (inventory: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))))) diff --git a/transacc.asd b/transacc.asd index a6e1934..111a39a 100644 --- a/transacc.asd +++ b/transacc.asd @@ -19,7 +19,11 @@ :depends-on ("transacc" "fiveam") :components ((:module "tests" :components - ((:file "test")))) + ((:file "test-commodities" :depends-on ("test")) + (:file "test-inventory" :depends-on ("test")) + (:file "test-player" :depends-on ("test")) + + (:file "test")))) :perform (test-op (op c) (symbol-call :fiveam :run! (find-symbol* :transacc-suite :transacc-tests)))) |
