summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/test-commodities.lisp24
-rw-r--r--tests/test-inventory.lisp59
-rw-r--r--tests/test-player.lisp55
-rw-r--r--tests/test.lisp138
-rw-r--r--transacc.asd6
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))))