summaryrefslogtreecommitdiffstats
path: root/tests/test.lisp
blob: 98849900b7bf7a612c05b64fa90680b4dc20f6b7 (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
68
69
70
71
72
73
74
75
76
77
78
79
(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