diff --git a/Promises.xcodeproj/project.pbxproj b/Promises.xcodeproj/project.pbxproj index b5c42d2..b67cf18 100644 --- a/Promises.xcodeproj/project.pbxproj +++ b/Promises.xcodeproj/project.pbxproj @@ -10,7 +10,7 @@ 032B80ED204549000097BF12 /* FBLPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 03204071204547D300D2D16C /* FBLPromise.m */; }; 032B80EE204549000097BF12 /* FBLPromise+All.m in Sources */ = {isa = PBXBuildFile; fileRef = 0320406F204547D300D2D16C /* FBLPromise+All.m */; }; 032B80EF204549000097BF12 /* FBLPromise+Always.m in Sources */ = {isa = PBXBuildFile; fileRef = 0320406A204547D300D2D16C /* FBLPromise+Always.m */; }; - 032B80F0204549000097BF12 /* FBLPromise+Any.m in Sources */ = {isa = PBXBuildFile; fileRef = 03204068204547D300D2D16C /* FBLPromise+Any.m */; }; + 032B80F0204549000097BF12 /* FBLPromise+Race.m in Sources */ = {isa = PBXBuildFile; fileRef = 03204068204547D300D2D16C /* FBLPromise+Race.m */; }; 032B80F1204549000097BF12 /* FBLPromise+Async.m in Sources */ = {isa = PBXBuildFile; fileRef = 03204069204547D300D2D16C /* FBLPromise+Async.m */; }; 032B80F2204549000097BF12 /* FBLPromise+Catch.m in Sources */ = {isa = PBXBuildFile; fileRef = 0320406B204547D300D2D16C /* FBLPromise+Catch.m */; }; 032B80F3204549000097BF12 /* FBLPromise+Do.m in Sources */ = {isa = PBXBuildFile; fileRef = 0320404F204547D300D2D16C /* FBLPromise+Do.m */; }; @@ -25,7 +25,7 @@ 032B80FC204549080097BF12 /* FBLPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 03204058204547D300D2D16C /* FBLPromise.h */; settings = {ATTRIBUTES = (Public, ); }; }; 032B80FD204549080097BF12 /* FBLPromise+All.h in Headers */ = {isa = PBXBuildFile; fileRef = 03204057204547D300D2D16C /* FBLPromise+All.h */; settings = {ATTRIBUTES = (Public, ); }; }; 032B80FE204549080097BF12 /* FBLPromise+Always.h in Headers */ = {isa = PBXBuildFile; fileRef = 03204063204547D300D2D16C /* FBLPromise+Always.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 032B80FF204549080097BF12 /* FBLPromise+Any.h in Headers */ = {isa = PBXBuildFile; fileRef = 03204064204547D300D2D16C /* FBLPromise+Any.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 032B80FF204549080097BF12 /* FBLPromise+Race.h in Headers */ = {isa = PBXBuildFile; fileRef = 03204064204547D300D2D16C /* FBLPromise+Race.h */; settings = {ATTRIBUTES = (Public, ); }; }; 032B8100204549080097BF12 /* FBLPromise+Async.h in Headers */ = {isa = PBXBuildFile; fileRef = 03204062204547D300D2D16C /* FBLPromise+Async.h */; settings = {ATTRIBUTES = (Public, ); }; }; 032B8101204549080097BF12 /* FBLPromise+Catch.h in Headers */ = {isa = PBXBuildFile; fileRef = 03204053204547D300D2D16C /* FBLPromise+Catch.h */; settings = {ATTRIBUTES = (Public, ); }; }; 032B8102204549080097BF12 /* FBLPromise+Do.h in Headers */ = {isa = PBXBuildFile; fileRef = 0320405B204547D300D2D16C /* FBLPromise+Do.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -44,7 +44,7 @@ 032B81122045493A0097BF12 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0320404B204547D300D2D16C /* Promise.swift */; }; 032B81132045493A0097BF12 /* Promise+All.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0320404A204547D300D2D16C /* Promise+All.swift */; }; 032B81142045493A0097BF12 /* Promise+Always.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204047204547D300D2D16C /* Promise+Always.swift */; }; - 032B81152045493A0097BF12 /* Promise+Any.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204045204547D300D2D16C /* Promise+Any.swift */; }; + 032B81152045493A0097BF12 /* Promise+Race.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204045204547D300D2D16C /* Promise+Race.swift */; }; 032B81162045493A0097BF12 /* Promise+Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204044204547D300D2D16C /* Promise+Async.swift */; }; 032B81172045493A0097BF12 /* Promise+Catch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204042204547D300D2D16C /* Promise+Catch.swift */; }; 032B81182045493A0097BF12 /* Promise+Do.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204049204547D300D2D16C /* Promise+Do.swift */; }; @@ -63,7 +63,7 @@ 032B8125204549510097BF12 /* FBLPromise+ThenPerformanceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03204082204547D400D2D16C /* FBLPromise+ThenPerformanceTests.m */; }; 032B8126204549590097BF12 /* FBLPromise+AllTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03204090204547D400D2D16C /* FBLPromise+AllTests.m */; }; 032B8127204549590097BF12 /* FBLPromise+AlwaysTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0320408A204547D400D2D16C /* FBLPromise+AlwaysTests.m */; }; - 032B8128204549590097BF12 /* FBLPromise+AnyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0320408D204547D400D2D16C /* FBLPromise+AnyTests.m */; }; + 032B8128204549590097BF12 /* FBLPromise+RaceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0320408D204547D400D2D16C /* FBLPromise+RaceTests.m */; }; 032B8129204549590097BF12 /* FBLPromise+AsyncTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03204093204547D400D2D16C /* FBLPromise+AsyncTests.m */; }; 032B812A204549590097BF12 /* FBLPromise+CatchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0320408F204547D400D2D16C /* FBLPromise+CatchTests.m */; }; 032B812B204549590097BF12 /* FBLPromise+DoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0320408B204547D400D2D16C /* FBLPromise+DoTests.m */; }; @@ -79,7 +79,7 @@ 032B8135204549680097BF12 /* Promise+ThenPerformanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204087204547D400D2D16C /* Promise+ThenPerformanceTests.swift */; }; 032B8136204549700097BF12 /* Promise+AllTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204074204547D300D2D16C /* Promise+AllTests.swift */; }; 032B8137204549700097BF12 /* Promise+AlwaysTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0320407A204547D300D2D16C /* Promise+AlwaysTests.swift */; }; - 032B8138204549700097BF12 /* Promise+AnyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204075204547D300D2D16C /* Promise+AnyTests.swift */; }; + 032B8138204549700097BF12 /* Promise+RaceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204075204547D300D2D16C /* Promise+RaceTests.swift */; }; 032B8139204549700097BF12 /* Promise+AsyncTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204078204547D300D2D16C /* Promise+AsyncTests.swift */; }; 032B813A204549700097BF12 /* Promise+CatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03204076204547D300D2D16C /* Promise+CatchTests.swift */; }; 032B813B204549700097BF12 /* Promise+DoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0320407B204547D300D2D16C /* Promise+DoTests.swift */; }; @@ -298,7 +298,7 @@ 03204042204547D300D2D16C /* Promise+Catch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+Catch.swift"; sourceTree = ""; }; 03204043204547D300D2D16C /* Promise+Wrap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+Wrap.swift"; sourceTree = ""; }; 03204044204547D300D2D16C /* Promise+Async.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+Async.swift"; sourceTree = ""; }; - 03204045204547D300D2D16C /* Promise+Any.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+Any.swift"; sourceTree = ""; }; + 03204045204547D300D2D16C /* Promise+Race.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+Race.swift"; sourceTree = ""; }; 03204046204547D300D2D16C /* PromiseError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PromiseError.swift; sourceTree = ""; }; 03204047204547D300D2D16C /* Promise+Always.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+Always.swift"; sourceTree = ""; }; 03204048204547D300D2D16C /* Promise+Timeout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+Timeout.swift"; sourceTree = ""; }; @@ -326,11 +326,11 @@ 03204061204547D300D2D16C /* FBLPromise+Wrap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FBLPromise+Wrap.h"; sourceTree = ""; }; 03204062204547D300D2D16C /* FBLPromise+Async.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FBLPromise+Async.h"; sourceTree = ""; }; 03204063204547D300D2D16C /* FBLPromise+Always.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FBLPromise+Always.h"; sourceTree = ""; }; - 03204064204547D300D2D16C /* FBLPromise+Any.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FBLPromise+Any.h"; sourceTree = ""; }; + 03204064204547D300D2D16C /* FBLPromise+Race.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FBLPromise+Race.h"; sourceTree = ""; }; 03204065204547D300D2D16C /* FBLPromise+Then.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+Then.m"; sourceTree = ""; }; 03204066204547D300D2D16C /* FBLPromiseError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBLPromiseError.m; sourceTree = ""; }; 03204067204547D300D2D16C /* FBLPromise+Timeout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+Timeout.m"; sourceTree = ""; }; - 03204068204547D300D2D16C /* FBLPromise+Any.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+Any.m"; sourceTree = ""; }; + 03204068204547D300D2D16C /* FBLPromise+Race.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+Race.m"; sourceTree = ""; }; 03204069204547D300D2D16C /* FBLPromise+Async.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+Async.m"; sourceTree = ""; }; 0320406A204547D300D2D16C /* FBLPromise+Always.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+Always.m"; sourceTree = ""; }; 0320406B204547D300D2D16C /* FBLPromise+Catch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+Catch.m"; sourceTree = ""; }; @@ -341,7 +341,7 @@ 03204070204547D300D2D16C /* FBLPromise+Validate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+Validate.m"; sourceTree = ""; }; 03204071204547D300D2D16C /* FBLPromise.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBLPromise.m; sourceTree = ""; }; 03204074204547D300D2D16C /* Promise+AllTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+AllTests.swift"; sourceTree = ""; }; - 03204075204547D300D2D16C /* Promise+AnyTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+AnyTests.swift"; sourceTree = ""; }; + 03204075204547D300D2D16C /* Promise+RaceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+RaceTests.swift"; sourceTree = ""; }; 03204076204547D300D2D16C /* Promise+CatchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+CatchTests.swift"; sourceTree = ""; }; 03204077204547D300D2D16C /* Promise+ValidateTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+ValidateTests.swift"; sourceTree = ""; }; 03204078204547D300D2D16C /* Promise+AsyncTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Promise+AsyncTests.swift"; sourceTree = ""; }; @@ -361,7 +361,7 @@ 0320408A204547D400D2D16C /* FBLPromise+AlwaysTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+AlwaysTests.m"; sourceTree = ""; }; 0320408B204547D400D2D16C /* FBLPromise+DoTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+DoTests.m"; sourceTree = ""; }; 0320408C204547D400D2D16C /* FBLPromiseTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBLPromiseTests.m; sourceTree = ""; }; - 0320408D204547D400D2D16C /* FBLPromise+AnyTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+AnyTests.m"; sourceTree = ""; }; + 0320408D204547D400D2D16C /* FBLPromise+RaceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+RaceTests.m"; sourceTree = ""; }; 0320408E204547D400D2D16C /* FBLPromise+RecoverTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+RecoverTests.m"; sourceTree = ""; }; 0320408F204547D400D2D16C /* FBLPromise+CatchTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+CatchTests.m"; sourceTree = ""; }; 03204090204547D400D2D16C /* FBLPromise+AllTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBLPromise+AllTests.m"; sourceTree = ""; }; @@ -531,10 +531,10 @@ 0320404B204547D300D2D16C /* Promise.swift */, 0320404A204547D300D2D16C /* Promise+All.swift */, 03204047204547D300D2D16C /* Promise+Always.swift */, - 03204045204547D300D2D16C /* Promise+Any.swift */, 03204044204547D300D2D16C /* Promise+Async.swift */, 03204042204547D300D2D16C /* Promise+Catch.swift */, 03204049204547D300D2D16C /* Promise+Do.swift */, + 03204045204547D300D2D16C /* Promise+Race.swift */, 03204040204547D300D2D16C /* Promise+Recover.swift */, 03326C2B20838CD200872827 /* Promise+Reduce.swift */, 0320403F204547D300D2D16C /* Promise+Testing.swift */, @@ -554,10 +554,10 @@ 03204071204547D300D2D16C /* FBLPromise.m */, 0320406F204547D300D2D16C /* FBLPromise+All.m */, 0320406A204547D300D2D16C /* FBLPromise+Always.m */, - 03204068204547D300D2D16C /* FBLPromise+Any.m */, 03204069204547D300D2D16C /* FBLPromise+Async.m */, 0320406B204547D300D2D16C /* FBLPromise+Catch.m */, 0320404F204547D300D2D16C /* FBLPromise+Do.m */, + 03204068204547D300D2D16C /* FBLPromise+Race.m */, 0320406E204547D300D2D16C /* FBLPromise+Recover.m */, 03326C312084642000872827 /* FBLPromise+Reduce.m */, 0320406C204547D300D2D16C /* FBLPromise+Testing.m */, @@ -578,10 +578,10 @@ 03204058204547D300D2D16C /* FBLPromise.h */, 03204057204547D300D2D16C /* FBLPromise+All.h */, 03204063204547D300D2D16C /* FBLPromise+Always.h */, - 03204064204547D300D2D16C /* FBLPromise+Any.h */, 03204062204547D300D2D16C /* FBLPromise+Async.h */, 03204053204547D300D2D16C /* FBLPromise+Catch.h */, 0320405B204547D300D2D16C /* FBLPromise+Do.h */, + 03204064204547D300D2D16C /* FBLPromise+Race.h */, 03204054204547D300D2D16C /* FBLPromise+Recover.h */, 03326C342084643600872827 /* FBLPromise+Reduce.h */, 03204052204547D300D2D16C /* FBLPromise+Testing.h */, @@ -616,10 +616,10 @@ children = ( 03204074204547D300D2D16C /* Promise+AllTests.swift */, 0320407A204547D300D2D16C /* Promise+AlwaysTests.swift */, - 03204075204547D300D2D16C /* Promise+AnyTests.swift */, 03204078204547D300D2D16C /* Promise+AsyncTests.swift */, 03204076204547D300D2D16C /* Promise+CatchTests.swift */, 0320407B204547D300D2D16C /* Promise+DoTests.swift */, + 03204075204547D300D2D16C /* Promise+RaceTests.swift */, 03204079204547D300D2D16C /* Promise+RecoverTests.swift */, 03326C2E20841E0300872827 /* Promise+ReduceTests.swift */, 0320407F204547D400D2D16C /* Promise+ThenTests.swift */, @@ -662,10 +662,10 @@ children = ( 03204090204547D400D2D16C /* FBLPromise+AllTests.m */, 0320408A204547D400D2D16C /* FBLPromise+AlwaysTests.m */, - 0320408D204547D400D2D16C /* FBLPromise+AnyTests.m */, 03204093204547D400D2D16C /* FBLPromise+AsyncTests.m */, 0320408F204547D400D2D16C /* FBLPromise+CatchTests.m */, 0320408B204547D400D2D16C /* FBLPromise+DoTests.m */, + 0320408D204547D400D2D16C /* FBLPromise+RaceTests.m */, 0320408E204547D400D2D16C /* FBLPromise+RecoverTests.m */, 03326C36208464C100872827 /* FBLPromise+ReduceTests.m */, 03204094204547D400D2D16C /* FBLPromise+ThenTests.m */, @@ -720,7 +720,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 032B80FF204549080097BF12 /* FBLPromise+Any.h in Headers */, + 032B80FF204549080097BF12 /* FBLPromise+Race.h in Headers */, 032B8109204549080097BF12 /* FBLPromise+When.h in Headers */, 032B8102204549080097BF12 /* FBLPromise+Do.h in Headers */, 032B8100204549080097BF12 /* FBLPromise+Async.h in Headers */, @@ -1007,7 +1007,7 @@ 032B8136204549700097BF12 /* Promise+AllTests.swift in Sources */, 032B8139204549700097BF12 /* Promise+AsyncTests.swift in Sources */, 032B8140204549700097BF12 /* Promise+ValidateTests.swift in Sources */, - 032B8138204549700097BF12 /* Promise+AnyTests.swift in Sources */, + 032B8138204549700097BF12 /* Promise+RaceTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1018,7 +1018,7 @@ 032B812C204549590097BF12 /* FBLPromise+RecoverTests.m in Sources */, 032B8126204549590097BF12 /* FBLPromise+AllTests.m in Sources */, 032B8129204549590097BF12 /* FBLPromise+AsyncTests.m in Sources */, - 032B8128204549590097BF12 /* FBLPromise+AnyTests.m in Sources */, + 032B8128204549590097BF12 /* FBLPromise+RaceTests.m in Sources */, 032B812F204549590097BF12 /* FBLPromise+TimeoutTests.m in Sources */, 032B812B204549590097BF12 /* FBLPromise+DoTests.m in Sources */, 032B812D204549590097BF12 /* FBLPromise+WrapTests.m in Sources */, @@ -1074,7 +1074,7 @@ 032B811C2045493A0097BF12 /* Promise+Then.swift in Sources */, 032B81162045493A0097BF12 /* Promise+Async.swift in Sources */, 032B81182045493A0097BF12 /* Promise+Do.swift in Sources */, - 032B81152045493A0097BF12 /* Promise+Any.swift in Sources */, + 032B81152045493A0097BF12 /* Promise+Race.swift in Sources */, 032B81142045493A0097BF12 /* Promise+Always.swift in Sources */, 032B811B2045493A0097BF12 /* Promise+Testing.swift in Sources */, 032B81172045493A0097BF12 /* Promise+Catch.swift in Sources */, @@ -1102,7 +1102,7 @@ 032B80F1204549000097BF12 /* FBLPromise+Async.m in Sources */, 032B80F4204549000097BF12 /* FBLPromise+Recover.m in Sources */, 032B80F5204549000097BF12 /* FBLPromise+Wrap.m in Sources */, - 032B80F0204549000097BF12 /* FBLPromise+Any.m in Sources */, + 032B80F0204549000097BF12 /* FBLPromise+Race.m in Sources */, 032B80F9204549000097BF12 /* FBLPromise+Validate.m in Sources */, 032B80F3204549000097BF12 /* FBLPromise+Do.m in Sources */, 032B80EF204549000097BF12 /* FBLPromise+Always.m in Sources */, diff --git a/README.md b/README.md index ca7c755..9af8bc2 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Objective-C and Swift to facilitate writing asynchronous code. * [Extensions](g3doc/index.md#extensions) * [All](g3doc/index.md#all) * [Always](g3doc/index.md#always) - * [Any](g3doc/index.md#any) + * [Race](g3doc/index.md#race) * [Recover](g3doc/index.md#recover) * [Reduce](g3doc/index.md#reduce) * [Timeout](g3doc/index.md#timeout) diff --git a/Sources/FBLPromises/FBLPromise+Any.m b/Sources/FBLPromises/FBLPromise+Race.m similarity index 72% rename from Sources/FBLPromises/FBLPromise+Any.m rename to Sources/FBLPromises/FBLPromise+Race.m index cbf63c5..b5bd9f1 100644 --- a/Sources/FBLPromises/FBLPromise+Any.m +++ b/Sources/FBLPromises/FBLPromise+Race.m @@ -14,22 +14,22 @@ limitations under the License. */ -#import "FBLPromise+Any.h" +#import "FBLPromise+Race.h" #import "FBLPromise+Async.h" #import "FBLPromisePrivate.h" -@implementation FBLPromise (AnyAdditions) +@implementation FBLPromise (RaceAdditions) -+ (instancetype)any:(NSArray *)promises { - return [self onQueue:self.defaultDispatchQueue any:promises]; ++ (instancetype)race:(NSArray *)promises { + return [self onQueue:self.defaultDispatchQueue race:promises]; } -+ (instancetype)onQueue:(dispatch_queue_t)queue any:(NSArray *)anyPromises { ++ (instancetype)onQueue:(dispatch_queue_t)queue race:(NSArray *)racePromises { NSParameterAssert(queue); - NSAssert(anyPromises.count > 0, @"No promises to observe"); + NSAssert(racePromises.count > 0, @"No promises to observe"); - NSArray *promises = [anyPromises copy]; + NSArray *promises = [racePromises copy]; return [FBLPromise onQueue:queue async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { for (id promise in promises) { @@ -48,17 +48,17 @@ @end -@implementation FBLPromise (DotSyntax_AnyAdditions) +@implementation FBLPromise (DotSyntax_RaceAdditions) -+ (FBLPromise * (^)(NSArray *))any { ++ (FBLPromise * (^)(NSArray *))race { return ^(NSArray *promises) { - return [self any:promises]; + return [self race:promises]; }; } -+ (FBLPromise * (^)(dispatch_queue_t, NSArray *))anyOn { ++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))raceOn { return ^(dispatch_queue_t queue, NSArray *promises) { - return [self onQueue:queue any:promises]; + return [self onQueue:queue race:promises]; }; } diff --git a/Sources/FBLPromises/include/FBLPromise+Any.h b/Sources/FBLPromises/include/FBLPromise+Race.h similarity index 77% rename from Sources/FBLPromises/include/FBLPromise+Any.h rename to Sources/FBLPromises/include/FBLPromise+Race.h index 0171aea..2f67258 100644 --- a/Sources/FBLPromises/include/FBLPromise+Any.h +++ b/Sources/FBLPromises/include/FBLPromise+Race.h @@ -18,7 +18,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface FBLPromise(AnyAdditions) +@interface FBLPromise(RaceAdditions) /** Wait until any of the given promises are fulfilled. @@ -30,7 +30,7 @@ NS_ASSUME_NONNULL_BEGIN @return A new pending promise to be resolved with the same resolution as the first promise, among the given ones, which was resolved. */ -+ (instancetype)any:(NSArray *)promises NS_SWIFT_UNAVAILABLE(""); ++ (instancetype)race:(NSArray *)promises NS_SWIFT_UNAVAILABLE(""); /** Wait until any of the given promises are fulfilled. @@ -43,18 +43,18 @@ NS_ASSUME_NONNULL_BEGIN @return A new pending promise to be resolved with the same resolution as the first promise, among the given ones, which was resolved. */ -+ (instancetype)onQueue:(dispatch_queue_t)queue any:(NSArray *)promises NS_REFINED_FOR_SWIFT; ++ (instancetype)onQueue:(dispatch_queue_t)queue race:(NSArray *)promises NS_REFINED_FOR_SWIFT; @end /** - Convenience dot-syntax wrappers for `FBLPromise` `any` operators. - Usage: FBLPromise.any(@[ ... ]) + Convenience dot-syntax wrappers for `FBLPromise` `race` operators. + Usage: FBLPromise.race(@[ ... ]) */ -@interface FBLPromise(DotSyntax_AnyAdditions) +@interface FBLPromise(DotSyntax_RaceAdditions) -+ (FBLPromise * (^)(NSArray *))any FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); -+ (FBLPromise * (^)(dispatch_queue_t, NSArray *))anyOn FBL_PROMISES_DOT_SYNTAX ++ (FBLPromise * (^)(NSArray *))race FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))raceOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); @end diff --git a/Sources/FBLPromises/include/FBLPromises.h b/Sources/FBLPromises/include/FBLPromises.h index 81c8035..8861dca 100644 --- a/Sources/FBLPromises/include/FBLPromises.h +++ b/Sources/FBLPromises/include/FBLPromises.h @@ -16,10 +16,10 @@ #import "FBLPromise+All.h" #import "FBLPromise+Always.h" -#import "FBLPromise+Any.h" #import "FBLPromise+Async.h" #import "FBLPromise+Catch.h" #import "FBLPromise+Do.h" +#import "FBLPromise+Race.h" #import "FBLPromise+Recover.h" #import "FBLPromise+Then.h" #import "FBLPromise+Timeout.h" diff --git a/Sources/FBLPromises/include/framework.modulemap b/Sources/FBLPromises/include/framework.modulemap index 2f19fae..ebdbf8f 100644 --- a/Sources/FBLPromises/include/framework.modulemap +++ b/Sources/FBLPromises/include/framework.modulemap @@ -5,10 +5,10 @@ framework module FBLPromises { header "FBLPromiseError.h" header "FBLPromise+All.h" header "FBLPromise+Always.h" - header "FBLPromise+Any.h" header "FBLPromise+Async.h" header "FBLPromise+Catch.h" header "FBLPromise+Do.h" + header "FBLPromise+Race.h" header "FBLPromise+Recover.h" header "FBLPromise+Reduce.h" header "FBLPromise+Testing.h" diff --git a/Sources/FBLPromises/include/module.modulemap b/Sources/FBLPromises/include/module.modulemap index 58541e3..3e877fa 100644 --- a/Sources/FBLPromises/include/module.modulemap +++ b/Sources/FBLPromises/include/module.modulemap @@ -5,10 +5,10 @@ module FBLPromises { header "FBLPromiseError.h" header "FBLPromise+All.h" header "FBLPromise+Always.h" - header "FBLPromise+Any.h" header "FBLPromise+Async.h" header "FBLPromise+Catch.h" header "FBLPromise+Do.h" + header "FBLPromise+Race.h" header "FBLPromise+Recover.h" header "FBLPromise+Reduce.h" header "FBLPromise+Testing.h" diff --git a/Sources/Promises/Promise+Any.swift b/Sources/Promises/Promise+Race.swift similarity index 92% rename from Sources/Promises/Promise+Any.swift rename to Sources/Promises/Promise+Race.swift index 1d221f4..f3ba276 100644 --- a/Sources/Promises/Promise+Any.swift +++ b/Sources/Promises/Promise+Race.swift @@ -22,11 +22,11 @@ import Dispatch /// - queue: A queue to dispatch on. /// - promises: Promises to wait for. /// - returns: First promise, among the given ones, which was fulfilled. -public func any( +public func race( on queue: DispatchQueue = .promises, _ promises: Promise... ) -> Promise { - return any(on: queue, promises) + return race(on: queue, promises) } /// Wait until any of the given promises are fulfilled. @@ -37,13 +37,13 @@ public func any( /// - queue: A queue to dispatch on. /// - promises: Promises to wait for. /// - returns: First promise, among the given ones, which was fulfilled. -public func any( +public func race( on queue: DispatchQueue = .promises, _ promises: [Promise] ) -> Promise { let promises = promises.map { $0.objCPromise } let promise = Promise( - Promise.ObjCPromise.__onQueue(queue, any: promises) + Promise.ObjCPromise.__onQueue(queue, race: promises) ) // Keep Swift wrapper alive for chained promises until `ObjCPromise` counterpart is resolved. promises.forEach { diff --git a/Tests/FBLPromisesTests/FBLPromise+AnyTests.m b/Tests/FBLPromisesTests/FBLPromise+RaceTests.m similarity index 80% rename from Tests/FBLPromisesTests/FBLPromise+AnyTests.m rename to Tests/FBLPromisesTests/FBLPromise+RaceTests.m index b94212d..08a9140 100644 --- a/Tests/FBLPromisesTests/FBLPromise+AnyTests.m +++ b/Tests/FBLPromisesTests/FBLPromise+RaceTests.m @@ -14,7 +14,7 @@ limitations under the License. */ -#import "FBLPromise+Any.h" +#import "FBLPromise+Race.h" #import @@ -24,12 +24,12 @@ #import "FBLPromise+Then.h" #import "FBLPromisesTestHelpers.h" -@interface FBLPromiseAnyTests : XCTestCase +@interface FBLPromiseRaceTests : XCTestCase @end -@implementation FBLPromiseAnyTests +@implementation FBLPromiseRaceTests -- (void)testPromiseAny { +- (void)testPromiseRace { // Arrange. FBLPromise *promise1 = [FBLPromise async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { @@ -58,7 +58,7 @@ // Act. FBLPromise *fastestPromise = - [[FBLPromise any:@[ promise1, promise2, promise3, promise4 ]] then:^id(NSNumber *value) { + [[FBLPromise race:@[ promise1, promise2, promise3, promise4 ]] then:^id(NSNumber *value) { XCTAssertEqualObjects(value, @42); return value; }]; @@ -69,7 +69,7 @@ XCTAssertNil(fastestPromise.error); } -- (void)testPromiseAnyRejectFirst { +- (void)testPromiseRaceRejectFirst { // Arrange. FBLPromise *promise1 = [FBLPromise async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { @@ -85,7 +85,7 @@ }]; // Act. - FBLPromise *fastestPromise = [[[FBLPromise any:@[ promise1, promise2 ]] then:^id(id __unused _) { + FBLPromise *fastestPromise = [[[FBLPromise race:@[ promise1, promise2 ]] then:^id(id __unused _) { XCTFail(); return nil; }] catch:^(NSError *error) { @@ -98,7 +98,7 @@ XCTAssertNil(fastestPromise.value); } -- (void)testPromiseAnyRejectLast { +- (void)testPromiseRaceRejectLast { // Arrange. FBLPromise *promise1 = [FBLPromise async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { @@ -113,30 +113,9 @@ }); }]; - // Act. - FBLPromise *fastestPromise = [[FBLPromise any:@[ promise1, promise2 ]] then:^id(NSNumber *value) { - XCTAssertEqualObjects(value, @42); - return value; - }]; - - // Assert. - XCTAssert(FBLWaitForPromisesWithTimeout(10)); - XCTAssertEqualObjects(fastestPromise.value, @42); - XCTAssertNil(fastestPromise.error); -} - -- (void)testPromiseAnyWithValues { - // Arrange. - FBLPromise *> *promise = - [FBLPromise async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { - FBLDelay(0.1, ^{ - fulfill(@[ @42 ]); - }); - }]; - // Act. FBLPromise *fastestPromise = - [[FBLPromise any:@[ @42, @"hello world", promise ]] then:^id(NSNumber *value) { + [[FBLPromise race:@[ promise1, promise2 ]] then:^id(NSNumber *value) { XCTAssertEqualObjects(value, @42); return value; }]; @@ -147,9 +126,8 @@ XCTAssertNil(fastestPromise.error); } -- (void)testPromiseAnyWithErrorFirst { +- (void)testPromiseRaceWithValues { // Arrange. - NSError *error = [NSError errorWithDomain:FBLPromiseErrorDomain code:42 userInfo:nil]; FBLPromise *> *promise = [FBLPromise async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { FBLDelay(0.1, ^{ @@ -158,20 +136,19 @@ }]; // Act. - FBLPromise *fastestPromise = [[[FBLPromise any:@[ promise, error, @42 ]] then:^id(id __unused _) { - XCTFail(); - return nil; - }] catch:^(NSError *error) { - XCTAssertEqual(error.code, 42); - }]; + FBLPromise *fastestPromise = + [[FBLPromise race:@[ @42, @"hello world", promise ]] then:^id(NSNumber *value) { + XCTAssertEqualObjects(value, @42); + return value; + }]; // Assert. XCTAssert(FBLWaitForPromisesWithTimeout(10)); - XCTAssertEqual(fastestPromise.error.code, 42); - XCTAssertNil(fastestPromise.value); + XCTAssertEqualObjects(fastestPromise.value, @42); + XCTAssertNil(fastestPromise.error); } -- (void)testPromiseAnyWithErrorLast { +- (void)testPromiseRaceWithErrorFirst { // Arrange. NSError *error = [NSError errorWithDomain:FBLPromiseErrorDomain code:42 userInfo:nil]; FBLPromise *> *promise = @@ -183,7 +160,32 @@ // Act. FBLPromise *fastestPromise = - [[FBLPromise any:@[ promise, @42, error ]] then:^id(NSNumber *value) { + [[[FBLPromise race:@[ promise, error, @42 ]] then:^id(id __unused _) { + XCTFail(); + return nil; + }] catch:^(NSError *error) { + XCTAssertEqual(error.code, 42); + }]; + + // Assert. + XCTAssert(FBLWaitForPromisesWithTimeout(10)); + XCTAssertEqual(fastestPromise.error.code, 42); + XCTAssertNil(fastestPromise.value); +} + +- (void)testPromiseRaceWithErrorLast { + // Arrange. + NSError *error = [NSError errorWithDomain:FBLPromiseErrorDomain code:42 userInfo:nil]; + FBLPromise *> *promise = + [FBLPromise async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { + FBLDelay(0.1, ^{ + fulfill(@[ @42 ]); + }); + }]; + + // Act. + FBLPromise *fastestPromise = + [[FBLPromise race:@[ promise, @42, error ]] then:^id(NSNumber *value) { XCTAssertEqualObjects(value, @42); return value; }]; @@ -195,9 +197,9 @@ } /** - Promise created with `any` should not deallocate until it gets resolved. + Promise created with `race` should not deallocate until it gets resolved. */ -- (void)testPromiseAnyNoDeallocUntilResolved { +- (void)testPromiseRaceNoDeallocUntilResolved { // Arrange. FBLPromise *promise = [FBLPromise pendingPromise]; FBLPromise __weak *weakExtendedPromise1; @@ -207,8 +209,8 @@ @autoreleasepool { XCTAssertNil(weakExtendedPromise1); XCTAssertNil(weakExtendedPromise2); - weakExtendedPromise1 = [FBLPromise any:@[ promise ]]; - weakExtendedPromise2 = [FBLPromise any:@[ promise ]]; + weakExtendedPromise1 = [FBLPromise race:@[ promise ]]; + weakExtendedPromise2 = [FBLPromise race:@[ promise ]]; XCTAssertNotNil(weakExtendedPromise1); XCTAssertNotNil(weakExtendedPromise2); } diff --git a/Tests/PromisesTests/Promise+AnyTests.swift b/Tests/PromisesTests/Promise+RaceTests.swift similarity index 85% rename from Tests/PromisesTests/Promise+AnyTests.swift rename to Tests/PromisesTests/Promise+RaceTests.swift index 17373c2..a3d9360 100644 --- a/Tests/PromisesTests/Promise+AnyTests.swift +++ b/Tests/PromisesTests/Promise+RaceTests.swift @@ -16,8 +16,8 @@ import PromisesTestHelpers import XCTest @testable import Promises -class PromiseAnyTests: XCTestCase { - func testPromiseAny() { +class PromiseRaceTests: XCTestCase { + func testPromiseRace() { // Arrange. let promise1 = Promise { fulfill, _ in Test.delay(0.1) { @@ -41,7 +41,7 @@ class PromiseAnyTests: XCTestCase { } // Act. - let fastestPromise = any([promise1, promise2, promise3, promise4]).then { value in + let fastestPromise = race([promise1, promise2, promise3, promise4]).then { value in XCTAssertEqual(value as? Int, 42) } @@ -51,7 +51,7 @@ class PromiseAnyTests: XCTestCase { XCTAssertNil(fastestPromise.error) } - func testPromiseAnyRejectFirst() { + func testPromiseRaceRejectFirst() { // Arrange. let promise1 = Promise { fulfill, _ in Test.delay(1) { @@ -65,7 +65,7 @@ class PromiseAnyTests: XCTestCase { } // Act. - let fastestPromise = any([promise1, promise2]).then { _ in + let fastestPromise = race([promise1, promise2]).then { _ in XCTFail() }.catch { error in XCTAssertTrue(error == Test.Error.code42) @@ -77,7 +77,7 @@ class PromiseAnyTests: XCTestCase { XCTAssertNil(fastestPromise.value) } - func testPromiseAnyRejectLast() { + func testPromiseRaceRejectLast() { // Arrange. let promise1 = Promise { fulfill, _ in Test.delay(0.1) { @@ -91,7 +91,7 @@ class PromiseAnyTests: XCTestCase { } // Act. - let fastestPromise = any([promise1, promise2]).then { value in + let fastestPromise = race([promise1, promise2]).then { value in XCTAssertEqual(value, 42) } @@ -101,7 +101,7 @@ class PromiseAnyTests: XCTestCase { XCTAssertNil(fastestPromise.error) } - func testPromiseAnyNoDeallocUntilResolved() { + func testPromiseRaceNoDeallocUntilResolved() { // Arrange. let promise = Promise.pending() weak var weakExtendedPromise1: Promise? @@ -111,8 +111,8 @@ class PromiseAnyTests: XCTestCase { autoreleasepool { XCTAssertNil(weakExtendedPromise1) XCTAssertNil(weakExtendedPromise2) - weakExtendedPromise1 = any([promise]) - weakExtendedPromise2 = any([promise]) + weakExtendedPromise1 = race([promise]) + weakExtendedPromise2 = race([promise]) XCTAssertNotNil(weakExtendedPromise1) XCTAssertNotNil(weakExtendedPromise2) } diff --git a/g3doc/index.md b/g3doc/index.md index c10370e..c008649 100644 --- a/g3doc/index.md +++ b/g3doc/index.md @@ -1073,9 +1073,9 @@ Objective-C: }]; ``` -### Any +### Race -`any` class method is similar to `all`, but the promise that it returns fulfills +`race` class method is similar to `all`, but the promise that it returns fulfills or rejects with the same resolution as the first promise that resolves among the given.