1+ #include " leetcode/problems/construct-the-minimum-bitwise-array-ii.h"
2+
3+ #include " gtest/gtest.h"
4+
5+ namespace leetcode {
6+ namespace problem_3315 {
7+
8+ class ConstructTheMinimumBitwiseArrayIiTest : public ::testing::TestWithParam<string> {
9+ protected:
10+ void SetUp () override { solution.setStrategy (GetParam ()); }
11+
12+ ConstructTheMinimumBitwiseArrayIiSolution solution;
13+ };
14+
15+ TEST_P (ConstructTheMinimumBitwiseArrayIiTest, Example1) {
16+ vector<int > nums = {2 , 3 , 5 , 7 };
17+ vector<int > expected = {-1 , 1 , 4 , 3 };
18+ vector<int > result = solution.minBitwiseArray (nums);
19+ EXPECT_EQ (expected, result);
20+ }
21+
22+ TEST_P (ConstructTheMinimumBitwiseArrayIiTest, Example2) {
23+ vector<int > nums = {11 , 13 , 31 };
24+ vector<int > expected = {9 , 12 , 15 };
25+ vector<int > result = solution.minBitwiseArray (nums);
26+ EXPECT_EQ (expected, result);
27+ }
28+
29+ TEST_P (ConstructTheMinimumBitwiseArrayIiTest, AdditionalTest1) {
30+ vector<int > nums = {2 };
31+ vector<int > expected = {-1 };
32+ vector<int > result = solution.minBitwiseArray (nums);
33+ EXPECT_EQ (expected, result);
34+ }
35+
36+ TEST_P (ConstructTheMinimumBitwiseArrayIiTest, AdditionalTest2) {
37+ vector<int > nums = {3 };
38+ vector<int > expected = {1 };
39+ vector<int > result = solution.minBitwiseArray (nums);
40+ EXPECT_EQ (expected, result);
41+ }
42+
43+ TEST_P (ConstructTheMinimumBitwiseArrayIiTest, AdditionalTest3) {
44+ vector<int > nums = {5 };
45+ vector<int > expected = {4 };
46+ vector<int > result = solution.minBitwiseArray (nums);
47+ EXPECT_EQ (expected, result);
48+ }
49+
50+ TEST_P (ConstructTheMinimumBitwiseArrayIiTest, AdditionalTest4) {
51+ vector<int > nums = {7 };
52+ vector<int > expected = {3 };
53+ vector<int > result = solution.minBitwiseArray (nums);
54+ EXPECT_EQ (expected, result);
55+ }
56+
57+ TEST_P (ConstructTheMinimumBitwiseArrayIiTest, AdditionalTest5) {
58+ vector<int > nums = {131 }; // 10000011 binary
59+ // 后缀连续1的个数:最低位1,次低位1,第三位0 -> suffix_ones = 2
60+ // ans = 131 - (1 << 1) = 131 - 2 = 129
61+ // 验证:129 (10000001) OR 130 (10000010) = 131 (10000011)
62+ vector<int > expected = {129 };
63+ vector<int > result = solution.minBitwiseArray (nums);
64+ EXPECT_EQ (expected, result);
65+ }
66+
67+ TEST_P (ConstructTheMinimumBitwiseArrayIiTest, AdditionalTest6) {
68+ vector<int > nums = {257 }; // 100000001 binary
69+ // 后缀连续1的个数:最低位1,次低位0 -> suffix_ones = 1
70+ // ans = 257 - 1 = 256
71+ // 验证:256 (100000000) OR 257 (100000001) = 257
72+ vector<int > expected = {256 };
73+ vector<int > result = solution.minBitwiseArray (nums);
74+ EXPECT_EQ (expected, result);
75+ }
76+
77+ TEST_P (ConstructTheMinimumBitwiseArrayIiTest, AdditionalTest7) {
78+ vector<int > nums = {1023 }; // 1111111111 (10 bits)
79+ // 后缀连续1的个数 = 10
80+ // ans = 1023 - (1 << 9) = 1023 - 512 = 511
81+ // 验证:511 (0111111111) OR 512 (1000000000) = 1023 (1111111111)
82+ vector<int > expected = {511 };
83+ vector<int > result = solution.minBitwiseArray (nums);
84+ EXPECT_EQ (expected, result);
85+ }
86+
87+ INSTANTIATE_TEST_SUITE_P (
88+ LeetCode, ConstructTheMinimumBitwiseArrayIiTest,
89+ ::testing::ValuesIn (ConstructTheMinimumBitwiseArrayIiSolution().getStrategyNames()));
90+
91+ } // namespace problem_3315
92+ } // namespace leetcode
0 commit comments