(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
((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
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)))
(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)