Skip to content

Commit 8cf41c6

Browse files
authored
Merge pull request #15 from IvanMurzak/reference-destructor
Reference destructor
2 parents 7359a7a + 1adecc2 commit 8cf41c6

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

Assets/_PackageRoot/Runtime/Reference.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,9 @@ public void Dispose()
8383
ImageLoader.ClearMemoryCache(Url);
8484
}
8585
}
86+
~Reference()
87+
{
88+
Dispose();
89+
}
8690
}
8791
}

Assets/_PackageRoot/Tests/Editor/TestReference.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,57 @@ public IEnumerator CleanMemoryCache()
4040
Assert.AreEqual(0, Reference<Sprite>.Counter(url1));
4141
}
4242

43+
//[UnityTest]
44+
//public IEnumerator DisposeOnOutOfScope()
45+
//{
46+
// yield return ImageLoader.ClearCache().AsUniTask().ToCoroutine();
47+
// ImageLoader.settings.useDiskCache = true;
48+
// ImageLoader.settings.useMemoryCache = true;
49+
50+
// foreach (var url in ImageURLs)
51+
// {
52+
// var task = ImageLoader.LoadSpriteRef(url).AsTask();
53+
// while (!task.IsCompleted)
54+
// yield return null;
55+
56+
// Assert.AreEqual(1, Reference<Sprite>.Counter(url));
57+
// }
58+
59+
// yield return null;
60+
// System.GC.Collect(100, System.GCCollectionMode.Forced, blocking: true);
61+
// yield return null;
62+
63+
// foreach (var url in ImageURLs)
64+
// {
65+
// Assert.AreEqual(0, Reference<Sprite>.Counter(url));
66+
// }
67+
//}
68+
69+
[UnityTest]
70+
public IEnumerator DisposeOnOutDisposingBlock()
71+
{
72+
yield return ImageLoader.ClearCache().AsUniTask().ToCoroutine();
73+
ImageLoader.settings.useDiskCache = true;
74+
ImageLoader.settings.useMemoryCache = true;
75+
76+
foreach (var url in ImageURLs)
77+
{
78+
var task = ImageLoader.LoadSpriteRef(url).AsTask();
79+
while (!task.IsCompleted)
80+
yield return null;
81+
82+
using (var reference = task.Result)
83+
{
84+
Assert.AreEqual(1, Reference<Sprite>.Counter(url));
85+
}
86+
Assert.AreEqual(0, Reference<Sprite>.Counter(url));
87+
}
88+
foreach (var url in ImageURLs)
89+
{
90+
Assert.AreEqual(0, Reference<Sprite>.Counter(url));
91+
}
92+
}
93+
4394
[UnityTest]
4495
public IEnumerator CleanMemoryCacheAll()
4596
{

Assets/_PackageRoot/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"name": "Ivan Murzak",
66
"url": "https://github.com/IvanMurzak"
77
},
8-
"version": "3.0.0",
8+
"version": "3.0.1",
99
"unity": "2019.2",
1010
"description": "Asynchronous image loading from remote or local destination. It has two layers of configurable Memory and Disk cache systems.",
1111
"dependencies": {

0 commit comments

Comments
 (0)