(in-package :cl-user) (defpackage transacc-tests (:use :cl :fiveam)) (in-package :transacc-tests) (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" 2))) ;; 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 (equal (inventory::find-item i "apple") (cons c 96))))) ;; creating inventory adding