xref: /aosp_15_r20/external/cronet/base/win/com_init_util_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2017 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/win/com_init_util.h"
6 
7 #include "base/test/gtest_util.h"
8 #include "base/win/scoped_com_initializer.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 
11 namespace base {
12 namespace win {
13 
TEST(ComInitUtil,AssertNotInitialized)14 TEST(ComInitUtil, AssertNotInitialized) {
15   EXPECT_DCHECK_DEATH(AssertComInitialized());
16 }
17 
TEST(ComInitUtil,AssertUninitialized)18 TEST(ComInitUtil, AssertUninitialized) {
19   // When COM is uninitialized, the TLS data will remain, but the apartment
20   // status will be updated. This covers that case.
21   {
22     ScopedCOMInitializer com_initializer;
23     ASSERT_TRUE(com_initializer.Succeeded());
24   }
25   EXPECT_DCHECK_DEATH(AssertComInitialized());
26 }
27 
TEST(ComInitUtil,AssertSTAInitialized)28 TEST(ComInitUtil, AssertSTAInitialized) {
29   ScopedCOMInitializer com_initializer;
30   ASSERT_TRUE(com_initializer.Succeeded());
31 
32   AssertComInitialized();
33 }
34 
TEST(ComInitUtil,AssertMTAInitialized)35 TEST(ComInitUtil, AssertMTAInitialized) {
36   ScopedCOMInitializer com_initializer(ScopedCOMInitializer::kMTA);
37   ASSERT_TRUE(com_initializer.Succeeded());
38 
39   AssertComInitialized();
40 }
41 
TEST(ComInitUtil,AssertNoneApartmentType)42 TEST(ComInitUtil, AssertNoneApartmentType) {
43   AssertComApartmentType(ComApartmentType::NONE);
44   EXPECT_DCHECK_DEATH(AssertComApartmentType(ComApartmentType::STA));
45   EXPECT_DCHECK_DEATH(AssertComApartmentType(ComApartmentType::MTA));
46 }
47 
TEST(ComInitUtil,AssertNoneApartmentTypeUninitialized)48 TEST(ComInitUtil, AssertNoneApartmentTypeUninitialized) {
49   // When COM is uninitialized, the TLS data will remain, but the apartment
50   // status will be updated. This covers that case.
51   {
52     ScopedCOMInitializer com_initializer;
53     ASSERT_TRUE(com_initializer.Succeeded());
54   }
55   AssertComApartmentType(ComApartmentType::NONE);
56   EXPECT_DCHECK_DEATH(AssertComApartmentType(ComApartmentType::STA));
57   EXPECT_DCHECK_DEATH(AssertComApartmentType(ComApartmentType::MTA));
58 }
59 
TEST(ComInitUtil,AssertSTAApartmentType)60 TEST(ComInitUtil, AssertSTAApartmentType) {
61   ScopedCOMInitializer com_initializer;
62   EXPECT_DCHECK_DEATH(AssertComApartmentType(ComApartmentType::NONE));
63   AssertComApartmentType(ComApartmentType::STA);
64   EXPECT_DCHECK_DEATH(AssertComApartmentType(ComApartmentType::MTA));
65 }
66 
TEST(ComInitUtil,AssertMTAApartmentType)67 TEST(ComInitUtil, AssertMTAApartmentType) {
68   ScopedCOMInitializer com_initializer(ScopedCOMInitializer::kMTA);
69   EXPECT_DCHECK_DEATH(AssertComApartmentType(ComApartmentType::NONE));
70   EXPECT_DCHECK_DEATH(AssertComApartmentType(ComApartmentType::STA));
71   AssertComApartmentType(ComApartmentType::MTA);
72 }
73 
74 }  // namespace win
75 }  // namespace base
76