pyecharts/test/test_wordcloud.py
2024-06-07 18:22:28 +08:00

74 lines
2.4 KiB
Python

import unittest
from unittest.mock import patch
from pyecharts.charts import WordCloud
from pyecharts.exceptions import WordCloudMaskImageException
words = [
("Sam S Club", 10000),
("Macys", 6181),
("Amy Schumer", 4386),
("Jurassic World", 4055),
("Charter Communications", 2467),
("Chick Fil A", 2244),
("Planet Fitness", 1868),
("Pitch Perfect", 1484),
]
class TestWordcloudChart(unittest.TestCase):
@patch("pyecharts.render.engine.write_utf8_html_file")
def test_wordcloud_base(self, fake_writer):
c = WordCloud().add("", words, word_size_range=[20, 100])
c.render()
_, content = fake_writer.call_args[0]
self.assertEqual(c.theme, "white")
self.assertEqual(c.renderer, "canvas")
@patch("pyecharts.render.engine.write_utf8_html_file")
def test_wordcloud_shapes(self, fake_writer):
c = WordCloud().add("", words, word_size_range=[20, 100], shape="cardioid")
c.render()
_, content = fake_writer.call_args[0]
self.assertEqual(c.theme, "white")
self.assertEqual(c.renderer, "canvas")
def test_wordcloud_error_url(self):
try:
c = WordCloud().add(
"", words, word_size_range=[20, 100], mask_image="error images_url"
)
c.render()
except WordCloudMaskImageException as err:
self.assertEqual(type(err), WordCloudMaskImageException)
assert err.__str__() != ""
@patch("pyecharts.render.engine.write_utf8_html_file")
def test_wordcloud_mask_image(self, fake_writer):
c = WordCloud().add(
"",
words,
word_size_range=[20, 100],
shape="cardioid",
mask_image="test/fixtures/img.png",
)
c.render()
_, content = fake_writer.call_args[0]
self.assertEqual(c.theme, "white")
self.assertEqual(c.renderer, "canvas")
@patch("pyecharts.render.engine.write_utf8_html_file")
def test_wordcloud_encode_image_to_base64_os_error(self, fake_writer):
error_path = "A" * 1000
c = WordCloud().add(
"",
words,
word_size_range=[20, 100],
shape="cardioid",
mask_image=f"{error_path}",
)
c.render()
_, content = fake_writer.call_args[0]
self.assertIn(error_path, content)
self.assertNotIn("data:image/", content)