Bug 1363676. P2 - add a gtest to ensure we don't break ResolveOrRejectValue during refactoring.
MozReview-Commit-ID: A1ftwJMYgGw
--- a/dom/media/gtest/TestMozPromise.cpp
+++ b/dom/media/gtest/TestMozPromise.cpp
@@ -286,9 +286,32 @@ TEST(MozPromise, Chaining)
}
}
// We will hit the assertion if we don't disconnect the leaf Request
// in the promise chain.
p->Then(queue, __func__, [] () {}, [] () {})->Track(holder);
});
}
+TEST(MozPromise, ResolveOrRejectValue)
+{
+ using MyPromise = MozPromise<UniquePtr<int>, bool, false>;
+ using RRValue = MyPromise::ResolveOrRejectValue;
+
+ RRValue val;
+ EXPECT_TRUE(val.IsNothing());
+ EXPECT_FALSE(val.IsResolve());
+ EXPECT_FALSE(val.IsReject());
+
+ val.SetResolve(MakeUnique<int>(87));
+ EXPECT_FALSE(val.IsNothing());
+ EXPECT_TRUE(val.IsResolve());
+ EXPECT_FALSE(val.IsReject());
+ EXPECT_EQ(87, *val.ResolveValue());
+
+ // IsResolve() should remain true after Move().
+ UniquePtr<int> i = Move(val.ResolveValue());
+ EXPECT_EQ(87, *i);
+ EXPECT_TRUE(val.IsResolve());
+ EXPECT_EQ(val.ResolveValue().get(), nullptr);
+}
+
#undef DO_FAIL