1
+ #include < gtest/gtest.h>
2
+
3
+ #include < utility>
4
+ #include < vector>
5
+
6
+ #include " solution.hpp"
7
+
8
+ typedef std::vector<int > ll;
9
+ typedef ll::size_type ll_size_type;
10
+
11
+ class KthLargestTest :public ::testing::TestWithParam<std::tuple<int , ll, ll, ll>> {
12
+ };
13
+
14
+ TEST_P (KthLargestTest, CheckSolution) {
15
+ auto param = GetParam ();
16
+ int k = std::get<0 >(param);
17
+ const ll initial = std::get<1 >(param);
18
+ const ll additional = std::get<2 >(param);
19
+ const ll expected = std::get<3 >(param);
20
+
21
+ KthLargest solution (k, initial);
22
+
23
+ int result = 0 ;
24
+ EXPECT_EQ (additional.size (), expected.size ());
25
+
26
+ for (ll_size_type i = 0 ; i < additional.size (); ++i) {
27
+ EXPECT_EQ (expected[i], solution.add (additional[i]));
28
+ }
29
+ }
30
+
31
+ INSTANTIATE_TEST_SUITE_P (
32
+ KthLargestTests,
33
+ KthLargestTest,
34
+ ::testing::Values (
35
+ std::tuple<int , ll, ll, ll>(1 , { 1 , 2 , 3 }, { 1 , 2 , 3 }, { 3 , 3 , 3 }),
36
+ std::tuple<int, ll, ll, ll>(1 , { 2 }, { 3 , 1 }, { 3 , 3 }),
37
+ std::tuple<int, ll, ll, ll>(2 , { 2 , 2 , 2 , 2 }, { 2 , 3 , 2 }, { 2 , 2 , 2 }),
38
+ std::tuple<int, ll, ll, ll>(3 , { 4 , 5 , 8 , 2 }, { 3 , 5 , 10 , 9 , 4 }, { 4 , 5 , 5 , 8 , 8 })
39
+ )
40
+ );
0 commit comments