summaryrefslogtreecommitdiffstats
path: root/tests/test.lisp
blob: f2136d63bffad2bfc540a81b2801bb6d6dc45c35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
(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)))
	(inventory:add-item i c 10)
	(is (= (inventory:filled i) 10))
	(is (equal (inventory:remove-item i "apple" 4)
			   (cons c 4)))))

;; creating inventory adding