text: #! /usr/bin/env py.test
  
  from mwlib import dummydb, parser, expander, uparser
  from mwlib.expander import DictDB
  
  parse = uparser.simpleparse
  
  
  def test_simple_table():
      r = parse("""{|
  |-
  | A || B
  |-
  | C || D
  |}""")
      table = r.find(parser.Table)[0]
      print "TABLE:", table
  
      assert len(table.children) == 2, "expected two rows"
      for x in table.children:
          assert len(x.children) == 2, "expected 2 cells"
  
  
  def test_parse_caption():
      s = """{|
  |+ caption
  |}
  """
      n = parse(s)
      t = n.find(parser.Table)[0]
      assert isinstance(t.children[0], parser.Caption), "expected a caption node"
  
  
  def test_table_header():
      s = """
  {|
  |-
  ! header1 !! header2
  |-
  | cell1 || cell2
  |}
  """
  
      r = parse(s)
      cells = r.find(parser.Cell)
      assert len(cells) == 4
  
  
  def test_table_header_2():
      s = """
  {|
  |-
  ! header 1 || header 2
  | header 3
  |-
  | cell 1 || cell 2
  ! cell 3
  |}
  """
      r = parse(s)
      cells = r.find(parser.Cell)
      is_header = [x.is_header for x in cells]
      assert is_header == [True, True, False, False, False, True]
  
  
  def test_caption_modifier():
      s = """
  {|
  |+style="font-size: 1.25em;" | caption
  |-
  | cell1
  | cell2
  |}
  """
      r = parse(s)
      c = r.find(parser.Caption)[0]
      assert c.vlist
  
  
  def _get_styled_txt(s):
      r = parse(s)
      styles = r.find(parser.Style)
      txt = " ".join(x.asText() for x in styles)
      return txt
  
  
  def test_table_vs_style_tags_cell_barrier():
      s = """
  {|
  |-
  | cell1<b>bold
  | cell2<b>
  |}
  after
  """
      txt = _get_styled_txt(s)
  
      assert "cell2" not in txt
      assert "after" not in txt
  
  
  def test_table_vs_style_tags_continue_after():
      s = """
  <b>
  {|
  |-
  | cell1
  | cell2
  |}
  after
  """
  
      txt = _get_styled_txt(s)
      assert "cell1" not in txt
      assert "after" in txt
  