X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=TESTPAT;h=d9a81d6e77e27c81965adba5ca4928b1665e3245;hb=6769bf5954ca2bf221dfa9a41e2d47b24a135d79;hp=7becd1826f706ef5734cbea3847612cb8bc401b3;hpb=644e50db93cc29434e0f7d4f71831bbd5dfb2cb8;p=elisp%2Fflim.git diff --git a/TESTPAT b/TESTPAT index 7becd18..d9a81d6 100644 --- a/TESTPAT +++ b/TESTPAT @@ -12,78 +12,79 @@ ;;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)) + (ew-permit-null-encoded-text nil)) + (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) + ) ) ;;; @@ -119,12 +120,14 @@ 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 @@ -157,8 +160,8 @@ (decode "From: Nathaniel Borenstein \r - (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)" -"From: Nathaniel Borenstein (.HNmNeNlNy NoNa NiNlNhNtNp)")*B +\t(=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)" +"From: Nathaniel Borenstein \t(.HNmNeNlNy NoNa NiNlNhNtNp)")*B (decode "From: foo@bar.baz (=?ISO-8859-1?Q?a?=)" @@ -178,7 +181,7 @@ (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 @@ -207,8 +210,8 @@ (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?=)" @@ -237,7 +240,7 @@ (decode "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r - =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r +\t=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r " "From: $B$"$$(B ") @@ -986,6 +989,25 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") +(encode +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?$(C$!(B?" +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =?EUC-KR?B?P6ShPw==?=") + +(encode +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?$(C$!(B?" +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=") + +(encode +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?$(C$!(B?" +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=") + +(encode +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?$(C$!(B?" +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + =?EUC-KR?B?P6ShPw==?=") + ;---------------------------------------------------------------------------- ;;; Section 6: Encoding melancholic inputs. @@ -1096,6 +1118,96 @@ =?ISO-2022-JP?B?GyRCJCgbKEI=?= " 'separate-sticked-special) +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6ShPw==?=()aaaaa\r + " +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaa " +'("From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaa " + "From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaa ") +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?= + =?US-ASCII?Q?=3F?=()aaaaa " +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +'("From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " + "From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ") +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +'permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +'("From: + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()=?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?=\r + =?US-ASCII?Q?aaaaaaaaaaaaaaaa?= " + "From: =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?= + =?US-ASCII?Q?aa?=()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + ") +'permit-sticked-comment) + +;---------------------------------------------------------------------------- + ;;; Section 7: Using embedded-encoded-words. ;; ;; embedded-encoded-word $BI=8=(B @@ -1137,7 +1249,7 @@ ;; 1/3 ($B>.?tE@0J2<@Zl9g!"4q?tHVL\$N$b$N$KBP$7$F>e5-$N%k!<%k$rE,MQ$9$k!#(B +;; $B$,=E$J$k>l9g!"4q?tHVL\$N$b$N$KBP$7$F>e5-$N%k!<%k$rE,MQ$9$k!#(B ;; ;; NOTE: + $B$r(B embedded-encoded-word $BI=8=$N(B quote $BJ8;z$H8F$V!#(B ;; @@ -1171,9 +1283,10 @@ ;; ;; NOTE: RFC2047 $B$G$O(B encoded-word $B$,6uGr$G6h@Z$i$l$J$1$l$P$J$i$J$$$H$+!"(B ;; encoded-word $B$O(B 75bytes $B0J2<$G$J$1$l$P$J$i$J$$$H$+!"(B -;; encoded-word $B$,4^$^$l$k9T$O(B 76bytes $B0J2<$G$J$1$l$P$J$i$J$$$J$I$H$$$&(B +;; encoded-word $B$,4^$^$l$k9T$O(B 76bytes $B0J2<$G$J$1$l$P$J$i$J$$$H$+!"(B +;; encoded-text $B$,(B 1byte $B0J>e$J$1$l$P$J$i$J$$$J$I$H$$$&(B ;; $B5,Ls$,$"$k$,!"(Bembedded-encoded-word $BI=8=$G$O$=$l$i$O:NMQ$7$J$$!#(B -;; $BC1=c$K(B encoded-word $BFbIt$NJ8K!$@$1$rMxMQ$9$k!#(B +;; $BC1=c$K(B encoded-word $BFbIt$NJ8K!$@$1$r(B($B=$@5$7$F(B)$BMxMQ$9$k!#(B ;; ($BK\$l$=$NJ8;zNs$=$N$b$N$rI=8=$9$k$,!"$=$l$i$rO"7k$7$?J8;zNs(B ;; =?+US-ASCII?Q?abcd?= $B$O(B abcd $B$H$$$&J8;zNs$rI=8=$9$k$3$H$K$J$j!"(B ;; $B$=$l$>$l$NFbMF$NO"7k$H$O$J$i$J$$!#(B +;; $B$3$N>l9g!"(B=?+++US-ASCII?Q?abcd?= $B$H$7$J$1$l$P$J$i$J$$!#(B ;; ;; $B$3$l$O$H$/$K(B Non ASCII $B3HD%(B RFC822 $B$NCf$K(B embedded-encoded-word $BI=8=$r(B ;; $BKd$a9~$`$H$-$K5$$rIU$1$J$1$l$P$J$i$J$$!#(B($BKd$a9~$s$@7k2L$O@5$7$$(B @@ -1226,7 +1340,7 @@ (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) @@ -1288,8 +1402,8 @@ "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)" @@ -1311,15 +1425,15 @@ (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