0.8.18.14:
[sbcl.git] / contrib / sb-bsd-sockets / tests.lisp
index dc59b94..ba41bc5 100644 (file)
@@ -1,18 +1,6 @@
 (defpackage "SB-BSD-SOCKETS-TEST"
   (:use "CL" "SB-BSD-SOCKETS" "SB-RT"))
 
-#||
-
-<H1>Tests</h1>
-
-There should be at least one test for pretty much everything you can do
-with the package.  In some places I've been more diligent than others; more
-tests gratefully accepted.
-
-Tests are in the file <tt>tests.lisp</tt> and also make good examples.
-
-||#
-
 (in-package :sb-bsd-sockets-test)
 
 ;;; a real address
@@ -102,6 +90,11 @@ Tests are in the file <tt>tests.lisp</tt> and also make good examples.
         ((or (>= i (length buffer)) (not c) (eq c eof)) i)
       (setf (elt buffer i) c))))
 
+#+internet-available
+(deftest name-service-return-type
+  (vectorp (host-ent-address (get-host-by-address #(127 0 0 1))))
+  t)
+
 ;;; these require that the echo services are turned on in inetd
 #+internet-available
 (deftest simple-tcp-client
@@ -116,6 +109,18 @@ Tests are in the file <tt>tests.lisp</tt> and also make good examples.
   t)
 
 #+internet-available
+(deftest sockaddr-return-type
+  (let ((s (make-instance 'inet-socket :type :stream :protocol :tcp)))
+    (unwind-protect 
+        (progn
+          (socket-connect s #(127 0 0 1) 7)
+          (multiple-value-bind (host port) (socket-peername s)
+            (and (vectorp host)
+                 (numberp port))))
+      (socket-close s)))
+  t)
+
+#+internet-available
 (deftest simple-udp-client
   (let ((s (make-instance 'inet-socket :type :datagram :protocol (get-protocol-by-name "udp")))
         (data (make-string 200)))
@@ -135,10 +140,14 @@ Tests are in the file <tt>tests.lisp</tt> and also make good examples.
 
 (deftest simple-local-client
     (progn
-      ;; SunOS (Solaris) and Darwin systems don't have a socket at 
-      ;; /dev/log.  We might also be building in a chroot or something, 
-      ;; so don't fail this test just because the file is unavailable
-      (when (probe-file "/dev/log")
+      ;; SunOS (Solaris) and Darwin systems don't have a socket at
+      ;; /dev/log.  We might also be building in a chroot or
+      ;; something, so don't fail this test just because the file is
+      ;; unavailable, or if it's a symlink to some weird character
+      ;; device.
+      (when (and (probe-file "/dev/log")
+                (sb-posix:s-issock
+                 (sb-posix::stat-mode (sb-posix:stat "/dev/log"))))
        (let ((s (make-instance 'local-socket :type :datagram)))
          (format t "Connecting ~A... " s)
          (finish-output)