|
import importlib |
|
utils = importlib.import_module('extensions.sd-webui-controlnet.tests.utils', 'utils') |
|
utils.setup_test_env() |
|
|
|
from scripts.utils import ndarray_lru_cache, get_unique_axis0 |
|
|
|
import unittest |
|
import numpy as np |
|
|
|
class TestNumpyLruCache(unittest.TestCase): |
|
|
|
def setUp(self): |
|
self.arr1 = np.array([1, 2, 3, 4, 5]) |
|
self.arr2 = np.array([1, 2, 3, 4, 5]) |
|
|
|
@ndarray_lru_cache(max_size=128) |
|
def add_one(self, arr): |
|
return arr + 1 |
|
|
|
def test_same_array(self): |
|
|
|
result1 = self.add_one(self.arr1) |
|
result2 = self.add_one(self.arr1) |
|
|
|
|
|
self.assertIs(result1, result2) |
|
|
|
def test_different_array_same_data(self): |
|
|
|
result1 = self.add_one(self.arr1) |
|
result2 = self.add_one(self.arr2) |
|
|
|
|
|
self.assertIs(result1, result2) |
|
|
|
def test_cache_size(self): |
|
|
|
arrs = [np.array([i]) for i in range(150)] |
|
|
|
|
|
|
|
result1 = self.add_one(arrs[0]) |
|
for arr in arrs[1:]: |
|
self.add_one(arr) |
|
|
|
|
|
result2 = self.add_one(arrs[0]) |
|
|
|
|
|
self.assertIsNot(result1, result2) |
|
|
|
def test_large_array(self): |
|
|
|
arr1 = np.ones(10000) |
|
arr2 = np.ones(10000) |
|
arr2[len(arr2)//2] = 0 |
|
|
|
result1 = self.add_one(arr1) |
|
result2 = self.add_one(arr2) |
|
|
|
|
|
self.assertIsNot(result1, result2) |
|
|
|
class TestUniqueFunctions(unittest.TestCase): |
|
def test_get_unique_axis0(self): |
|
data = np.random.randint(0, 100, size=(100000, 3)) |
|
data = np.concatenate((data, data)) |
|
numpy_unique_res = np.unique(data, axis=0) |
|
get_unique_axis0_res = get_unique_axis0(data) |
|
self.assertEqual(np.array_equal( |
|
np.sort(numpy_unique_res, axis=0), np.sort(get_unique_axis0_res, axis=0), |
|
), True) |
|
|
|
if __name__ == '__main__': |
|
unittest.main() |