From 08989f79f3a864a18095523d972560822d3e1fba Mon Sep 17 00:00:00 2001
From: pfdietz <pfdietz@localhost>
Date: Thu, 26 Aug 2004 03:07:08 +0000
Subject: [PATCH] Added tests for ~[ ... ~]

---
 ansi-tests/format-conditional.lsp | 142 ++++++++++++++++++++++++++++++
 ansi-tests/load-format.lsp        |   1 +
 2 files changed, 143 insertions(+)
 create mode 100644 ansi-tests/format-conditional.lsp

diff --git a/ansi-tests/format-conditional.lsp b/ansi-tests/format-conditional.lsp
new file mode 100644
index 00000000..b8f762e3
--- /dev/null
+++ b/ansi-tests/format-conditional.lsp
@@ -0,0 +1,142 @@
+;-*- Mode:     Lisp -*-
+;;;; Author:   Paul Dietz
+;;;; Created:  Wed Aug 25 19:27:25 2004
+;;;; Contains: Tests of the ~[ ~] forms
+
+(in-package :cl-test)
+
+(compile-and-load "printer-aux.lsp")
+
+(deftest format.cond.1
+  (format nil "~[~]" 0)
+  "")
+
+(deftest format.cond.2
+  (format nil "~[a~]" 0)
+  "a")
+
+(deftest format.cond.3
+  (format nil "~[a~]" -1)
+  "")
+
+(deftest format.cond.4
+  (format nil "~[a~]" (1- most-negative-fixnum))
+  "")
+
+(deftest format.cond.5
+  (format nil "~[a~]" 1)
+  "")
+
+(deftest format.cond.6
+  (format nil "~[a~]" (1+ most-positive-fixnum))
+  "")
+
+(deftest format.cond.7
+  (loop for i from -1 to 10
+	collect (format nil "~[a~;b~;c~;d~;e~;f~;g~;h~;i~]" i))
+  ("" "a" "b" "c" "d" "e" "f" "g" "h" "i" "" ""))
+
+(deftest format.cond.8
+  (format nil "~0[a~;b~;c~;d~]" 3)
+  "a")
+
+(deftest format.cond.9
+  (format nil "~-1[a~;b~;c~;d~]" 3)
+  "")
+
+(deftest format.cond.10
+  (format nil "~1[a~;b~;c~;d~]" 3)
+  "b")
+
+(deftest format.cond.11
+  (format nil "~4[a~;b~;c~;d~]" 3)
+  "")
+
+(deftest format.cond.12
+  (format nil "~100000000000000000000000000000000[a~;b~;c~;d~]" 3)
+  "")
+
+(deftest format.cond.13
+  (loop for i from -1 to 10
+	collect (format nil "~v[a~;b~;c~;d~;e~;f~;g~;h~;i~]" i nil))
+  ("" "a" "b" "c" "d" "e" "f" "g" "h" "i" "" ""))
+
+(deftest format.cond.14
+  (loop for i from -1 to 10
+	collect (format nil "~v[a~;b~;c~;d~;e~;f~;g~;h~;i~]" nil i))
+  ("" "a" "b" "c" "d" "e" "f" "g" "h" "i" "" ""))
+
+(deftest format.cond.15
+  (format nil "~#[A~;B~]")
+  "A")
+
+(deftest format.cond.16
+  (format nil "~#[A~;B~]" nil)
+  "B")
+
+;;; ~[ .~:;  ~]
+
+(deftest format.cond\:.1
+  (loop for i from -100 to 100
+	for s = (format nil "~[~:;a~]" i)
+	unless (or (zerop i) (string= s "a"))
+	collect (list i s))
+  nil)
+
+(deftest format.cond\:.2
+  (format nil "~[a~:;b~]" 0)
+  "a")
+
+(deftest format.cond\:.3
+  (format nil "~[a~:;b~]" (1- most-negative-fixnum))
+  "b")
+
+(deftest format.cond\:.4
+  (format nil "~[a~:;b~]" (1+ most-positive-fixnum))
+  "b")
+
+(deftest format.cond\:.5
+  (loop for i from -1 to 10
+	collect (format nil "~[a~;b~;c~;d~:;e~]" i))
+  ("e" "a" "b" "c" "d" "e" "e" "e" "e" "e" "e" "e"))
+
+(deftest format.cond\:.6
+  (loop for i from -1 to 10
+	collect (format nil "~v[a~;b~;c~;d~:;e~]" i nil))
+  ("e" "a" "b" "c" "d" "e" "e" "e" "e" "e" "e" "e"))
+
+(deftest format.cond\:.7
+  (loop for i from -1 to 10
+	collect (format nil "~v[a~;b~;c~;d~:;e~]" nil i))
+  ("e" "a" "b" "c" "d" "e" "e" "e" "e" "e" "e" "e"))
+
+(deftest format.cond\:.8
+  (format nil "~#[A~:;B~]")
+  "A")
+
+(deftest format.cond\:.9
+  (format nil "~#[A~:;B~]" nil nil)
+  "B")
+
+;;; ~:[...~]
+
+(deftest format.\:cond.1
+  (format nil "~:[a~;b~]" nil)
+  "a")
+
+(deftest format.\:cond.2
+  (loop for x in *mini-universe*
+	for s = (format nil "~:[a~;b~]" x)
+	when (and x (not (string= s "b")))
+	collect (list x s))
+  nil)
+
+;;; ~@[ ... ~]
+
+(deftest format.@cond.1
+  (format nil "~@[X~]Y~A" 1)
+  "XY1")
+
+(deftest format.@cond.2
+  (format nil "~@[X~]Y~A" nil 2)
+  "Y2")
diff --git a/ansi-tests/load-format.lsp b/ansi-tests/load-format.lsp
index b7bb9620..8af365e3 100644
--- a/ansi-tests/load-format.lsp
+++ b/ansi-tests/load-format.lsp
@@ -40,3 +40,4 @@
 
 ;;; 22.3.7
 (load "format-goto.lsp")
+(load "format-conditional.lsp")
-- 
GitLab