dev.metalisp.qmetrics/tests/tests.lisp
2025-01-05 14:47:04 +01:00

39 lines
1.4 KiB
Common Lisp

;;; -*- mode: lisp; coding: utf-8; -*-
(defpackage :ml-qmetrics/tests
(:use :cl :fiveam)
(:import-from #:ml-qmetrics/assessment
#:nps-calc-score
#:nps-enumerate
#:sus-response-entries-process))
(in-package :ml-qmetrics/tests)
(def-suite :assessment)
(in-suite :assessment)
(test nps-calc-score
(is (= 100 (apply #'nps-calc-score '(10 0 10))))
(is (= 0 (apply #'nps-calc-score '(0 0 1)))))
(test nps-enumerate
(is (equal '(0 1 1) (nps-enumerate '(0 11))))
(is (equal '(0 4 4) (nps-enumerate '(1 2 3 4))))
(signals error (nps-enumerate 0))
(signals error (nps-enumerate '())))
(test sus-response-entries-process
(let ((sample-data '(("group-q1" . "3-neither-agree-nor-disagree")
("group-q2-r" . "4-agree")
("group-q3" . "5-strongly-agree")
("group-q4-r" . "1-strongly-disagree")
("group-q5" . "5-strongly-agree")
("group-q6-r" . "2-disagree")
("group-q7" . "3-neither-agree-nor-disagree")
("group-q8-r" . "3-neither-agree-nor-disagree")
("group-q9" . "4-agree")
("group-q10-r" . "2-disagree"))))
(is (equal '(:Q1 2 :Q2 1 :Q3 4 :Q4 4 :Q5 4 :Q6 3 :Q7 2 :Q8 2 :Q9 3 :Q10 3)
(sus-response-entries-process sample-data)))))