text: # since v0.2.2
  import copy
  from textwrap import dedent
  
  from pyexcel.sheet import Sheet, make_names_unique
  from pyexcel.internal.meta import PyexcelObject
  
  from nose.tools import eq_, raises
  
  
  def test_sheet_content():
      array = [[1, 2]]
      sheet = Sheet(array)
      expected = dedent(
          """
      +---+---+
      | 1 | 2 |
      +---+---+"""
      ).strip("\n")
      eq_(str(sheet.content), expected)
  
  
  def test_random_access():
      test_content = [[1, 2]]
      sheet = Sheet(test_content)
      eq_(sheet.to_array(), test_content)
      expected = dedent(
          """
      pyexcel sheet:
      +---+-----+
      | 1 | 100 |
      +---+-----+"""
      ).strip("\n")
      sheet[0, 1] = 100
      eq_(str(sheet), expected)
  
  
  def test_random_access_to_unknown_area():
      test_content = [[1, 2]]
      sheet = Sheet(copy.deepcopy(test_content))
      eq_(sheet.to_array(), test_content)
      expected = [[1, 2, ""], ["", "", ""], ["", "", 100]]
      sheet[2, 2] = 100
      eq_(sheet.array, expected)
  
  
  def test_named_sheet_access():
      test_content = [["A", "B"], [1, 2]]
      sheet = Sheet(copy.deepcopy(test_content), name_columns_by_row=0)
      eq_(sheet.to_array(), test_content)
      expected = dedent(
          """
      pyexcel sheet:
      +-----+---+
      |  A  | B |
      +=====+===+
      | 100 | 2 |
      +-----+---+"""
      ).strip("\n")
      sheet[0, "A"] = 100
      print(str(sheet))
      eq_(str(sheet), expected)
  
  
  def test_named_sheet_access_to_unknown_area():
      test_content = [["A", "B"], [1, 2]]
      sheet = Sheet(copy.deepcopy(test_content), name_columns_by_row=0)
      eq_(sheet.to_array(), test_content)
      expected = dedent(
          """
      pyexcel sheet:
      +-----+---+
      |  A  | B |
      +=====+===+
      | 1   | 2 |
      +-----+---+
      | 100 |   |
      +-----+---+"""
      ).strip("\n")
      sheet[1, "A"] = 100
      print(str(sheet))
      eq_(str(sheet), expected)
  
  
  def test_data_frame_access():
      test_content = [["", "A", "B"], ["R", 1, 2]]
      sheet = Sheet(
          copy.deepcopy(test_content),
          name_columns_by_row=0,
          name_rows_by_column=0,
      )
      eq_(sheet.to_array(), test_content)
      expected = dedent(
          """
      pyexcel sheet:
      +---+-----+---+
      |   |  A  | B |
      +===+=====+===+
      | R | 100 | 2 |
      +---+-----+---+"""
      ).strip("\n")
      sheet["R", "A"] = 100
      print(str(sheet))
      eq_(str(sheet), expected)
  
  
  def test_html_representation():
      array = [[1, 2]]
      sheet = Sheet(array)
      expected = dedent(
          """
      pyexcel sheet:
      <table>
      <tbody>
      <tr><td style="text-align: right;">1</td><td style="text-align: right;">2</td></tr>
      </tbody>
      </table>"""  # noqa: E501
      ).strip("\n")
      eq_(str(sheet._repr_html_()), expected)
  
  
  def test_svg_representation():
      array = [["a", "b"], [1, 2]]
      sheet = Sheet(array)
      io = sheet.plot()
      assert io._repr_svg_() is not None
  
  
  @raises(NotImplementedError)
  def test_pyexcel_object():
      obj = PyexcelObject()
      obj.save_to_memory("csv")
  
  
  def test_make_names_unique():
      alist = ["a", "a"]
      new_names = make_names_unique(alist)
      expected = ["a", "a-1"]
      eq_(new_names, expected)
  
  
  def test_make_names_unique_includes_leading_whitespace():
      alist = ["a", " a"]
      new_names = make_names_unique(alist)
      expected = ["a", "a-1"]
      eq_(new_names, expected)
  
  
  def test_make_names_unique_includes_trailing_whitespace():
      alist = ["a", "a "]
      new_names = make_names_unique(alist)
      expected = ["a", "a-1"]
      eq_(new_names, expected)
  
  
  def test_make_names_unique_includes_whitespace():
      alist = ["a", "   a   ", "   ", "   "]
      new_names = make_names_unique(alist)
      expected = ["a", "a-1", "", "-1"]
      eq_(new_names, expected)
  