ascii: Add support for multibyte characters.
[pspp] / tests / output / ascii.at
diff --git a/tests/output/ascii.at b/tests/output/ascii.at
new file mode 100644 (file)
index 0000000..3c9243e
--- /dev/null
@@ -0,0 +1,541 @@
+AT_BANNER([ASCII driver -- rendering corner cases])
+
+AT_SETUP([ASCII driver overwriting single-width text])
+AT_KEYWORDS([render rendering])
+AT_DATA([input], [dnl
+## overwriting rest of line
+# plain
+0 0 0 abc
+1 0 0 BCD
+# emphasized over plain
+0 1 0 efg
+1 1 1 FGH
+# plain over emphasized
+0 2 1 ijk
+1 2 0 JKL
+# emphasized over emphasized
+0 3 1 mno
+1 3 1 NOP
+
+## overwriting partial line
+# plain
+0 5 0 abcdef
+0 5 0 A
+2 5 0 CDE
+# emphasized over plain
+0 6 0 ghijkl
+0 6 1 G
+2 6 1 IJK
+# plain over emphasized
+0 7 1 mnopqr
+0 7 0 M
+2 7 0 OPQ
+# emphasized over emphasized
+0 8 1 stuvwx
+0 8 1 S
+2 8 1 UVW
+
+## overwriting rest of line with double-width characters
+# plain
+0 10 0 kakiku
+2 10 0 きくけ
+# emphasized over plain
+0 11 0 kakiku
+2 11 1 きくけ
+# plain over emphasized
+0 12 1 kakiku
+2 12 0 きくけ
+# emphasized over emphasized
+0 13 1 kakiku
+2 13 1 きくけ
+
+## overwriting partial line with double-width characters
+# plain
+0 15 0 kakikukeko
+0 15 0 か
+4 15 0 くけ
+# emphasized over plain
+0 16 0 kakikukeko
+0 16 1 か
+4 16 1 くけ
+# plain over emphasized
+0 17 1 kakikukeko
+0 17 0 か
+4 17 0 くけ
+# emphasized over emphasized
+0 18 1 kakikukeko
+0 18 1 か
+4 18 1 くけ
+])
+AT_CHECK([render-test --draw-mode --emph=none input], [0], [dnl
+aBCD
+eFGH
+iJKL
+mNOP
+
+AbCDEf
+GhIJKl
+MnOPQr
+StUVWx
+
+kaきくけ
+kaきくけ
+kaきくけ
+kaきくけ
+
+かkiくけko
+かkiくけko
+かkiくけko
+かkiくけko
+])
+AT_CHECK([render-test --draw-mode --emph=bold input], [0], [dnl
+aBCD
+eF\bFG\bGH\bH
+i\biJKL
+m\bmN\bNO\bOP\bP
+
+AbCDEf
+G\bGhI\bIJ\bJK\bKl
+Mn\bnOPQr\br
+S\bSt\btU\bUV\bVW\bWx\bx
+
+kaきくけ
+kaき\bきく\bくけ\b
+k\bka\baきくけ
+k\bka\baき\bきく\bくけ\b
+
+かkiくけko
+か\bかkiく\bくけ\bけko
+かk\bki\biくけk\bko\bo
+か\bかk\bki\biく\bくけ\bけk\bko\bo
+])
+AT_CHECK([render-test --draw-mode --emph=underline input], [0], [dnl
+aBCD
+e_\bF_\bG_\bH
+_\biJKL
+_\bm_\bN_\bO_\bP
+
+AbCDEf
+_\bGh_\bI_\bJ_\bKl
+M_\bnOPQ_\br
+_\bS_\bt_\bU_\bV_\bW_\bx
+
+kaきくけ
+ka_\bき_\bく_\b
+_\bk_\baきくけ
+_\bk_\ba_\bき_\bく_\b
+
+かkiくけko
+_\bかki_\bく_\bけko
+か_\bk_\biくけ_\bk_\bo
+_\bか_\bk_\bi_\bく_\bけ_\bk_\bo
+])
+AT_CLEANUP
+
+AT_SETUP([ASCII driver overwriting double-width text])
+AT_KEYWORDS([render rendering])
+AT_DATA([input], [dnl
+## overwrite rest of line, aligned double-width over double-width
+# plain
+0 0 0 あいう
+2 0 0 きくけ
+# emphasized over plain
+0 1 0 あいう
+2 1 1 きくけ
+# plain over emphasized
+0 2 1 あいう
+2 2 0 きくけ
+# emphasized over emphasized
+0 3 1 あいう
+2 3 1 きくけ
+
+## overwrite rest of line, misaligned double-width over double-width
+# plain
+0 5 0 あいう
+3 5 0 きくけ
+# emphasized over plain
+0 6 0 あいう
+3 6 1 きくけ
+# plain over emphasized
+0 7 1 あいう
+3 7 0 きくけ
+# emphasized over emphasized
+0 8 1 あいう
+3 8 1 きくけ
+
+## overwrite partial line, aligned double-width over double-width
+# plain
+0 10 0 あいうえお
+0 10 0 か
+4 10 0 くけ
+# emphasized over plain
+0 11 0 あいうえお
+0 11 1 か
+4 11 1 くけ
+# plain over emphasized
+0 12 1 あいうえお
+0 12 0 か
+4 12 0 くけ
+# emphasized over emphasized
+0 13 1 あいうえお
+0 13 1 か
+4 13 1 くけ
+
+## overwrite partial line, misaligned double-width over double-width
+# plain
+0 15 0 あいうえおさ
+1 15 0 か
+5 15 0 くけ
+# emphasized over plain
+0 16 0 あいうえおさ
+1 16 1 か
+5 16 1 くけ
+# plain over emphasized
+0 17 1 あいうえおさ
+1 17 0 か
+5 17 0 くけ
+# emphasized over emphasized
+0 18 1 あいうえおさ
+1 18 1 か
+5 18 1 くけ
+
+## overwrite rest of line, aligned single-width over double-width
+# plain
+0 20 0 あいう
+2 20 0 kikuko
+# emphasized over plain
+0 21 0 あいう
+2 21 1 kikuko
+# plain over emphasized
+0 22 1 あいう
+2 22 0 kikuko
+# emphasized over emphasized
+0 23 1 あいう
+2 23 1 kikuko
+
+## overwrite rest of line, misaligned single-width over double-width
+# plain
+0 25 0 あいう
+3 25 0 kikuko
+# emphasized over plain
+0 26 0 あいう
+3 26 1 kikuko
+# plain over emphasized
+0 27 1 あいう
+3 27 0 kikuko
+# emphasized over emphasized
+0 28 1 あいう
+3 28 1 kikuko
+
+## overwrite partial line, aligned single-width over double-width
+# plain
+0 30 0 あいうえお
+0 30 0 ka
+4 30 0 kuke
+# emphasized over plain
+0 31 0 あいうえお
+0 31 1 ka
+4 31 1 kuke
+# plain over emphasized
+0 32 1 あいうえお
+0 32 0 ka
+4 32 0 kuke
+# emphasized over emphasized
+0 33 1 あいうえお
+0 33 1 ka
+4 33 1 kuke
+
+## overwrite partial line, misaligned single-width over double-width
+# plain
+0 35 0 あいうえおさ
+1 35 0 a
+5 35 0 kuke
+# emphasized over plain
+0 36 0 あいうえおさ
+1 36 1 a
+5 36 1 kuke
+# plain over emphasized
+0 37 1 あいうえおさ
+1 37 0 a
+5 37 0 kuke
+# emphasized over emphasized
+0 38 1 あいうえおさ
+1 38 1 a
+5 38 1 kuke
+])
+AT_CHECK([render-test --draw-mode --emph=none input], [0], [dnl
+あきくけ
+あきくけ
+あきくけ
+あきくけ
+
+あ?きくけ
+あ?きくけ
+あ?きくけ
+あ?きくけ
+
+かいくけお
+かいくけお
+かいくけお
+かいくけお
+
+?か??くけ?さ
+?か??くけ?さ
+?か??くけ?さ
+?か??くけ?さ
+
+あkikuko
+あkikuko
+あkikuko
+あkikuko
+
+あ?kikuko
+あ?kikuko
+あ?kikuko
+あ?kikuko
+
+kaいkukeお
+kaいkukeお
+kaいkukeお
+kaいkukeお
+
+?aい?kuke?さ
+?aい?kuke?さ
+?aい?kuke?さ
+?aい?kuke?さ
+])
+AT_CHECK([render-test --draw-mode --emph=bold input], [0], [dnl
+あきくけ
+あき\bきく\bくけ\b
+あ\bあきくけ
+あ\bあき\bきく\bくけ\b
+
+あ?きくけ
+あ?き\bきく\bくけ\b
+あ\bあ?きくけ
+あ\bあ?き\bきく\bくけ\b
+
+かいくけお
+か\bかいく\bくけ\bけお
+かい\bいくけお\b
+か\bかい\bいく\bくけ\bけお\b
+
+?か??くけ?さ
+?か\bか??く\bくけ\bけ?さ
+?か??くけ?さ\b
+?か\bか??く\bくけ\bけ?さ\b
+
+あkikuko
+あk\bki\bik\bku\buk\bko\bo
+あ\bあkikuko
+あ\bあk\bki\bik\bku\buk\bko\bo
+
+あ?kikuko
+あ?k\bki\bik\bku\buk\bko\bo
+あ\bあ?kikuko
+あ\bあ?k\bki\bik\bku\buk\bko\bo
+
+kaいkukeお
+k\bka\baいk\bku\buk\bke\beお
+kaい\bいkukeお\b
+k\bka\baい\bいk\bku\buk\bke\beお\b
+
+?aい?kuke?さ
+?a\baい?k\bku\buk\bke\be?さ
+?aい\bい?kuke?さ\b
+?a\baい\bい?k\bku\buk\bke\be?さ\b
+])
+AT_CHECK([render-test --draw-mode --emph=underline input], [0], [dnl
+あきくけ
+あ_\bき_\bく_\b
+_\bあきくけ
+_\bあ_\bき_\bく_\b
+
+あ?きくけ
+あ?_\bき_\bく_\b
+_\bあ?きくけ
+_\bあ?_\bき_\bく_\b
+
+かいくけお
+_\bかい_\bく_\bけお
+か_\bいくけ_\b
+_\bか_\bい_\bく_\bけ_\b
+
+?か??くけ?さ
+?_\bか??_\bく_\bけ?さ
+?か??くけ?_\b
+?_\bか??_\bく_\bけ?_\b
+
+あkikuko
+あ_\bk_\bi_\bk_\bu_\bk_\bo
+_\bあkikuko
+_\bあ_\bk_\bi_\bk_\bu_\bk_\bo
+
+あ?kikuko
+あ?_\bk_\bi_\bk_\bu_\bk_\bo
+_\bあ?kikuko
+_\bあ?_\bk_\bi_\bk_\bu_\bk_\bo
+
+kaいkukeお
+_\bk_\baい_\bk_\bu_\bk_\beお
+ka_\bいkuke_\b
+_\bk_\ba_\bい_\bk_\bu_\bk_\be_\b
+
+?aい?kuke?さ
+?_\baい?_\bk_\bu_\bk_\be?さ
+?a_\bい?kuke?_\b
+?_\ba_\bい?_\bk_\bu_\bk_\be?_\b
+])
+AT_CLEANUP
+
+AT_SETUP([ASCII driver overwriting combining characters])
+AT_KEYWORDS([render rendering])
+AT_DATA([input], [dnl
+## overwriting rest of line, ordinary over combining
+# plain
+0 0 0 àéî
+1 0 0 xyz
+# emphasized over plain
+0 1 0 àéî
+1 1 1 xyz
+# plain over emphasized
+0 2 1 àéî
+1 2 0 xyz
+# emphasized over emphasized
+0 3 1 àéî
+1 3 1 xyz
+
+## overwriting rest of line, combining over ordinary
+# plain
+0 5 0 xyz
+1 5 0 àéî
+# emphasized over plain
+0 6 0 xyz
+1 6 1 àéî
+# plain over emphasized
+0 7 1 xyz
+1 7 0 àéî
+# emphasized over emphasized
+0 8 1 xyz
+1 8 1 àéî
+
+## overwriting partial line, ordinary over combining
+# plain
+0 10 0 àéîo̧ũẙ
+0 10 0 a
+2 10 0 iou
+# emphasized over plain
+0 11 0 àéîo̧ũẙ
+0 11 1 a
+2 11 1 iou
+# plain over emphasized
+0 12 1 àéîo̧ũẙ
+0 12 0 a
+2 12 0 iou
+# emphasized over emphasized
+0 13 1 àéîo̧ũẙ
+0 13 1 a
+2 13 1 iou
+
+## overwriting partial line, combining over ordinary
+# plain
+0 15 0 aeiouy
+0 15 0 à
+2 15 0 îo̧ũ
+# emphasized over plain
+0 16 0 aeiouy
+0 16 1 à
+2 16 1 îo̧ũ
+# plain over emphasized
+0 17 1 aeiouy
+0 17 0 à
+2 17 0 îo̧ũ
+# emphasized over emphasized
+0 18 1 aeiouy
+0 18 1 à
+2 18 1 îo̧ũ
+])
+AT_CHECK([render-test --draw-mode --emph=none input], [0], [dnl
+àxyz
+àxyz
+àxyz
+àxyz
+
+xàéî
+xàéî
+xàéî
+xàéî
+
+aéiouẙ
+aéiouẙ
+aéiouẙ
+aéiouẙ
+
+àeîo̧ũy
+àeîo̧ũy
+àeîo̧ũy
+àeîo̧ũy
+])
+AT_CHECK([render-test --draw-mode --emph=bold input], [0], [dnl
+àxyz
+àx\bxy\byz\bz
+a\bàxyz
+a\bàx\bxy\byz\bz
+
+xàéî
+xa\bàe\béi\b
+x\bxàéî
+x\bxa\bàe\béi\b
+
+aéiouẙ
+a\baéi\bio\bou\buẙ
+ae\béiouy\b
+a\bae\béi\bio\bou\buy\b
+
+àeîo̧ũy
+a\bàei\bîo\bo̧u\bũy
+àe\beîo̧ũy\by
+a\bàe\bei\bîo\bo̧u\bũy\by
+])
+AT_CHECK([render-test --draw-mode --emph=underline input], [0], [dnl
+àxyz
+à_\bx_\by_\bz
+_\bàxyz
+_\bà_\bx_\by_\bz
+
+xàéî
+x_\bà_\bé_\b
+_\bxàéî
+_\bx_\bà_\bé_\b
+
+aéiouẙ
+_\baé_\bi_\bo_\buẙ
+a_\béiou_\b
+_\ba_\bé_\bi_\bo_\bu_\b
+
+àeîo̧ũy
+_\bàe_\bî_\bo̧_\bũy
+à_\beîo̧ũ_\by
+_\bà_\be_\bî_\bo̧_\bũ_\by
+])
+AT_CLEANUP
+
+AT_SETUP([ASCII driver Unicode box characters])
+AT_KEYWORDS([render rendering])
+AT_DATA([input], [3 3
+1*2 @abc
+2*1 @d\ne\nf
+2*1 @g\nh\ni
+@j
+1*2 @klm
+])
+AT_CHECK([render-test --box=unicode input], [0], [dnl
+╭───┬─╮
+│abc│d│
+├─┬─┤e│
+│g│j│f│
+│h├─┴─┤
+│i│klm│
+╰─┴───╯
+])
+AT_CLEANUP