summaryrefslogtreecommitdiffstats
path: root/tests/test-inventory.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-inventory.lisp')
-rw-r--r--tests/test-inventory.lisp59
1 files changed, 59 insertions, 0 deletions
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")))))))