content: import unittest
  from datetime import datetime
  from unittest.mock import patch
  
  from pyecharts.charts import Bar
  from pyecharts.options import InitOpts, RenderOpts
  from pyecharts.globals import CurrentConfig, Locale
  from pyecharts.charts.base import Base, default
  from pyecharts.options.series_options import AnimationOpts
  
  
  class TestBaseClass(unittest.TestCase):
  
      def test_base_add_functions(self):
          c = Base()
          c.add_js_funcs("console.log('hello')", "console.log('hello')")
          self.assertEqual(1, len(c.js_functions.items))
          self.assertEqual(["console.log('hello')"], c.js_functions.items)
  
      def test_base_add_events(self):
          c = Base()
          c.add_js_events("console.log('hello')", "console.log('hello')")
          self.assertEqual(1, len(c.js_events.items))
          self.assertEqual(["console.log('hello')"], c.js_events.items)
  
      def test_base_init_funcs(self):
          c0 = Base({"width": "100px", "height": "200px"})
          self.assertEqual(c0.width, "100px")
          self.assertEqual(c0.height, "200px")
  
          c1 = Base(dict(width="110px", height="210px"))
          self.assertEqual(c1.width, "110px")
          self.assertEqual(c1.height, "210px")
          self.assertNotIn(c1.js_host, ["", None])
  
      @patch("pyecharts.render.engine.write_utf8_html_file")
      def test_render(self, fake_writer):
          my_render_content = "my_render_content"
          bar = Bar()
          bar.add_xaxis(["1"]).add_yaxis("", [1]).render(
              my_render_content=my_render_content
          )
          assert "test ok" == "test ok"
  
      @patch("pyecharts.render.engine.write_utf8_html_file")
      def test_render_js_host_none(self, fake_writer):
          my_render_content = "my_render_content"
          bar = Bar()
          bar.add_xaxis(["1"]).add_yaxis("", [1])
          # Hack to test
          bar.js_host = None
          # Render
          bar.render(my_render_content=my_render_content)
          self.assertEqual(bar.js_host, CurrentConfig.ONLINE_HOST)
  
      @patch("pyecharts.render.engine.write_utf8_html_file")
      def test_render_embed_js(self, _):
          c = Base(render_opts=RenderOpts(is_embed_js=True))
          # Embedded JavaScript
          content = c.render_embed()
          self.assertNotIn(
              CurrentConfig.ONLINE_HOST, content, "Embedding JavaScript fails"
          )
          # No embedded JavaScript
          c.render_options.update(embed_js=False)
          content = c.render_embed()
          self.assertIn(
              CurrentConfig.ONLINE_HOST, content, "Embedded JavaScript cannot be closed"
          )
  
      def test_base_render_options(self):
          c0 = Base(render_opts=RenderOpts(is_embed_js=True))
          self.assertEqual(c0.render_options.get("embed_js"), True)
  
      def test_base_iso_format(self):
          mock_time_str = "2022-04-14 14:42:00"
          mock_time = datetime.strptime(mock_time_str, "%Y-%m-%d %H:%M:%S")
          assert default(mock_time) == "2022-04-14T14:42:00"
  
      def test_base_animation_option(self):
          c0 = Base(init_opts=InitOpts(animation_opts=AnimationOpts(animation=False)))
          self.assertEqual(c0.options.get("animation"), False)
  
          c1 = Base({"animationOpts": {"animation": False}})
          self.assertEqual(c1.options.get("animation"), False)
  
      def test_base_chart_id(self):
          c0 = Base(init_opts=InitOpts(chart_id="1234567"))
          self.assertEqual(c0.chart_id, "1234567")
  
          c1 = Base(init_opts=InitOpts(chart_id="1234567"))
          self.assertEqual(c1.get_chart_id(), "1234567")
  
      def test_use_echarts_stat(self):
          c0 = Base().use_echarts_stat()
          self.assertEqual(c0.js_dependencies.items, ["echarts", "echarts-stat"])
  
      def test_default_locale_zh(self):
          # Default locale should be Chinese
          c0 = Base()
          self.assertEqual(c0.locale, Locale.ZH)
  
      def test_set_locale_en(self):
          # Set to English locale
          CurrentConfig.LOCALE = Locale.EN
          c0 = Base()
          self.assertEqual(c0.locale, Locale.EN)
  
      def test_set_locale_wrong(self):
          # Set to a wrong locale, should fallback to default
          CurrentConfig.LOCALE = "wrong_locale"
          c0 = Base()
          self.assertEqual(c0.locale, Locale.ZH)
  
      @patch("pyecharts.render.engine.write_utf8_html_file")
      def test_locale_renders_in_html(self, fake_writer):
          CurrentConfig.LOCALE = Locale.ZH
          c = (
              Bar()
              .add_xaxis(["A", "B", "C"])
              .add_yaxis("series0", [1, 2, 4])
          )
          c.render()
          _, content = fake_writer.call_args[0]
          self.assertIn("locale: 'ZH'", content)
  