+;;; -*- mode: emacs-lisp; coding: iso-2022-7bit-ss2 -*-
;----------------------------------------------------------------------------
;-------- This sequece of HYPHEN-MINUS is 76 bytes long. --------------------
;----------------------------------------------------------------------------
;;separate-sticked-comment ; violate the policy preserving absence of space
;;separate-sticked-special ; violate the policy preserving absence of space
;;zero-characters-encoded-word-hack ; violate common sense (very tricky)
-;;embedded-encoded-word ; violate character sequence semantics
+;;embedded-encoded-word ; violate character sequence semantics
;;separate-sticked-tokens-for-fold ; violate the policy preserving absence of space
;;encode-long-ascii-string-for-fold ; violate the policy preserving US-ASCII string
-;;divide-atom-for-fold ; violate tne policy preserving absence of space
+;;divide-atom-for-fold ; violate tne policy preserving absence of space
;;; test driver
-;;; FLIM or FLAM
-'(progn
-(require 'mime)
-(require 'ew-line)
-
-(if (< max-specpdl-size 1000)
- (setq max-specpdl-size 1000))
-
-(defun decode-test (src dsts &rest opts)
- (setq src (ew-crlf-to-lf src))
- (setq eword-lexical-analyze-cache nil)
- (setq eword-decode-sticked-encoded-word
- (or (memq 'permit-sticked-comment opts)
- (memq 'permit-sticked-special opts)))
- (setq eword-decode-quoted-encoded-word nil)
- (with-temp-buffer
- (insert src "\n" mail-header-separator)
- (eword-decode-header 'us-ascii mail-header-separator)
- (goto-char (point-min))
- (std11-narrow-to-header mail-header-separator)
- (std11-field-end)
- (let ((result (std11-unfold-string
- (buffer-substring (point-min) (point)))))
- (if (member result dsts) t result))))
-
-(defun encode-test (src dsts &rest opts)
- (setq eword-lexical-analyze-cache nil)
- (setq eword-decode-sticked-encoded-word nil)
- (setq eword-decode-quoted-encoded-word nil)
- (with-temp-buffer
- (insert src "\n" mail-header-separator)
- (goto-char (point-min))
- (eword-encode-header 'us-ascii)
- (goto-char (point-min))
- (std11-narrow-to-header mail-header-separator)
- (std11-field-end)
- (let ((result (buffer-substring (point-min) (point))))
- (if (member result dsts) t result))))
-)
-
-;;; EW
-(progn
-(require 'ew-dec)
-(require 'ew-line)
-
-(defun decode-test (src dsts &rest opts)
- (setq ew-decode-field-cache-buf nil)
- (let ((ew-decode-sticked-encoded-word nil)
- (ew-decode-quoted-encoded-word nil)
- (ew-ignore-75bytes-limit (memq 'ignore-75bytes-limit opts))
- (ew-ignore-76bytes-limit (memq 'ignore-76bytes-limit opts))
- (ew-permit-sticked-comment (memq 'permit-sticked-comment opts))
- (ew-permit-sticked-special (memq 'permit-sticked-special opts)))
- (string-match "\\`[^:]*:" src)
- (let* ((field-name (substring src
- (match-beginning 0)
- (1- (match-end 0))))
- (field-body (substring src (match-end 0)))
- (result (ew-crlf-unfold
- (concat field-name ":"
- (ew-decode-field field-name field-body)))))
- (if (member result dsts) t result))))
-
-(defun encode-test (src dsts &rest opts)
- nil)
+(defvar target 'doodle)
+(cond
+ ((eq target 'flim) ; FLIM or FLAM
+ (require 'mime)
+ (require 'ew-line)
+
+ (if (< max-specpdl-size 1000)
+ (setq max-specpdl-size 1000))
+
+ (defun decode-test (src dsts &rest opts)
+ (setq src (ew-crlf-to-lf src))
+ (setq eword-lexical-analyze-cache nil)
+ (setq eword-decode-sticked-encoded-word
+ (or (memq 'permit-sticked-comment opts)
+ (memq 'permit-sticked-special opts)))
+ (setq eword-decode-quoted-encoded-word nil)
+ (with-temp-buffer
+ (insert src "\n" mail-header-separator)
+ (eword-decode-header 'us-ascii mail-header-separator)
+ (goto-char (point-min))
+ (std11-narrow-to-header mail-header-separator)
+ (std11-field-end)
+ (let ((result (std11-unfold-string
+ (buffer-substring (point-min) (point)))))
+ (if (member result dsts) t result))))
+
+ (defun encode-test (src dsts &rest opts)
+ (setq eword-lexical-analyze-cache nil)
+ (setq eword-decode-sticked-encoded-word nil)
+ (setq eword-decode-quoted-encoded-word nil)
+ (with-temp-buffer
+ (insert src "\n" mail-header-separator)
+ (goto-char (point-min))
+ (eword-encode-header 'us-ascii)
+ (goto-char (point-min))
+ (std11-narrow-to-header mail-header-separator)
+ (std11-field-end)
+ (let ((result (buffer-substring (point-min) (point))))
+ (if (member result dsts) t result)))))
+
+ ((eq target 'doodle) ; DOODLE
+ (require 'ew-dec)
+ (require 'ew-line)
+
+ (defun decode-test (src dsts &rest opts)
+ (setq ew-decode-field-cache-buf nil)
+ (let ((ew-decode-sticked-encoded-word nil)
+ (ew-decode-quoted-encoded-word nil)
+ (ew-ignore-75bytes-limit (memq 'ignore-75bytes-limit opts))
+ (ew-ignore-76bytes-limit (memq 'ignore-76bytes-limit opts))
+ (ew-permit-sticked-comment (memq 'permit-sticked-comment opts))
+ (ew-permit-sticked-special (memq 'permit-sticked-special opts)))
+ (string-match "\\`[^:]*:" src)
+ (let* ((field-name (substring src
+ (match-beginning 0)
+ (1- (match-end 0))))
+ (field-body (substring src (match-end 0)))
+ (result (ew-crlf-unfold
+ (concat field-name ":"
+ (ew-decode-field field-name field-body)))))
+ (if (member result dsts) t result))))
+
+ (defun encode-test (src dsts &rest opts)
+ nil)
+ )
)
;;;
res))
(defun report ()
- (insert
- (format "\n\"Decode: %d/%d Encode: %d/%d Total: %d/%d\""
- decode-succ-count decode-all-count
- encode-succ-count encode-all-count
- (+ decode-succ-count encode-succ-count)
- (+ decode-all-count encode-all-count))))
+ (let ((report (format "Decode: %d/%d Encode: %d/%d Total: %d/%d"
+ decode-succ-count decode-all-count
+ encode-succ-count encode-all-count
+ (+ decode-succ-count encode-succ-count)
+ (+ decode-all-count encode-all-count))))
+ (if noninteractive
+ (princ (concat report "\n"))
+ (insert "\n\"" report "\""))))
;;;start-test
(decode
"From: Nathaniel Borenstein <nsb@thumper.bellcore.com>\r
- (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)"
-"From: Nathaniel Borenstein <nsb@thumper.bellcore.com> (\e.H\eNm\eNe\eNl\eNy \eNo\eNa \eNi\eNl\eNh\eNt\eNp)")\e*B
+\t(=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)"
+"From: Nathaniel Borenstein <nsb@thumper.bellcore.com>\t(\e.H\eNm\eNe\eNl\eNy \eNo\eNa \eNi\eNl\eNh\eNt\eNp)")\e*B
(decode
"From: foo@bar.baz (=?ISO-8859-1?Q?a?=)"
(decode
"From: foo@bar.baz (=?ISO-8859-1?Q?a?=\r
- =?ISO-8859-1?Q?b?=)"
+\t=?ISO-8859-1?Q?b?=)"
"From: foo@bar.baz (ab)")
(decode
(decode
"Subject: (=?ISO-8859-1?Q?a?=\r
- =?ISO-8859-1?Q?b?=)"
-"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)")
+\t=?ISO-8859-1?Q?b?=)"
+"Subject: (=?ISO-8859-1?Q?a?=\t=?ISO-8859-1?Q?b?=)")
(decode
"Subject: (=?ISO-8859-1?Q?a_b?=)"
(decode
"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
+\t=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
<akr@jaist.ac.jp>"
"From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
(decode
"Subject: =?Unknown-Charset?B?gqA=?=\r
- =?Unknown-Charset?B?gqA=?="
+\t=?Unknown-Charset?B?gqA=?="
"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
'embedded-encoded-word)
"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )")
(decode
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )"
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )")
+"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=\t)"
+"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=\t)")
(decode
"From: akr@jaist.ac.jp (\\\r\\\n)"
(decode
"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A=09?=)"
-"From: akr@jaist.ac.jp (\\ )")
+"From: akr@jaist.ac.jp (\\\t)")
(decode
"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= )"
"From: akr@jaist.ac.jp (\\ )")
(decode
-"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= )"
-"From: akr@jaist.ac.jp (\\ )")
+"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\t)"
+"From: akr@jaist.ac.jp (\\\t)")
(decode
"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\r