Description: ensure emphases work correctly in different contexts
run this test
Designed by: Crawford Currie
'Code' emphasis (= sign)
Basic cases
Verify that spaces, newlines and left brackets are all valid delimiters for opening an emphasis expression.
CASE NL_BEFORE_SPACE_AFTER
<-- expected A_NL_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within after
<-- /actual -->
CASE NL_BEFORE_NL_AFTER
<-- expected A_NL_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within
after
<-- /actual -->
CASE NL_BEFORE_RB_AFTER
<-- expected A_NL_BEFORE_RB_AFTER -->
before within )after
<-- /expected -->
<-- actual -->
before
within )after
<-- /actual -->
CASE SPACE_BEFORE_NL_AFTER
<-- expected A_SPACE_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within
after
<-- /actual -->
CASE SPACE_BEFORE_SPACE_AFTER
<-- expected A_SPACE_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within after
<-- /actual -->
CASE SPACE_BEFORE_RB_AFTER
<-- expected A_SPACE_BEFORE_RB_AFTER -->
before within )after
<-- /expected -->
<-- actual -->
before within )after
<-- /actual -->
CASE LB_BEFORE_SPACE_AFTER
<-- expected A_LB_BEFORE_SPACE_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within after
<-- /actual -->
CASE LB_BEFORE_NL_AFTER
<-- expected A_LB_BEFORE_NL_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within
after
<-- /actual -->
CASE LB_BEFORE_RB_AFTER
<-- expected A_LB_BEFORE_RB_AFTER -->
(within )
<-- /expected -->
<-- actual -->
(within )
<-- /actual -->
Closings
Assume that the following characters are equivalent to space, nl and RB and can close an expression: ,.;:!?
CASE COMMA_AFTER
<-- expected A_COMMA_AFTER -->
before within ,after
<-- /expected -->
<-- actual -->
before within ,after
<-- /actual -->
CASE PERIOD_AFER
<-- expected A_PERIOD_AFER -->
before within .after
<-- /expected -->
<-- actual -->
before within .after
<-- /actual -->
CASE SEMIC_AFTER
<-- expected A_SEMIC_AFTER -->
before within ;after
<-- /expected -->
<-- actual -->
before within ;after
<-- /actual -->
CASE COLON_AFTER
<-- expected A_COLON_AFTER -->
before within :after
<-- /expected -->
<-- actual -->
before within :after
<-- /actual -->
CASE PLING_AFTER
<-- expected A_PLING_AFTER -->
before within !after
<-- /expected -->
<-- actual -->
before within !after
<-- /actual -->
CASE QM_AFTER
<-- expected A_QM_AFTER -->
before within ?after
<-- /expected -->
<-- actual -->
before within ?after
<-- /actual -->
CASE OTHER_CHARACTERS
<-- expected A_OTHER_CHARACTERS -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /expected -->
<-- actual -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /actual -->
Embedded delimiters
Cases where a related delimiter is embedded in, or overlaps with the string to be emphasised
CASE RELATIONSHIP_TO_DOUBLE
<-- expected A_RELATIONSHIP_TO_DOUBLE1 -->
before aabb= after
<-- /expected -->
<-- actual -->
before aabb= after
<-- /actual -->
<-- expected A_RELATIONSHIP_TO_DOUBLE2 -->
before aa= bb= cc== after
<-- /expected -->
<-- actual -->
before aa= bb= cc== after
<-- /actual -->
<-- expected A_RELATIONSHIP_TO_DOUBLE3 -->
before aa bb cc after
<-- /expected -->
<-- actual -->
before aa bb cc after
<-- /actual -->
<-- expected A_RELATIONSHIP_TO_DOUBLE4 -->
before aa cc bb after
<-- /expected -->
<-- actual -->
before aa cc bb after
<-- /actual -->
<-- expected A_RELATIONSHIP_TO_DOUBLE5 -->
before aa cc bb after
<-- /expected -->
<-- actual -->
before aa cc bb after
<-- /actual -->
<-- expected A_RELATIONSHIP_TO_DOUBLE6 -->
before = after
<-- /expected -->
<-- actual -->
before = after
<-- /actual -->
<-- expected A_RELATIONSHIP_TO_DOUBLE7 -->
before == after
<-- /expected -->
<-- actual -->
before == after
<-- /actual -->
<-- expected A_RELATIONSHIP_TO_DOUBLE8 -->
before = after
<-- /expected -->
<-- actual -->
before = after
<-- /actual -->
CASE SPACES_AROUND_DELIM
<-- expected A_SPACES_AROUND_DELIM -->
before aa = bb after
<-- /expected -->
<-- actual -->
before aa = bb after
<-- /actual -->
CASE SPACE_BEFORE_DELIM
<-- expected A_SPACE_BEFORE_DELIM -->
before aa =bb cc after
<-- /expected -->
<-- actual -->
before aa =bb cc after
<-- /actual -->
CASE VALID_EXPR_EMBEDDED
A valid emphasis expression embedded in an emphasised string.
<-- expected A_VALID_EXPR_EMBEDDED -->
before aa bb cc after
<-- /expected -->
<-- actual -->
before aa =bb cc= after
<-- /actual -->
CASE ALL_OTHER_EMBEDDED
<-- expected A_ALL_OTHER_EMBEDDED -->
(* _ __ = == )
<-- /expected -->
<-- actual -->
(* _ __ = == )
<-- /actual -->
Relationship with other formatting types
Note: Cairo gets the first row wrong, by any sensible definition.
CASE IN_TABLE
<-- expected A_IN_TABLE -->
* _ _ = == | * _ _ = == |
aa | bb |
= | = |
<-- /expected -->
<-- actual -->
* _ __ = == |
* _ __ = == |
aa |
bb |
= |
= |
<-- /actual -->
CASE IN_LIST
<-- expected A_IN_LIST -->
bb=
=aa
<-- /expected -->
<-- actual -->
bb=
=aa
<-- /actual -->
'Bold' emphasis (* sign)
Basic cases
Verify that spaces, newlines and left brackets are all valid delimiters for opening an emphasis expression.
CASE NL_BEFORE_SPACE_AFTER
<-- expected B_NL_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within after
<-- /actual -->
CASE NL_BEFORE_NL_AFTER
<-- expected B_NL_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within
after
<-- /actual -->
CASE NL_BEFORE_RB_AFTER
<-- expected B_NL_BEFORE_RB_AFTER -->
before within)after
<-- /expected -->
<-- actual -->
before
within)after
<-- /actual -->
CASE SPACE_BEFORE_NL_AFTER
<-- expected B_SPACE_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within
after
<-- /actual -->
CASE SPACE_BEFORE_SPACE_AFTER
<-- expected B_SPACE_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within after
<-- /actual -->
CASE SPACE_BEFORE_RB_AFTER
<-- expected B_SPACE_BEFORE_RB_AFTER -->
before within)after
<-- /expected -->
<-- actual -->
before within)after
<-- /actual -->
CASE LB_BEFORE_SPACE_AFTER
<-- expected B_LB_BEFORE_SPACE_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within after
<-- /actual -->
CASE LB_BEFORE_NL_AFTER
<-- expected B_LB_BEFORE_NL_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within
after
<-- /actual -->
CASE LB_BEFORE_RB_AFTER
<-- expected B_LB_BEFORE_RB_AFTER -->
(within)
<-- /expected -->
<-- actual -->
(within)
<-- /actual -->
Closings
Assume that the following characters are equivalent to space, nl and RB and can close an expression: ,.;:!?
CASE COMMA_AFTER
<-- expected B_COMMA_AFTER -->
before within,after
<-- /expected -->
<-- actual -->
before within,after
<-- /actual -->
CASE PERIOD_AFER
<-- expected B_PERIOD_AFER -->
before within.after
<-- /expected -->
<-- actual -->
before within.after
<-- /actual -->
CASE SEMIC_AFTER
<-- expected B_SEMIC_AFTER -->
before within;after
<-- /expected -->
<-- actual -->
before within;after
<-- /actual -->
CASE COLON_AFTER
<-- expected B_COLON_AFTER -->
before within:after
<-- /expected -->
<-- actual -->
before within:after
<-- /actual -->
CASE PLING_AFTER
<-- expected B_PLING_AFTER -->
before within!after
<-- /expected -->
<-- actual -->
before within!after
<-- /actual -->
CASE QM_AFTER
<-- expected B_QM_AFTER -->
before within?after
<-- /expected -->
<-- actual -->
before within?after
<-- /actual -->
CASE OTHER_CHARACTERS
<-- expected B_OTHER_CHARACTERS -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /expected -->
<-- actual -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /actual -->
Embedded delimiters
Cases where a related delimiter is embedded in, or overlaps with the string to be emphasised
CASE SPACES_AROUND_DELIM
<-- expected B_SPACES_AROUND_DELIM -->
before aa * bb after
<-- /expected -->
<-- actual -->
before aa * bb after
<-- /actual -->
CASE SPACE_BEFORE_DELIM
<-- expected B_SPACE_BEFORE_DELIM -->
before aa *bb cc after
<-- /expected -->
<-- actual -->
before aa *bb cc after
<-- /actual -->
CASE VALID_EXPR_EMBEDDED
A valid emphasis expression embedded in an emphasised string.
<-- expected B_VALID_EXPR_EMBEDDED -->
before aa bb cc after
<-- /expected -->
<-- actual -->
before aa *bb cc* after
<-- /actual -->
CASE ALL_OTHER_EMBEDDED
<-- expected B_ALL_OTHER_EMBEDDED -->
(* _ __ = ==)
<-- /expected -->
<-- actual -->
(* _ __ = ==)
<-- /actual -->
Relationship with other formatting types
Note: Cairo gets the first row wrong, by any sensible definition.
CASE IN_TABLE
<-- expected B_IN_TABLE -->
_ * _ = == | * __ = == |
aa | bb |
* | * |
<-- /expected -->
<-- actual -->
<-- /actual -->
CASE IN_LIST
<-- expected B_IN_LIST -->
bb*
*aa
<-- /expected -->
<-- actual -->
bb*
*aa
<-- /actual -->
'Italic' emphasis (_ sign)
Basic cases
Verify that spaces, newlines and left brackets are all valid delimiters for opening an emphasis expression.
CASE NL_BEFORE_SPACE_AFTER
<-- expected C_NL_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within after
<-- /actual -->
CASE NL_BEFORE_NL_AFTER
<-- expected C_NL_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within
after
<-- /actual -->
CASE NL_BEFORE_RB_AFTER
<-- expected C_NL_BEFORE_RB_AFTER -->
before within)after
<-- /expected -->
<-- actual -->
before
within)after
<-- /actual -->
CASE SPACE_BEFORE_NL_AFTER
<-- expected C_SPACE_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within
after
<-- /actual -->
CASE SPACE_BEFORE_SPACE_AFTER
<-- expected C_SPACE_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within after
<-- /actual -->
CASE SPACE_BEFORE_RB_AFTER
<-- expected C_SPACE_BEFORE_RB_AFTER -->
before within)after
<-- /expected -->
<-- actual -->
before within)after
<-- /actual -->
CASE LB_BEFORE_SPACE_AFTER
<-- expected C_LB_BEFORE_SPACE_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within after
<-- /actual -->
CASE LB_BEFORE_NL_AFTER
<-- expected C_LB_BEFORE_NL_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within
after
<-- /actual -->
CASE LB_BEFORE_RB_AFTER
<-- expected C_LB_BEFORE_RB_AFTER -->
(within)
<-- /expected -->
<-- actual -->
(within)
<-- /actual -->
Closings
Assume that the following characters are equivalent to space, nl and RB and can close an expression: ,.;:!?
CASE COMMA_AFTER
<-- expected C_COMMA_AFTER -->
before within,after
<-- /expected -->
<-- actual -->
before within,after
<-- /actual -->
CASE PERIOD_AFER
<-- expected C_PERIOD_AFER -->
before within.after
<-- /expected -->
<-- actual -->
before within.after
<-- /actual -->
CASE SEMIC_AFTER
<-- expected C_SEMIC_AFTER -->
before within;after
<-- /expected -->
<-- actual -->
before within;after
<-- /actual -->
CASE COLON_AFTER
<-- expected C_COLON_AFTER -->
before within:after
<-- /expected -->
<-- actual -->
before within:after
<-- /actual -->
CASE PLING_AFTER
<-- expected C_PLING_AFTER -->
before within!after
<-- /expected -->
<-- actual -->
before within!after
<-- /actual -->
CASE QM_AFTER
<-- expected C_QM_AFTER -->
before within?after
<-- /expected -->
<-- actual -->
before within?after
<-- /actual -->
CASE OTHER_CHARACTERS
<-- expected C_OTHER_CHARACTERS -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /expected -->
<-- actual -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /actual -->
Embedded delimiters
Cases where a related delimiter is embedded in, or overlaps with the string to be emphasised
CASE RELATIONSHIP_TO_DOUBLE
<-- expected C_RELATIONSHIP_TO_DOUBLE1 -->
before aabb_ after
<-- /expected -->
<-- actual -->
before aabb_ after
<-- /actual -->
<-- expected C_RELATIONSHIP_TO_DOUBLE2 -->
before aa_ bb_ cc__ after
<-- /expected -->
<-- actual -->
before aa_ bb_ cc__ after
<-- /actual -->
<-- expected C_RELATIONSHIP_TO_DOUBLE3 -->
before aa bb cc after
<-- /expected -->
<-- actual -->
before aa bb cc after
<-- /actual -->
<-- expected C_RELATIONSHIP_TO_DOUBLE4 -->
before aa cc bb after
<-- /expected -->
<-- actual -->
before aa cc bb after
<-- /actual -->
<-- expected C_RELATIONSHIP_TO_DOUBLE5 -->
before aa cc bb after
<-- /expected -->
<-- actual -->
before aa cc bb after
<-- /actual -->
<-- expected C_RELATIONSHIP_TO_DOUBLE6 -->
before _ after
<-- /expected -->
<-- actual -->
before _ after
<-- /actual -->
<-- expected C_RELATIONSHIP_TO_DOUBLE7 -->
before __ after
<-- /expected -->
<-- actual -->
before __ after
<-- /actual -->
<-- expected C_RELATIONSHIP_TO_DOUBLE8 -->
before _ after
<-- /expected -->
<-- actual -->
before _ after
<-- /actual -->
CASE SPACES_AROUND_DELIM
<-- expected C_SPACES_AROUND_DELIM -->
before aa _ bb after
<-- /expected -->
<-- actual -->
before aa _ bb after
<-- /actual -->
CASE SPACE_BEFORE_DELIM
<-- expected C_SPACE_BEFORE_DELIM -->
before aa _bb cc after
<-- /expected -->
<-- actual -->
before aa _bb cc after
<-- /actual -->
CASE VALID_EXPR_EMBEDDED
A valid emphasis expression embedded in an emphasised string.
<-- expected C_VALID_EXPR_EMBEDDED -->
before aa bb cc after
<-- /expected -->
<-- actual -->
before aa _bb cc_ after
<-- /actual -->
CASE ALL_OTHER_EMBEDDED
<-- expected C_ALL_OTHER_EMBEDDED -->
(* _ = == __)
<-- /expected -->
<-- actual -->
(* _ = == __)
<-- /actual -->
Relationship with other formatting types
Note: Cairo gets the first row wrong, by any sensible definition.
CASE IN_TABLE
<-- expected C_IN_TABLE -->
* = = _ __ | * = = _ __ |
aa | bb |
_ | _ |
<-- /expected -->
<-- actual -->
* = == _ __ |
* = == _ __ |
aa |
bb |
_ |
_ |
<-- /actual -->
CASE IN_LIST
<-- expected C_IN_LIST -->
bb_
_aa
<-- /expected -->
<-- actual -->
bb_
_aa
<-- /actual -->
'Bold Code' emphasis (= sign)
Basic cases
Verify that spaces, newlines and left brackets are all valid delimiters for opening an emphasis expression.
CASE NL_BEFORE_SPACE_AFTER
<-- expected D_NL_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within after
<-- /actual -->
CASE NL_BEFORE_NL_AFTER
<-- expected D_NL_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within
after
<-- /actual -->
CASE NL_BEFORE_RB_AFTER
<-- expected D_NL_BEFORE_RB_AFTER -->
before within )after
<-- /expected -->
<-- actual -->
before
within )after
<-- /actual -->
CASE SPACE_BEFORE_NL_AFTER
<-- expected D_SPACE_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within
after
<-- /actual -->
CASE SPACE_BEFORE_SPACE_AFTER
<-- expected D_SPACE_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within after
<-- /actual -->
CASE SPACE_BEFORE_RB_AFTER
<-- expected D_SPACE_BEFORE_RB_AFTER -->
before within )after
<-- /expected -->
<-- actual -->
before within )after
<-- /actual -->
CASE LB_BEFORE_SPACE_AFTER
<-- expected D_LB_BEFORE_SPACE_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within after
<-- /actual -->
CASE LB_BEFORE_NL_AFTER
<-- expected D_LB_BEFORE_NL_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within
after
<-- /actual -->
CASE LB_BEFORE_RB_AFTER
<-- expected D_LB_BEFORE_RB_AFTER -->
(within )
<-- /expected -->
<-- actual -->
(within )
<-- /actual -->
Closings
Assume that the following characters are equivalent to space, nl and RB and can close an expression: ,.;:!?
CASE COMMA_AFTER
<-- expected D_COMMA_AFTER -->
before within ,after
<-- /expected -->
<-- actual -->
before within ,after
<-- /actual -->
CASE PERIOD_AFER
<-- expected D_PERIOD_AFER -->
before within .after
<-- /expected -->
<-- actual -->
before within .after
<-- /actual -->
CASE SEMIC_AFTER
<-- expected D_SEMIC_AFTER -->
before within ;after
<-- /expected -->
<-- actual -->
before within ;after
<-- /actual -->
CASE COLON_AFTER
<-- expected D_COLON_AFTER -->
before within :after
<-- /expected -->
<-- actual -->
before within :after
<-- /actual -->
CASE PLING_AFTER
<-- expected D_PLING_AFTER -->
before within !after
<-- /expected -->
<-- actual -->
before within !after
<-- /actual -->
CASE QM_AFTER
<-- expected D_QM_AFTER -->
before within ?after
<-- /expected -->
<-- actual -->
before within ?after
<-- /actual -->
CASE OTHER_CHARACTERS
<-- expected D_OTHER_CHARACTERS -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /expected -->
<-- actual -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /actual -->
'Bold Italic emphasis (__ sign)
Basic cases
Verify that spaces, newlines and left brackets are all valid delimiters for opening an emphasis expression.
CASE NL_BEFORE_SPACE_AFTER
<-- expected E_NL_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within after
<-- /actual -->
CASE NL_BEFORE_NL_AFTER
<-- expected E_NL_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before
within
after
<-- /actual -->
CASE NL_BEFORE_RB_AFTER
<-- expected E_NL_BEFORE_RB_AFTER -->
before within)after
<-- /expected -->
<-- actual -->
before
within)after
<-- /actual -->
CASE SPACE_BEFORE_NL_AFTER
<-- expected E_SPACE_BEFORE_NL_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within
after
<-- /actual -->
CASE SPACE_BEFORE_SPACE_AFTER
<-- expected E_SPACE_BEFORE_SPACE_AFTER -->
before within after
<-- /expected -->
<-- actual -->
before within after
<-- /actual -->
CASE SPACE_BEFORE_RB_AFTER
<-- expected E_SPACE_BEFORE_RB_AFTER -->
before within)after
<-- /expected -->
<-- actual -->
before within)after
<-- /actual -->
CASE LB_BEFORE_SPACE_AFTER
<-- expected E_LB_BEFORE_SPACE_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within after
<-- /actual -->
CASE LB_BEFORE_NL_AFTER
<-- expected E_LB_BEFORE_NL_AFTER -->
(within after
<-- /expected -->
<-- actual -->
(within
after
<-- /actual -->
CASE LB_BEFORE_RB_AFTER
<-- expected E_LB_BEFORE_RB_AFTER -->
(within)
<-- /expected -->
<-- actual -->
(within)
<-- /actual -->
Closings
Assume that the following characters are equivalent to space, nl and RB and can close an expression: ,.;:!?
CASE COMMA_AFTER
<-- expected E_COMMA_AFTER -->
before within,after
<-- /expected -->
<-- actual -->
before within,after
<-- /actual -->
CASE PERIOE_AFER
<-- expected E_PERIOE_AFER -->
before within.after
<-- /expected -->
<-- actual -->
before within.after
<-- /actual -->
CASE SEMIC_AFTER
<-- expected E_SEMIC_AFTER -->
before within;after
<-- /expected -->
<-- actual -->
before within;after
<-- /actual -->
CASE COLON_AFTER
<-- expected E_COLON_AFTER -->
before within:after
<-- /expected -->
<-- actual -->
before within:after
<-- /actual -->
CASE PLING_AFTER
<-- expected E_PLING_AFTER -->
before within!after
<-- /expected -->
<-- actual -->
before within!after
<-- /actual -->
CASE QM_AFTER
<-- expected E_QM_AFTER -->
before within?after
<-- /expected -->
<-- actual -->
before within?after
<-- /actual -->
CASE OTHER_CHARACTERS
<-- expected E_OTHER_CHARACTERS -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /expected -->
<-- actual -->
before | after
before \ after
before ¬ after
before ` after
before ! after
before 1 after
before " after
before 2 after
before £ after
before 3 after
before $ after
before 4 after
before % after
before 5 after
before ^ after
before 6 after
before & after
before 7 after
before * after
before 8 after
before ( after
before 9 after
before ) after
before 0 after
before _ after
before - after
before + after
before = after
before } after
before ] after
before { after
before [ after
before ~ after
before # after
before @ after
before ' after
before : after
before ; after
before ? after
before / after
before > after
before . after
before < after
before , after
before A after
before B after
before C after
before D after
before E after
before F after
before G after
before H after
before I after
before J after
before K after
before L after
before M after
before N after
before O after
before P after
before Q after
before R after
before S after
before T after
before U after
before V after
before W after
before X after
before Y after
before Z after
before a after
before b after
before c after
before d after
before e after
before f after
before g after
before h after
before i after
before j after
before k after
before l after
before m after
before n after
before o after
before p after
before q after
before r after
before s after
before t after
before u after
before v after
before w after
before x after
before y after
before z after
<-- /actual --> |