| import importlib |
| utils = importlib.import_module('extensions.sd-webui-controlnet.tests.utils', 'utils') |
| utils.setup_test_env() |
|
|
| from scripts.utils import ndarray_lru_cache |
|
|
| 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) |
|
|
| if __name__ == '__main__': |
| unittest.main() |