From bf2e44b86cb7363f7e5b0f70c7c272802f6b6d76 Mon Sep 17 00:00:00 2001 From: pfdietz <pfdietz@localhost> Date: Wed, 3 Sep 2003 12:12:55 +0000 Subject: [PATCH] Initial checkin of tests for GCD. --- ansi-tests/gcd-aux.lsp | 26 +++++++++++++++ ansi-tests/gcd.lsp | 65 +++++++++++++++++++++++++++++++++++++ ansi-tests/load-numbers.lsp | 1 + 3 files changed, 92 insertions(+) create mode 100644 ansi-tests/gcd-aux.lsp create mode 100644 ansi-tests/gcd.lsp diff --git a/ansi-tests/gcd-aux.lsp b/ansi-tests/gcd-aux.lsp new file mode 100644 index 00000000..abe27eaf --- /dev/null +++ b/ansi-tests/gcd-aux.lsp @@ -0,0 +1,26 @@ +;-*- Mode: Lisp -*- +;;;; Author: Paul Dietz +;;;; Created: Wed Sep 3 06:57:22 2003 +;;;; Contains: Aux. functions for testing GCD + +(in-package :cl-test) + +(defun my-gcd (x y) + (cond + ((< x 0) + (my-gcd (- x) y)) + ((< y 0) + (my-gcd x (- y))) + ((<= x y) + (my-gcd* x y)) + (t + (my-gcd* y x)))) + +(defun my-gcd* (x y) + ;;; 0 <= x <= y + (loop + (when (zerop x) (return y)) + (psetq x (mod y x) + y x))) + + diff --git a/ansi-tests/gcd.lsp b/ansi-tests/gcd.lsp new file mode 100644 index 00000000..406a2bc6 --- /dev/null +++ b/ansi-tests/gcd.lsp @@ -0,0 +1,65 @@ +;-*- Mode: Lisp -*- +;;;; Author: Paul Dietz +;;;; Created: Wed Sep 3 06:51:03 2003 +;;;; Contains: Tests of GCD + +(in-package :cl-test) + +(compile-and-load "numbers-aux.lsp") +(compile-and-load "gcd-aux.lsp") + +(deftest gcd.error.1 + (loop for x in *mini-universe* + unless (or (integerp x) + (eq (eval `(classify-error (gcd ',x))) 'type-error)) + collect x) + nil) + +(deftest gcd.1 + (gcd) + 0) + +(deftest gcd.2 + (loop for i = (random-fixnum) + for a = (abs i) + repeat 10000 + unless (and (eql a (gcd i)) + (eql a (gcd 0 i))) + collect i) + nil) + +(deftest gcd.3 + (loop for i = (random-from-interval 10000000000000000) + for a = (abs i) + repeat 10000 + unless (and (eql a (gcd i)) + (eql a (gcd i 0))) + collect i) + nil) + +(deftest gcd.4 + (loop for i = (random-fixnum) + for j = (random-fixnum) + repeat 1000 + unless (eql (my-gcd i j) (gcd i j)) + collect (list i j)) + nil) + +(deftest gcd.5 + (let ((bound (ash 1 200))) + (loop for i = (random-from-interval bound) + for j = (random-from-interval bound) + repeat 1000 + unless (eql (my-gcd i j) (gcd i j)) + collect (list i j))) + nil) + +(deftest gcd.6 + (loop for i = (random-fixnum) + for j = (random-fixnum) + for k = (random-fixnum) + repeat 1000 + unless (eql (my-gcd i (my-gcd j k)) (gcd i j k)) + collect (list i j k)) + nil) + diff --git a/ansi-tests/load-numbers.lsp b/ansi-tests/load-numbers.lsp index 3faca6a6..d884ac88 100644 --- a/ansi-tests/load-numbers.lsp +++ b/ansi-tests/load-numbers.lsp @@ -32,6 +32,7 @@ (load "abs.lsp") ;;(load "exp.lsp") (load "expt.lsp") +(load "gcd.lsp") (load "rational.lsp") (load "rationalize.lsp") -- GitLab