Skip to content

Commit f0be092

Browse files
committed
At the end of each test letting async tasks 10 ticks to complete
1 parent 190319e commit f0be092

File tree

5 files changed

+45
-35
lines changed

5 files changed

+45
-35
lines changed

Assets/_PackageRoot/Runtime/Future/Future.Loading.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ public partial class Future<T>
1010
public UniTask StartLoading(bool ignoreImageNotFoundError = false)
1111
{
1212
if (isLoadingStarted)
13+
{
14+
if (LogLevel.IsActive(DebugLevel.Warning))
15+
Debug.Log($"[ImageLoader] Future[id={Id}] Can't start loading, it is already started. Make a new Future instance to start another loading\n{Url}");
1316
return default;
17+
}
1418

1519
isLoadingStarted = true;
1620
return InternalLoading(ignoreImageNotFoundError);

Assets/_PackageRoot/Tests/Editor/Test.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public virtual IEnumerator SetUp()
1313
}
1414
public virtual IEnumerator TearDown()
1515
{
16+
yield return TestUtils.WaitTicks(10);
1617
Assert.Zero(ImageLoader.GetLoadingSpriteFutures().Count);
1718
Assert.Zero(ImageLoader.GetLoadingTextureFutures().Count);
1819
yield return TestUtils.ClearEverything("<b>Test End </b>");

Assets/_PackageRoot/Tests/Editor/Utils/TestUtils.Load.cs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ internal static partial class TestUtils
1111
public static IEnumerator LoadFromMemoryCache(string url) => Load(url, null, FutureLoadedFrom.MemoryCache);
1212
public static IEnumerator Load(string url, FutureLoadingFrom? expectedLoadingFrom, FutureLoadedFrom expectedLoadedFrom)
1313
{
14-
var future1 = ImageLoader.LoadSprite(url);
15-
var futureListener = future1.ToFutureListener();
14+
var future = ImageLoader.LoadSprite(url);
15+
var futureListener = future.ToFutureListener();
1616

1717
if (expectedLoadingFrom.HasValue)
1818
futureListener.Assert_Events_Contains(expectedLoadingFrom.Value.ToEventName());
1919

20-
var task1 = future1.AsTask();
21-
yield return future1.AsUniTask()
20+
var task1 = future.AsTask();
21+
yield return future.AsUniTask()
2222
.Timeout(TimeSpan.FromSeconds(10))
2323
.ToCoroutine();
24-
var task2 = future1.AsTask();
24+
var task2 = future.AsTask();
2525

2626
futureListener.Assert_Events_NotContains(EventName.Canceled);
2727

@@ -44,16 +44,16 @@ public static IEnumerator Load(string url, FutureLoadingFrom? expectedLoadingFro
4444

4545
futureListener.Assert_Events_Value<bool>(EventName.Completed, success => success == true);
4646

47-
future1.ToFutureListener(ignoreLoadingWhenLoaded: true)
47+
future.ToFutureListener(ignoreLoadingWhenLoaded: true)
4848
.Assert_Events_Equals(expectedLoadedFrom.ToEventName(), EventName.Then, EventName.Completed)
4949
.Assert_Events_Value<bool>(EventName.Completed, success => success == true);
5050

5151
if (expectedLoadingFrom.HasValue)
52-
future1.ToFutureListener()
52+
future.ToFutureListener()
5353
.Assert_Events_Equals(expectedLoadingFrom.Value.ToEventName(), expectedLoadedFrom.ToEventName(), EventName.Then, EventName.Completed)
5454
.Assert_Events_Value<bool>(EventName.Completed, success => success == true);
5555

56-
future1.Dispose();
56+
future.Dispose();
5757
yield return UniTask.Yield();
5858
}
5959
public static IEnumerator LoadFromMemoryCacheThenCancel(string url, bool useGC) => LoadThenCancel(url, null, FutureLoadedFrom.MemoryCache, useGC);
@@ -65,22 +65,22 @@ public static IEnumerator Load(string url, FutureLoadingFrom? expectedLoadingFro
6565
// }
6666
public static IEnumerator LoadThenCancel(string url, FutureLoadingFrom? expectedLoadingFrom, FutureLoadedFrom expectedLoadedFrom, bool useGC)
6767
{
68-
var future1 = ImageLoader.LoadSprite(url);
69-
var futureListener = future1.ToFutureListener();
68+
var future = ImageLoader.LoadSprite(url);
69+
var futureListener = future.ToFutureListener();
7070

7171
if (expectedLoadingFrom.HasValue)
7272
futureListener.Assert_Events_Contains(expectedLoadingFrom.Value.ToEventName());
7373

74-
var task1 = future1.AsTask();
75-
yield return future1.AsCoroutine();
76-
var task2 = future1.AsTask();
74+
var task1 = future.AsTask();
75+
yield return future.AsCoroutine();
76+
var task2 = future.AsTask();
7777

7878
futureListener.Assert_Events_NotContains(EventName.Canceled);
7979

8080
if (useGC)
8181
TestUtils.WaitForGCFast();
8282

83-
future1.Cancel();
83+
future.Cancel();
8484

8585
if (expectedLoadingFrom.HasValue)
8686
futureListener.Assert_Events_Equals(expectedLoadingFrom.Value.ToEventName(), expectedLoadedFrom.ToEventName(), EventName.Then, EventName.Completed);
@@ -101,16 +101,16 @@ public static IEnumerator LoadThenCancel(string url, FutureLoadingFrom? expected
101101

102102
futureListener.Assert_Events_Value<bool>(EventName.Completed, success => success == true);
103103

104-
future1.ToFutureListener(ignoreLoadingWhenLoaded: true)
104+
future.ToFutureListener(ignoreLoadingWhenLoaded: true)
105105
.Assert_Events_Equals(expectedLoadedFrom.ToEventName(), EventName.Then, EventName.Completed)
106106
.Assert_Events_Value<bool>(EventName.Completed, success => success == true);
107107

108108
if (expectedLoadingFrom.HasValue)
109-
future1.ToFutureListener()
109+
future.ToFutureListener()
110110
.Assert_Events_Equals(expectedLoadingFrom.Value.ToEventName(), expectedLoadedFrom.ToEventName(), EventName.Then, EventName.Completed)
111111
.Assert_Events_Value<bool>(EventName.Completed, success => success == true);
112112

113-
future1.Dispose();
113+
future.Dispose();
114114
yield return UniTask.Yield();
115115
}
116116
public static IEnumerator LoadFromMemoryCacheAndCancel(string url) => LoadAndCancel(url, null);
@@ -121,8 +121,8 @@ public static IEnumerator LoadAndCancel(string url, FutureLoadingFrom? expectedL
121121
}
122122
public static IEnumerator LoadAndCancel(string url, FutureLoadingFrom? expectedLoadingFrom, bool useGC)
123123
{
124-
var future1 = ImageLoader.LoadSprite(url);
125-
var futureListener = future1.ToFutureListener();
124+
var future = ImageLoader.LoadSprite(url);
125+
var futureListener = future.ToFutureListener();
126126
var shouldLoadFromMemoryCache = !expectedLoadingFrom.HasValue;
127127

128128
futureListener.Assert_Events_Contains(expectedLoadingFrom.HasValue
@@ -132,9 +132,9 @@ public static IEnumerator LoadAndCancel(string url, FutureLoadingFrom? expectedL
132132
if (useGC)
133133
TestUtils.WaitForGCFast();
134134

135-
var task1 = future1.AsTask();
136-
future1.Cancel();
137-
var task2 = future1.AsTask();
135+
var task1 = future.AsTask();
136+
future.Cancel();
137+
var task2 = future.AsTask();
138138

139139
var events = shouldLoadFromMemoryCache
140140
? new [] { EventName.LoadedFromMemoryCache, EventName.Then, EventName.Completed }
@@ -151,16 +151,16 @@ public static IEnumerator LoadAndCancel(string url, FutureLoadingFrom? expectedL
151151
futureListener.Assert_Events_Equals(events);
152152
futureListener.Assert_Events_Value<bool>(EventName.Completed, success => success == shouldLoadFromMemoryCache);
153153

154-
future1.ToFutureListener()
154+
future.ToFutureListener()
155155
.Assert_Events_Equals(events)
156156
.Assert_Events_Value<bool>(EventName.Completed, success => success == shouldLoadFromMemoryCache);
157157

158-
if (expectedLoadingFrom.HasValue && future1.IsLoaded)
159-
future1.ToFutureListener(ignoreLoadingWhenLoaded: true)
158+
if (expectedLoadingFrom.HasValue && future.IsLoaded)
159+
future.ToFutureListener(ignoreLoadingWhenLoaded: true)
160160
.Assert_Events_Equals(events.Except(new [] { expectedLoadingFrom.Value.ToEventName() }))
161161
.Assert_Events_Value<bool>(EventName.Completed, success => success == shouldLoadFromMemoryCache);
162162

163-
future1.Dispose();
163+
future.Dispose();
164164
yield return UniTask.Yield();
165165
}
166166
}

Assets/_PackageRoot/Tests/Editor/Utils/TestUtils.LoadFail.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,19 @@ internal static partial class TestUtils
1313
public static IEnumerator LoadFail(string url, FutureLoadingFrom? expectedLoadingFrom)
1414
{
1515
var timeout = TimeSpan.FromMilliseconds(100);
16-
var future1 = ImageLoader.LoadSprite(url).Timeout(timeout);
17-
var futureListener = future1.ToFutureListener();
16+
var future = ImageLoader.LoadSprite(url).Timeout(timeout);
17+
var futureListener = future.ToFutureListener();
1818

1919
if (expectedLoadingFrom.HasValue)
2020
futureListener.Assert_Events_Contains(expectedLoadingFrom.Value.ToEventName());
2121

22-
var task1 = future1.AsTask();
22+
var task1 = future.AsTask();
2323
if (expectedLoadingFrom.HasValue && expectedLoadingFrom.Value == FutureLoadingFrom.Source) // exception should be thrown only if ONLY loading from Source
24-
LogAssert.Expect(LogType.Error, $"[ImageLoader] Future[id={future1.Id}] Timeout ({timeout}): {url}");
25-
yield return UniTask.WaitWhile(() => future1.IsInProgress)
24+
LogAssert.Expect(LogType.Error, $"[ImageLoader] Future[id={future.Id}] Timeout ({timeout}): {url}");
25+
yield return UniTask.WaitWhile(() => future.IsInProgress)
2626
.Timeout(TimeSpan.FromSeconds(10))
2727
.ToCoroutine();
28-
var task2 = future1.AsTask();
28+
var task2 = future.AsTask();
2929

3030
var events = expectedLoadingFrom.HasValue
3131
? new[] { expectedLoadingFrom.Value.ToEventName(), EventName.Failed, EventName.Completed }
@@ -42,16 +42,16 @@ public static IEnumerator LoadFail(string url, FutureLoadingFrom? expectedLoadin
4242
futureListener.Assert_Events_Equals(events);
4343
futureListener.Assert_Events_Value<bool>(EventName.Completed, success => success == false);
4444

45-
future1.ToFutureListener(ignoreLoadingWhenLoaded: true)
45+
future.ToFutureListener(ignoreLoadingWhenLoaded: true)
4646
.Assert_Events_Equals(events)
4747
.Assert_Events_Value<bool>(EventName.Completed, success => success == false);
4848

4949
if (expectedLoadingFrom.HasValue)
50-
future1.ToFutureListener()
50+
future.ToFutureListener()
5151
.Assert_Events_Equals(events)
5252
.Assert_Events_Value<bool>(EventName.Completed, success => success == false);
5353

54-
future1.Dispose();
54+
future.Dispose();
5555
yield return UniTask.Yield();
5656
}
5757
}

Assets/_PackageRoot/Tests/Editor/Utils/TestUtils.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ internal static partial class TestUtils
2020
public static IEnumerable<string> IncorrectImageURLs(int count = 3) => Enumerable.Range(0, count).Select(_ => IncorrectImageURL);
2121
public static readonly byte[] CorruptedTextureBytes = new byte[] { 0 };
2222

23+
public static IEnumerator WaitTicks(int ticks = 1)
24+
{
25+
for (var i = 0; i < ticks; i++)
26+
yield return UniTask.Yield();
27+
}
2328
public static IEnumerator ClearEverything(string message)
2429
{
2530
if (message != null)

0 commit comments

Comments
 (0)