Before:
  let g:vim_markdown_emphasis_multiline = 0
  syn off | syn on

After:
  let g:vim_markdown_emphasis_multiline = 1
  syn off | syn on

Given markdown;
a **b** c

Execute (bold):
  AssertNotEqual SyntaxOf('a'), 'htmlBold'
  AssertEqual SyntaxOf('b'), 'htmlBold'
  AssertNotEqual SyntaxOf('c'), 'htmlBold'

Given markdown;
a __b__ c

Execute (bold):
  AssertNotEqual SyntaxOf('a'), 'htmlBold'
  AssertEqual SyntaxOf('b'), 'htmlBold'
  AssertNotEqual SyntaxOf('c'), 'htmlBold'

Given markdown;
a *b* c

Execute (italic):
  AssertNotEqual SyntaxOf('a'), 'htmlItalic'
  AssertEqual SyntaxOf('b'), 'htmlItalic'
  AssertNotEqual SyntaxOf('c'), 'htmlItalic'

Given markdown;
a _b_ c

Execute (italic):
  AssertNotEqual SyntaxOf('a'), 'htmlItalic'
  AssertEqual SyntaxOf('b'), 'htmlItalic'
  AssertNotEqual SyntaxOf('c'), 'htmlItalic'

Given markdown;
_a_b_

Execute (italic text has underscores):
  AssertEqual SyntaxOf('a'), 'htmlItalic'
  AssertEqual SyntaxOf('b'), 'htmlItalic'

Given markdown;
a \*b\* c

Execute (not italic with escaped asterisks):
  AssertNotEqual SyntaxOf('a'), 'htmlItalic'
  AssertNotEqual SyntaxOf('b'), 'htmlItalic'
  AssertNotEqual SyntaxOf('c'), 'htmlItalic'

Given markdown;
a \_b\_ c

Execute (not italic with escaped underscores):
  AssertNotEqual SyntaxOf('a'), 'htmlItalic'
  AssertNotEqual SyntaxOf('b'), 'htmlItalic'
  AssertNotEqual SyntaxOf('c'), 'htmlItalic'

Given markdown;
a _b\_c_ d

Execute (italic with escaped underscores):
  AssertNotEqual SyntaxOf('a'), 'htmlItalic'
  AssertEqual SyntaxOf('b'), 'htmlItalic'
  AssertEqual SyntaxOf('c'), 'htmlItalic'
  AssertNotEqual SyntaxOf('d'), 'htmlItalic'

Given markdown;
a_b_c

Execute (not italic underscores within text):
  AssertNotEqual SyntaxOf('a'), 'htmlItalic'
  AssertNotEqual SyntaxOf('b'), 'htmlItalic'
  AssertNotEqual SyntaxOf('c'), 'htmlItalic'

Given markdown;
a *b\*c* d

Execute (italic with escaped asterisks):
  AssertNotEqual SyntaxOf('a'), 'htmlItalic'
  AssertEqual SyntaxOf('b'), 'htmlItalic'
  AssertEqual SyntaxOf('c'), 'htmlItalic'
  AssertNotEqual SyntaxOf('d'), 'htmlItalic'

Given markdown;
a __b\_\_c__ d

Execute (bold with escaped underscores):
  AssertNotEqual SyntaxOf('a'), 'htmlBold'
  AssertEqual SyntaxOf('b'), 'htmlBold'
  AssertEqual SyntaxOf('c'), 'htmlBold'
  AssertNotEqual SyntaxOf('d'), 'htmlBold'

Given markdown;
_a b
c_ d

Execute (italic with underscores in multiple lines):
  AssertNotEqual SyntaxOf('a'), 'htmlItalic'
  AssertNotEqual SyntaxOf('b'), 'htmlItalic'
  AssertNotEqual SyntaxOf('c'), 'htmlItalic'
  AssertNotEqual SyntaxOf('d'), 'htmlItalic'

Given markdown;
__a b
c__ d

Execute (bold with underscores in multiple lines):
  AssertNotEqual SyntaxOf('a'), 'htmlBold'
  AssertNotEqual SyntaxOf('b'), 'htmlBold'
  AssertNotEqual SyntaxOf('c'), 'htmlBold'
  AssertNotEqual SyntaxOf('d'), 'htmlBold'

Given markdown;
___a b
c___ d

Execute (bold italic with underscores in multiple lines):
  AssertNotEqual SyntaxOf('a'), 'htmlBoldItalic'
  AssertNotEqual SyntaxOf('b'), 'htmlBoldItalic'
  AssertNotEqual SyntaxOf('c'), 'htmlBoldItalic'
  AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'

Given markdown;
*a b
c* d

Execute (italic with asterisks in multiple lines):
  AssertNotEqual SyntaxOf('a'), 'htmlItalic'
  AssertNotEqual SyntaxOf('b'), 'htmlItalic'
  AssertNotEqual SyntaxOf('c'), 'htmlItalic'
  AssertNotEqual SyntaxOf('d'), 'htmlItalic'

Given markdown;
**a b
c** d

Execute (bold with asterisks in multiple lines):
  AssertNotEqual SyntaxOf('a'), 'htmlBold'
  AssertNotEqual SyntaxOf('b'), 'htmlBold'
  AssertNotEqual SyntaxOf('c'), 'htmlBold'
  AssertNotEqual SyntaxOf('d'), 'htmlBold'

Given markdown;
***a b
c*** d

Execute (bold italic with asterisks in multiple lines):
  AssertNotEqual SyntaxOf('a'), 'htmlBoldItalic'
  AssertNotEqual SyntaxOf('b'), 'htmlBoldItalic'
  AssertNotEqual SyntaxOf('c'), 'htmlBoldItalic'
  AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'