@@ -1244,6 +1244,118 @@ TEST(QuotaCommon_OrElseWarn, Failure_MappedToError)
1244
1244
EXPECT_FALSE (tryContinued);
1245
1245
}
1246
1246
1247
+ TEST (QuotaCommon_OrElseWarnIf, Success)
1248
+ {
1249
+ bool predicateRun = false ;
1250
+ bool fallbackRun = false ;
1251
+ bool tryContinued = false ;
1252
+
1253
+ const auto res = [&]() -> mozilla::Result<mozilla::Ok, NotOk> {
1254
+ QM_TRY (QM_OR_ELSE_WARN_IF (
1255
+ OkIf (true ),
1256
+ [&predicateRun](const NotOk) {
1257
+ predicateRun = true ;
1258
+ return false ;
1259
+ },
1260
+ ([&fallbackRun](const NotOk) {
1261
+ fallbackRun = true ;
1262
+ return mozilla::Result<mozilla::Ok, NotOk>{mozilla::Ok{}};
1263
+ })));
1264
+
1265
+ tryContinued = true ;
1266
+ return mozilla::Ok{};
1267
+ }();
1268
+
1269
+ EXPECT_TRUE (res.isOk ());
1270
+ EXPECT_FALSE (predicateRun);
1271
+ EXPECT_FALSE (fallbackRun);
1272
+ EXPECT_TRUE (tryContinued);
1273
+ }
1274
+
1275
+ TEST (QuotaCommon_OrElseWarnIf, Failure_PredicateReturnsFalse)
1276
+ {
1277
+ bool predicateRun = false ;
1278
+ bool fallbackRun = false ;
1279
+ bool tryContinued = false ;
1280
+
1281
+ const auto res = [&]() -> mozilla::Result<mozilla::Ok, NotOk> {
1282
+ QM_TRY (QM_OR_ELSE_WARN_IF (
1283
+ OkIf (false ),
1284
+ [&predicateRun](const NotOk) {
1285
+ predicateRun = true ;
1286
+ return false ;
1287
+ },
1288
+ ([&fallbackRun](const NotOk) {
1289
+ fallbackRun = true ;
1290
+ return mozilla::Result<mozilla::Ok, NotOk>{mozilla::Ok{}};
1291
+ })));
1292
+
1293
+ tryContinued = true ;
1294
+ return mozilla::Ok{};
1295
+ }();
1296
+
1297
+ EXPECT_TRUE (res.isErr ());
1298
+ EXPECT_TRUE (predicateRun);
1299
+ EXPECT_FALSE (fallbackRun);
1300
+ EXPECT_FALSE (tryContinued);
1301
+ }
1302
+
1303
+ TEST (QuotaCommon_OrElseWarnIf, Failure_PredicateReturnsTrue_MappedToSuccess)
1304
+ {
1305
+ bool predicateRun = false ;
1306
+ bool fallbackRun = false ;
1307
+ bool tryContinued = false ;
1308
+
1309
+ const auto res = [&]() -> mozilla::Result<mozilla::Ok, NotOk> {
1310
+ QM_TRY (QM_OR_ELSE_WARN_IF (
1311
+ OkIf (false ),
1312
+ [&predicateRun](const NotOk) {
1313
+ predicateRun = true ;
1314
+ return true ;
1315
+ },
1316
+ ([&fallbackRun](const NotOk) {
1317
+ fallbackRun = true ;
1318
+ return mozilla::Result<mozilla::Ok, NotOk>{mozilla::Ok{}};
1319
+ })));
1320
+
1321
+ tryContinued = true ;
1322
+ return mozilla::Ok{};
1323
+ }();
1324
+
1325
+ EXPECT_TRUE (res.isOk ());
1326
+ EXPECT_TRUE (predicateRun);
1327
+ EXPECT_TRUE (fallbackRun);
1328
+ EXPECT_TRUE (tryContinued);
1329
+ }
1330
+
1331
+ TEST (QuotaCommon_OrElseWarnIf, Failure_PredicateReturnsTrue_MappedToError)
1332
+ {
1333
+ bool predicateRun = false ;
1334
+ bool fallbackRun = false ;
1335
+ bool tryContinued = false ;
1336
+
1337
+ const auto res = [&]() -> mozilla::Result<mozilla::Ok, NotOk> {
1338
+ QM_TRY (QM_OR_ELSE_WARN_IF (
1339
+ OkIf (false ),
1340
+ [&predicateRun](const NotOk) {
1341
+ predicateRun = true ;
1342
+ return true ;
1343
+ },
1344
+ ([&fallbackRun](const NotOk) {
1345
+ fallbackRun = true ;
1346
+ return mozilla::Result<mozilla::Ok, NotOk>{mozilla::NotOk{}};
1347
+ })));
1348
+
1349
+ tryContinued = true ;
1350
+ return mozilla::Ok{};
1351
+ }();
1352
+
1353
+ EXPECT_TRUE (res.isErr ());
1354
+ EXPECT_TRUE (predicateRun);
1355
+ EXPECT_TRUE (fallbackRun);
1356
+ EXPECT_FALSE (tryContinued);
1357
+ }
1358
+
1247
1359
TEST (QuotaCommon_OkIf, True)
1248
1360
{
1249
1361
auto res = OkIf (true );
0 commit comments