diff --git a/src/tests/ecl-tests.asd b/src/tests/ecl-tests.asd index b692cf34a..1738fd1cd 100644 --- a/src/tests/ecl-tests.asd +++ b/src/tests/ecl-tests.asd @@ -21,7 +21,8 @@ (:module features :default-component-class asdf:cl-source-file.lsp :components - ((:file "external-formats" :if-feature :unicode))))) + ((:file "external-formats" :if-feature :unicode) + (:file "ieee-fp" :if-feature :ieee-floating-point))))) (asdf:defsystem #:ecl-tests/stress :serial t diff --git a/src/tests/ecl-tests.lisp b/src/tests/ecl-tests.lisp index e7cd7b0a6..b5761d63b 100644 --- a/src/tests/ecl-tests.lisp +++ b/src/tests/ecl-tests.lisp @@ -26,6 +26,7 @@ (suite 'make-check '(features/eformat + features/ieee-fp regressions/ansi+ regressions/mixed regressions/cmp @@ -45,7 +46,8 @@ regressions/mp)) (suite 'features - '(features/eformat)) + '(features/eformat + features/ieee-fp)) ;;; Some syntactic sugar for 2am diff --git a/src/tests/features/ieee-fp.lsp b/src/tests/features/ieee-fp.lsp new file mode 100644 index 000000000..e91b245f8 --- /dev/null +++ b/src/tests/features/ieee-fp.lsp @@ -0,0 +1,48 @@ +;;;; -*- Mode: Lisp; Syntax: Common-Lisp; indent-tabs-mode: nil -*- +;;;; vim: set filetype=lisp tabstop=8 shiftwidth=2 expandtab: + +;;;; Author: Daniel KochmaƄski +;;;; Created: 2016-08-12 +;;;; Contains: IEEE floating point tests +;;;; + +(in-package :cl-test) + +(suite 'features/ieee-fp) + +(test ieee-fp.0001.infinity-eql + (let ((sfni ext:single-float-negative-infinity) + (sfpi ext:single-float-positive-infinity) + (dfni ext:double-float-negative-infinity) + (dfpi ext:double-float-positive-infinity)) + (is (eql sfni (- sfpi))) + (is (eql dfni (- dfpi))) + (is (not (eql sfni (- dfpi)))) + (is (= sfni (- dfpi))))) + +(test ieee-fp.0002.printing + (let ((nums (list ext:single-float-negative-infinity + ext:single-float-positive-infinity + ext:double-float-negative-infinity + ext:double-float-positive-infinity + (si:nan) + (si:infinity))) + (*standard-output* (make-string-output-stream))) + (dolist (i nums) + (finishes + (let ((*print-readably* t) + (*read-eval* t)) + (print nums))) + (finishes + (let ((*print-readably* nil) + (*read-eval* nil)) + (print nums))) + (signals print-not-readable + (let ((*print-readably* t) + (*read-eval* nil)) + (print nums)))))) + +(test ieee-fp.0003.predicates + (is (ext:float-infinity-p ext:single-float-negative-infinity)) + (is (ext:float-infinity-p ext:single-float-positive-infinity)) + (is (ext:float-nan-p (si:nan))))