| | 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() |