[+] Futures
This commit is contained in:
parent
90becc2bb9
commit
3dac9c85fc
@ -1 +1 @@
|
||||
Subproject commit 8a2beae2a35d64e5c73df376ffc1c51e04d8098c
|
||||
Subproject commit 6c8bc1d01cf7acd608f3b38d6a6eb551b546b67b
|
@ -1 +1 @@
|
||||
Subproject commit c787d854851bf3d11793d09d41a61e11f37d8a9e
|
||||
Subproject commit b60b580d62fb773e082e8ddd8d2e726148c0938e
|
@ -9,6 +9,152 @@
|
||||
|
||||
static const auto kMaxTicks = 30;
|
||||
|
||||
static void TestFutureSimple1()
|
||||
{
|
||||
AuLogDbg("A");
|
||||
auto pRet = AuFuture<void>::New();
|
||||
pRet->Complete();
|
||||
pRet->OnComplete([]()
|
||||
{
|
||||
AuLogDbg("Complete Success [1]");
|
||||
});
|
||||
}
|
||||
|
||||
static void TestFutureSimple2()
|
||||
{
|
||||
AuLogDbg("B");
|
||||
auto pRet = AuFuture<void>::New();
|
||||
pRet->OnComplete([]()
|
||||
{
|
||||
AuLogDbg("Complete Success [2]");
|
||||
});
|
||||
pRet->Complete();
|
||||
}
|
||||
|
||||
|
||||
static void TestFutureSimple3()
|
||||
{
|
||||
auto pRetA = AuFuture<void>::New();
|
||||
auto pRetB = AuFuture<void>::New();
|
||||
auto pWaterfall = AuWaterfall::New();
|
||||
|
||||
pRetA->OnComplete([]()
|
||||
{
|
||||
AuLogDbg("Pre-success A");
|
||||
});
|
||||
pRetA->Complete();
|
||||
|
||||
pRetB->OnComplete([]()
|
||||
{
|
||||
AuLogDbg("Pre-success B");
|
||||
});
|
||||
pRetB->OnFailure([]()
|
||||
{
|
||||
AuLogDbg("Pre-fail B");
|
||||
});
|
||||
|
||||
pRetB->Complete();
|
||||
|
||||
pWaterfall->AddFuture(pRetA);
|
||||
pWaterfall->AddFuture(pRetB);
|
||||
|
||||
pWaterfall->OnSuccess([]()
|
||||
{
|
||||
AuLogDbg("On Success ALL");
|
||||
SysAssert(true);
|
||||
});
|
||||
pWaterfall->OnFailure([]()
|
||||
{
|
||||
AuLogDbg("On Fail ALL");
|
||||
SysAssert(false);
|
||||
});
|
||||
}
|
||||
|
||||
static void TestFutureSimple4()
|
||||
{
|
||||
auto pRetA = AuFuture<void>::New();
|
||||
auto pRetB = AuFuture<void>::New();
|
||||
auto pWaterfall = AuWaterfall::New(false);
|
||||
|
||||
pRetA->OnComplete([]()
|
||||
{
|
||||
AuLogDbg("Pre-success A");
|
||||
});
|
||||
pRetA->Complete();
|
||||
|
||||
pRetB->OnComplete([]()
|
||||
{
|
||||
AuLogDbg("Pre-success B");
|
||||
});
|
||||
pRetB->OnFailure([]()
|
||||
{
|
||||
AuLogDbg("Pre-fail B");
|
||||
});
|
||||
pRetB->Fail();
|
||||
|
||||
pWaterfall->AddFuture(pRetA);
|
||||
pWaterfall->AddFuture(pRetB);
|
||||
|
||||
pWaterfall->OnSuccess([]()
|
||||
{
|
||||
AuLogDbg("On Success ALL (expected)");
|
||||
SysAssert(true);
|
||||
});
|
||||
|
||||
pWaterfall->OnFailure([]()
|
||||
{
|
||||
AuLogDbg("On Fail All (BAD)");
|
||||
SysAssert(false);
|
||||
});
|
||||
}
|
||||
|
||||
static void TestFutureSimple5()
|
||||
{
|
||||
auto pRetA = AuFuture<void>::New();
|
||||
auto pRetB = AuFuture<void>::New();
|
||||
auto pWaterfall = AuWaterfall::New();
|
||||
|
||||
pRetA->OnComplete([]()
|
||||
{
|
||||
AuLogDbg("Pre-success A ASD");
|
||||
});
|
||||
pRetA->Complete();
|
||||
|
||||
pRetB->OnComplete([]()
|
||||
{
|
||||
AuLogDbg("Pre-success B AAA AS");
|
||||
});
|
||||
pRetB->OnFailure([]()
|
||||
{
|
||||
AuLogDbg("Pre-fail B AA");
|
||||
});
|
||||
pRetB->Fail();
|
||||
|
||||
pWaterfall->AddFuture(pRetA);
|
||||
pWaterfall->AddFuture(pRetB);
|
||||
|
||||
pWaterfall->OnSuccess([]()
|
||||
{
|
||||
AuLogDbg("On Success ALL [bad]");
|
||||
SysAssert(false);
|
||||
});
|
||||
|
||||
pWaterfall->OnFailure([]()
|
||||
{
|
||||
AuLogDbg("On Fail (Any)");
|
||||
SysAssert(true);
|
||||
});
|
||||
}
|
||||
|
||||
static void TestFutures()
|
||||
{
|
||||
TestFutureSimple1();
|
||||
TestFutureSimple2();
|
||||
TestFutureSimple3();
|
||||
TestFutureSimple4();
|
||||
TestFutureSimple5();
|
||||
}
|
||||
|
||||
static void TestPromise()
|
||||
{
|
||||
auto main = AuThreads::GetThread();
|
||||
@ -185,6 +331,7 @@ static void TestFail()
|
||||
|
||||
static void MainTest()
|
||||
{
|
||||
TestFutures();
|
||||
TestPromise();
|
||||
TestWriteError();
|
||||
TestWriteSuccess();
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 783d00fd19865fcbc3065e3fb3e17144761fcf5a
|
||||
Subproject commit 45804691223635953f311cf31a10c632553bbfc3
|
Loading…
Reference in New Issue
Block a user