gradio/test/test_processing_utils.py
2021-11-02 17:31:10 -04:00

30 lines
25 KiB
Python

import unittest
import pathlib
import gradio as gr
from PIL import Image
base_64_test_img = "data:image/jpg;base64,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"
class ImagePreprocessing(unittest.TestCase):
def test_decode_base64_to_image(self):
output_image = gr.processing_utils.decode_base64_to_image(
base_64_test_img)
self.assertIsInstance(output_image, Image.Image)
def test_encode_url_or_file_to_base64(self):
output_base64 = gr.processing_utils.encode_url_or_file_to_base64(
"test/images/lion.jpg")
self.assertEquals(output_base64, base_64_test_img)
def test_encode_file_to_base64(self):
output_base64 = gr.processing_utils.encode_file_to_base64(
"test/images/lion.jpg")
self.assertEquals(output_base64, base_64_test_img)
def test_encode_url_to_base64(self):
output_base64 = gr.processing_utils.encode_url_to_base64("https://raw.githubusercontent.com/gradio-app/gradio/master/test/images/lion.jpg")
self.assertEqual(output_base64, base_64_test_img)
if __name__ == '__main__':
unittest.main()