52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
# Copyright (c) OpenMMLab. All rights reserved.
|
|
from pathlib import Path
|
|
from unittest import TestCase
|
|
|
|
import cv2
|
|
import numpy as np
|
|
|
|
from mmengine.fileio.backends import HTTPBackend
|
|
|
|
|
|
def imfrombytes(content):
|
|
img_np = np.frombuffer(content, np.uint8)
|
|
img = cv2.imdecode(img_np, cv2.IMREAD_COLOR)
|
|
return img
|
|
|
|
|
|
def imread(path):
|
|
with open(path, 'rb') as f:
|
|
content = f.read()
|
|
img = imfrombytes(content)
|
|
return img
|
|
|
|
|
|
class TestHTTPBackend(TestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.img_url = (
|
|
'https://download.openmmlab.com/mmengine/test-data/color.jpg')
|
|
cls.img_shape = (300, 400, 3)
|
|
cls.text_url = (
|
|
'https://download.openmmlab.com/mmengine/test-data/filelist.txt')
|
|
cls.test_data_dir = Path(__file__).parent.parent.parent / 'data'
|
|
cls.text_path = cls.test_data_dir / 'filelist.txt'
|
|
|
|
def test_get(self):
|
|
backend = HTTPBackend()
|
|
img_bytes = backend.get(self.img_url)
|
|
img = imfrombytes(img_bytes)
|
|
self.assertEqual(img.shape, self.img_shape)
|
|
|
|
def test_get_text(self):
|
|
backend = HTTPBackend()
|
|
text = backend.get_text(self.text_url)
|
|
self.assertEqual(self.text_path.open('r').read(), text)
|
|
|
|
def test_get_local_path(self):
|
|
backend = HTTPBackend()
|
|
with backend.get_local_path(self.img_url) as filepath:
|
|
img = imread(filepath)
|
|
self.assertEqual(img.shape, self.img_shape)
|