605e28860f3182a12f7d2438fd1f11c1a6333722
[cl-photo.git] / tests.lisp
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Name:          cl-photo-tests.lisp
6 ;;;; Purpose:       Cl-Photo tests file
7 ;;;; Programmer:    Kevin M. Rosenberg
8 ;;;; Date Started:  Apr 2003
9 ;;;;
10 ;;;; $Id$
11 ;;;;
12 ;;;; This file is Copyright (c) 2000-2003 by Kevin M. Rosenberg
13 ;;;; *************************************************************************
14
15 (defpackage #:cl-photo-tests
16   (:use #:cl-photo #:cl #:rtest #:kmrcl))
17 (in-package #:cl-photo-tests)
18
19 (rem-all-tests)
20
21 (defun verify-results (alist blist)
22   (every #'identity
23          (mapcar
24           (lambda (a b) (numbers-within-percentage a b 0.001))
25           alist blist)))
26
27 (defmacro def-numeric-test (name test &rest values)
28   `(deftest ,name
29             (let ((results (multiple-value-list ,test)))
30               (verify-results results ',values))
31             t))
32
33 (def-numeric-test
34  :gl.1 (gaussian-lens :focal-length 50 :object-distance 100) 100)
35
36 (def-numeric-test
37  :gl.2 (gaussian-lens :focal-length 50 :image-distance 200) 66.66667)
38
39 (def-numeric-test
40  :gl.3 (gaussian-lens :object-distance 100 :image-distance 100) 50)
41
42 (def-numeric-test
43  :aov.1 (aov 50 36 24) 39.5977 26.9915 46.7930)
44  
45 (def-numeric-test