~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to ansi-tests/evenp.lsp

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
;-*- Mode:     Lisp -*-
 
2
;;;; Author:   Paul Dietz
 
3
;;;; Created:  Sun Aug 31 10:39:01 2003
 
4
;;;; Contains: Tests of EVENP
 
5
 
 
6
(in-package :cl-test)
 
7
 
 
8
(compile-and-load "numbers-aux.lsp")
 
9
 
 
10
(deftest evenp.error.1
 
11
  (signals-error (evenp) program-error)
 
12
  t)
 
13
 
 
14
(deftest evenp.error.2
 
15
  (signals-error (evenp 0 nil) program-error)
 
16
  t)
 
17
 
 
18
(deftest evenp.1
 
19
  (loop for x in *numbers*
 
20
        when (integerp x)
 
21
        do (evenp x))
 
22
  nil)
 
23
 
 
24
(deftest evenp.2
 
25
  (loop for x in *mini-universe*
 
26
        unless (or (integerp x)
 
27
                   (eval `(signals-error (evenp ',x) type-error)))
 
28
        collect x)
 
29
  nil)
 
30
 
 
31
(deftest evenp.3
 
32
  (loop for x = (random-fixnum)  
 
33
        repeat 10000
 
34
        when (or
 
35
              (not (evenp (+ x x)))
 
36
              (evenp (+ x x 1))
 
37
              (if (evenp x)
 
38
                  (or (evenp (1+ x))
 
39
                      (evenp (1- x))
 
40
                      (/= (mod x 2) 0))
 
41
                (or (not (evenp (1+ x)))
 
42
                    (not (evenp (1- x)))
 
43
                    (= (mod x 2) 0))))
 
44
        collect x)
 
45
  nil)
 
46
 
 
47
(deftest evenp.4
 
48
  (let ((upper-bound 1000000000000000)
 
49
        (lower-bound -1000000000000000))
 
50
    (loop for x = (random-from-interval upper-bound lower-bound)
 
51
          repeat 10000
 
52
          when (or
 
53
                (not (evenp (+ x x)))
 
54
                (evenp (+ x x 1))
 
55
                (if (evenp x)
 
56
                    (or (evenp (1+ x))
 
57
                        (evenp (1- x))
 
58
                        (/= (mod x 2) 0))
 
59
                  (or (not (evenp (1+ x)))
 
60
                      (not (evenp (1- x)))
 
61
                      (= (mod x 2) 0))))
 
62
          collect x))
 
63
  nil)
 
64
 
 
65
(deftest evenp.5
 
66
  (notnot-mv (evenp 0))
 
67
  t)
 
68
 
 
69
(deftest evenp.6
 
70
  (evenp 1)
 
71
  nil)
 
72
 
 
73
(deftest evenp.7
 
74
  (notnot-mv (evenp 100000000000000000000000000000000))
 
75
  t)
 
76
 
 
77
(deftest evenp.8
 
78
  (evenp 100000000000000000000000000000001)
 
79
  nil)