@@ -21,18 +21,19 @@ using namespace lldb;
21
21
using namespace lldb_private ;
22
22
23
23
class ProgressReportTest : public ::testing::Test {
24
- SubsystemRAII<FileSystem, HostInfo, PlatformMacOSX> subsystems;
25
-
26
- // The debugger's initialization function can't be called with no arguments
27
- // so calling it using SubsystemRAII will cause the test build to fail as
28
- // SubsystemRAII will call Initialize with no arguments. As such we set it up
29
- // here the usual way.
30
- void SetUp () override { Debugger::Initialize (nullptr ); }
31
- void TearDown () override { Debugger::Terminate (); }
24
+ SubsystemRAII<FileSystem, HostInfo, PlatformMacOSX> subsystems;
25
+
26
+ // The debugger's initialization function can't be called with no arguments
27
+ // so calling it using SubsystemRAII will cause the test build to fail as
28
+ // SubsystemRAII will call Initialize with no arguments. As such we set it up
29
+ // here the usual way.
30
+ void SetUp () override { Debugger::Initialize (nullptr ); }
31
+ void TearDown () override { Debugger::Terminate (); }
32
32
};
33
33
34
34
TEST_F (ProgressReportTest, TestReportCreation) {
35
35
std::chrono::milliseconds timeout (100 );
36
+ const unsigned long long NO_TOTAL = 1 ;
36
37
37
38
// Set up the debugger, make sure that was done properly
38
39
ArchSpec arch (" x86_64-apple-macosx-" );
@@ -51,7 +52,7 @@ TEST_F(ProgressReportTest, TestReportCreation) {
51
52
listener_sp->StartListeningForEvents (&broadcaster,
52
53
Debugger::eBroadcastBitProgress);
53
54
EXPECT_TRUE (
54
- broadcaster.EventTypeHasListeners (Debugger::eBroadcastBitProgress));
55
+ broadcaster.EventTypeHasListeners (Debugger::eBroadcastBitProgress));
55
56
56
57
EventSP event_sp;
57
58
const ProgressEventData *data;
@@ -61,24 +62,39 @@ TEST_F(ProgressReportTest, TestReportCreation) {
61
62
// started are broadcasted
62
63
{
63
64
Progress progress1 (" Progress report 1" , " Starting report 1" );
64
- EXPECT_TRUE (listener_sp->GetEvent (event_sp, timeout));
65
+ Progress progress2 (" Progress report 2" , " Starting report 2" );
66
+ Progress progress3 (" Progress report 3" , " Starting report 3" );
67
+ }
65
68
66
- data = ProgressEventData::GetEventDataFromEvent (event_sp.get ());
67
- ASSERT_EQ (data->GetDetails (), " Starting report 1" );
69
+ // Start popping events from the queue, they should have been recevied
70
+ // in this order:
71
+ // Starting progress: 1, 2, 3
72
+ // Ending progress: 3, 2, 1
73
+ EXPECT_TRUE (listener_sp->GetEvent (event_sp, timeout));
74
+ data = ProgressEventData::GetEventDataFromEvent (event_sp.get ());
68
75
69
- Progress progress2 (" Progress report 2" , " Starting report 2" );
70
- EXPECT_TRUE (listener_sp->GetEvent (event_sp, timeout));
76
+ ASSERT_EQ (data->GetDetails (), " Starting report 1" );
77
+ ASSERT_FALSE (data->IsFinite ());
78
+ ASSERT_FALSE (data->GetCompleted ());
79
+ ASSERT_EQ (data->GetTotal (), NO_TOTAL);
80
+ ASSERT_EQ (data->GetMessage (), " Progress report 1: Starting report 1" );
71
81
72
- data = ProgressEventData::GetEventDataFromEvent (event_sp. get ( ));
73
- ASSERT_EQ (data-> GetDetails (), " Starting report 2 " );
82
+ EXPECT_TRUE (listener_sp-> GetEvent (event_sp, timeout ));
83
+ data = ProgressEventData::GetEventDataFromEvent (event_sp. get () );
74
84
75
- Progress progress3 (" Progress report 3" , " Starting report 3" );
76
- EXPECT_TRUE (listener_sp->GetEvent (event_sp, timeout));
77
- ASSERT_TRUE (event_sp);
85
+ ASSERT_EQ (data->GetDetails (), " Starting report 2" );
86
+ ASSERT_FALSE (data->IsFinite ());
87
+ ASSERT_FALSE (data->GetCompleted ());
88
+ ASSERT_EQ (data->GetTotal (), NO_TOTAL);
89
+ ASSERT_EQ (data->GetMessage (), " Progress report 2: Starting report 2" );
78
90
79
- data = ProgressEventData::GetEventDataFromEvent (event_sp.get ());
80
- ASSERT_EQ (data->GetDetails (), " Starting report 3" );
81
- }
91
+ EXPECT_TRUE (listener_sp->GetEvent (event_sp, timeout));
92
+ data = ProgressEventData::GetEventDataFromEvent (event_sp.get ());
93
+ ASSERT_EQ (data->GetDetails (), " Starting report 3" );
94
+ ASSERT_FALSE (data->IsFinite ());
95
+ ASSERT_FALSE (data->GetCompleted ());
96
+ ASSERT_EQ (data->GetTotal (), NO_TOTAL);
97
+ ASSERT_EQ (data->GetMessage (), " Progress report 3: Starting report 3" );
82
98
83
99
// Progress report objects should be destroyed at this point so
84
100
// get each report from the queue and check that they've been
@@ -88,16 +104,22 @@ TEST_F(ProgressReportTest, TestReportCreation) {
88
104
89
105
ASSERT_EQ (data->GetTitle (), " Progress report 3" );
90
106
ASSERT_TRUE (data->GetCompleted ());
107
+ ASSERT_FALSE (data->IsFinite ());
108
+ ASSERT_EQ (data->GetMessage (), " Progress report 3: Starting report 3" );
91
109
92
110
EXPECT_TRUE (listener_sp->GetEvent (event_sp, timeout));
93
111
data = ProgressEventData::GetEventDataFromEvent (event_sp.get ());
94
112
95
113
ASSERT_EQ (data->GetTitle (), " Progress report 2" );
96
114
ASSERT_TRUE (data->GetCompleted ());
115
+ ASSERT_FALSE (data->IsFinite ());
116
+ ASSERT_EQ (data->GetMessage (), " Progress report 2: Starting report 2" );
97
117
98
118
EXPECT_TRUE (listener_sp->GetEvent (event_sp, timeout));
99
119
data = ProgressEventData::GetEventDataFromEvent (event_sp.get ());
100
120
101
121
ASSERT_EQ (data->GetTitle (), " Progress report 1" );
102
122
ASSERT_TRUE (data->GetCompleted ());
123
+ ASSERT_FALSE (data->IsFinite ());
124
+ ASSERT_EQ (data->GetMessage (), " Progress report 1: Starting report 1" );
103
125
}
0 commit comments