diff options
Diffstat (limited to 'tests/test-inventory.lisp')
| -rw-r--r-- | tests/test-inventory.lisp | 59 |
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"))))))) |
