r3750: *** empty log message ***
[cl-base64.git] / test.lisp
diff --git a/test.lisp b/test.lisp
new file mode 100644 (file)
index 0000000..a21da95
--- /dev/null
+++ b/test.lisp
@@ -0,0 +1,75 @@
+;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
+;;;; *************************************************************************
+;;;; FILE IDENTIFICATION
+;;;;
+;;;; Name:          test.lisp
+;;;; Purpose:       Regression tests for cl-base64
+;;;; Programmer:    Kevin M. Rosenberg
+;;;; Date Started:  Jan 2003
+;;;;
+;;;; $Id: test.lisp,v 1.1 2003/01/13 21:39:46 kevin Exp $
+;;;; *************************************************************************
+
+(in-package :cl-user)
+
+(defpackage #:base64-test
+  (:use #:cl #:kmrcl #:base64 #:util.test))
+
+(in-package #:base64-test)
+
+(defun test-base64 ()
+  (with-tests (:name "cl-base64 tests")
+    (do* ((length 0 (+ 3 length))
+         (string (make-string length) (make-string length))
+         (usb8 (make-usb8-array length) (make-usb8-array length))
+         (integer (random (expt 10 length)) (random (expt 10 length))))
+        ((>= length 300))
+    (dotimes (i length)
+      (declare (fixnum i))
+      (let ((code (random 256)))
+       (setf (schar string i) (code-char code))
+       (setf (aref usb8 i) code)))
+
+      (do* ((columns 0 (+ columns 4)))
+          ((> columns length))
+      ;; Test against cl-base64 routines
+       (test integer (base64-string-to-integer
+                                (integer-to-base64-string integer :columns columns)))
+       (test string (base64-string-to-string
+                               (string-to-base64-string string :columns columns))
+                     :test #'string=)
+      
+      ;; Test against AllegroCL built-in routines
+      #+allegro
+      (progn
+      (test integer (excl:base64-string-to-integer
+                              (integer-to-base64-string integer :columns columns)))
+      (test integer (base64-string-to-integer
+                              (excl:integer-to-base64-string integer)))
+      (test (string-to-base64-string string :columns columns)
+           (excl:usb8-array-to-base64-string usb8
+                                             (if (zerop columns)
+                                                 nil
+                                                 columns))
+           :test #'string=)
+      (test string (base64-string-to-string
+                   (excl:usb8-array-to-base64-string
+                    usb8
+                    (if (zerop columns)
+                        nil
+                        columns)))
+           :test #'string=))))))
+
+
+(defun time-routines ()
+  (let* ((str "abcdefghijklmnopqwertyu1234589jhwf2ff")
+        (usb8 (string-to-usb8-array str))
+        (int 12345678901234567890)
+        (n 50000))
+    (time-iterations n (integer-to-base64 int))
+    (time-iterations n (excl:integer-to-base64-string int))
+    (time-iterations n (string-to-base64 str))
+    (time-iterations n (excl:usb8-array-to-base64-string usb8))))
+
+      
+;;#+run-test (test-base64)