Added 3 acceptance test TODOs.
Working on TODO: it can use a telemetry client to send a diagnostic message and receive a diagnostic info. Wrote an assertion for the test of this TODO.
Made the characterization test running and got the actual result.
Extracted the DIAGNOSTIC_INFO into a static final field of class TelemetryClient and made the characterization test to pass.
Wrote the intention code in the test to inject an instance of the class TestingTelemetryClient, which is the subclass of the class TelemetryClient, into TelemetryDiagnosticControls.
Created class TestingTelemetryClient which is the subclass of TelemetryClient.
Created and implemented constructor TelemetryDiagnosticControls(TelemetryClient) and made the default constructor use it.
Overrode the method connect() in the subclass of TelemetryClient to make it always set the field onlineStatus to be true.
Finished TODO: it can use a telemetry client to send a diagnostic message and receive a diagnostic info.
Working on TODO: Combining the two connection management methods with the two data communication methods violates the Single Responsibility Principle. Created class TelemetryClientConnection and TelemetryDataChannel.
Wrote the intention code in the constructor of class TelemetryClient to extract 2 responsibilities of it into class TelemetryClientConnection and TelemetryDataChannel.
Created 2 fields for accommodating the 2 responsibilities.
Moved method getOnlineStatus() from class TelemetryClient to TelemetryClientConnection.
Moved method disconnect() from class TelemetryClient to TelemetryClientConnection.
Renamed class TestingTelemetryClient to be TestingTelemetryClientConnection for being the subclass of TelemetryClientConnection later.
Moved method connect() from class TelemetryClient to TelemetryClientConnection.
Moved field onlineStatus from class TelemetryClient to TelemetryClientConnection.
Moved field connectionEventsSimulator from class TelemetryClient to TelemetryClientConnection.
Removed unused parameter TelemetryClient from method TelemetryClientConnection.connect().
Wrote the intention code in the test to inject both TelemetryClient and TestingTelemetryClientConnection into TelemetryDiagnosticControls.