Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add and test ToString methods for core classes
Fix DeviceConnected event
  • Loading branch information
wherewhere committed Sep 14, 2025
commit 91f3fea85848440588be24751f4dbfb09fc2fdd0
10 changes: 10 additions & 0 deletions AdvancedSharpAdbClient.Tests/AdbClientTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1169,6 +1169,16 @@ public void CloneTest()
Assert.Equal(endPoint, client.EndPoint);
}

/// <summary>
/// Tests the <see cref="AdbClient.ToString()"/> method.
/// </summary>
[Fact]
public void ToStringTest()
{
AdbClient adbClient = new();
Assert.Equal($"The {typeof(AdbClient)} communicate with adb server at '127.0.0.1:5037'.", adbClient.ToString());
}

private void RunConnectTest(Action test, string connectString)
{
string[] requests = [$"host:connect:{connectString}"];
Expand Down
12 changes: 12 additions & 0 deletions AdvancedSharpAdbClient.Tests/AdbCommandLineClientTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,17 @@ public void StartServerTest()
commandLine.StartServer();
Assert.True(commandLine.ServerStarted);
}

/// <summary>
/// Tests the <see cref="AdbCommandLineClient.ToString()"/> method.
/// </summary>
[Fact]
public void ToStringTest()
{
DummyAdbCommandLineClient commandLine = new();
Assert.Equal($"The {typeof(DummyAdbCommandLineClient)} process with adb command line at '{ServerName}'.", commandLine.ToString());
}

private static string ServerName => OperatingSystem.IsWindows() ? "adb.exe" : "adb";
}
}
12 changes: 10 additions & 2 deletions AdvancedSharpAdbClient.Tests/AdbServerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using System;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using Xunit;

namespace AdvancedSharpAdbClient.Tests
Expand Down Expand Up @@ -262,13 +261,22 @@ public void CloneTest()
Assert.Equal(endPoint, server.EndPoint);
}

/// <summary>
/// Tests the <see cref="AdbServer.ToString()"/> method.
/// </summary>
[Fact]
public void ToStringTest()
{
Assert.Equal($"The {typeof(AdbServer)} communicate with adb at '127.0.0.1:5037'.", adbServer.ToString());
}

/// <summary>
/// Tests the <see cref="AdbServer(EndPoint, Func{EndPoint, IAdbSocket}, Func{string, IAdbCommandLineClient})"/> method.
/// </summary>
[Fact]
public void ConstructorAdbClientNullTest() =>
_ = Assert.Throws<ArgumentNullException>(() => new AdbServer((EndPoint)null, adbSocketFactory, adbCommandLineClientFactory));

private static string ServerName => RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "adb.exe" : "adb";
private static string ServerName => OperatingSystem.IsWindows() ? "adb.exe" : "adb";
}
}
11 changes: 11 additions & 0 deletions AdvancedSharpAdbClient.Tests/AdbSocketTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,17 @@ public void CloneTest()
Assert.Equal(adbSocket.Connected, socket.Connected);
}

/// <summary>
/// Tests the <see cref="AdbSocket.ToString()"/> method.
/// </summary>
[Fact]
public void ToStringTest()
{
using DummyTcpSocket tcpSocket = new();
using AdbSocket adbSocket = new(tcpSocket);
Assert.Equal($"{typeof(AdbSocket)} {{ {nameof(AdbSocket.Socket)} = {tcpSocket} }}", adbSocket.ToString());
}

private static void RunTest(Action<IAdbSocket> test, byte[] expectedDataSent)
{
using DummyTcpSocket tcpSocket = new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public void ConstructorNullTest()
{
_ = Assert.Throws<ArgumentNullException>(() => new PackageManager(null, default));
_ = Assert.Throws<ArgumentNullException>(() => new PackageManager(null, new DeviceData { Serial = "169.254.109.177:5555" }));
_ = Assert.Throws<ArgumentOutOfRangeException>(() => new PackageManager(Substitute.For<IAdbClient>(), default));
_ = Assert.Throws<ArgumentNullException>(() => new PackageManager(Substitute.For<IAdbClient>(), default));
}

[Theory]
Expand Down Expand Up @@ -257,6 +257,14 @@ public void GetPackageVersionInfoTest()
Assert.Equal("11.0.62 (448-160311229)", versionInfo.VersionName);
}

[Fact]
public void ToStringTest()
{
DummyAdbClient client = new();
PackageManager manager = new(client, Device, skipInit: true);
Assert.Equal($"{typeof(PackageManager)} {{ {nameof(PackageManager.Device)} = {Device}, {nameof(PackageManager.AdbClient)} = {client} }}", manager.ToString());
}

private struct InstallProgress(params PackageInstallProgressState[] states) : IProgress<InstallProgressEventArgs>
{
private PackageInstallProgressState? state;
Expand Down
9 changes: 9 additions & 0 deletions AdvancedSharpAdbClient.Tests/DeviceMonitorTests.Async.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ await RunTestAsync(
Assert.Single(sink.ListChangedEvents);
Assert.Single(sink.DisconnectedEvents);
Assert.Equal("169.254.109.177:5555", sink.DisconnectedEvents[0].Device.Serial);
Assert.False(sink.DisconnectedEvents[0].IsConnect);
Assert.Equal("Device disconnected: 169.254.109.177:5555", sink.DisconnectedEvents[0].ToString());
}

[Fact]
Expand Down Expand Up @@ -101,6 +103,8 @@ await RunTestAsync(
Assert.Single(sink.ListChangedEvents);
Assert.Empty(sink.DisconnectedEvents);
Assert.Equal("169.254.109.177:5555", sink.ConnectedEvents[0].Device.Serial);
Assert.True(sink.ConnectedEvents[0].IsConnect);
Assert.Equal("Device connected: 169.254.109.177:5555", sink.ConnectedEvents[0].ToString());
}

/// <summary>
Expand All @@ -126,6 +130,8 @@ await RunTestAsync(
Assert.Equal("169.254.109.177:5555", monitor.Devices[0].Serial);
Assert.Single(sink.ConnectedEvents);
Assert.Equal("169.254.109.177:5555", sink.ConnectedEvents[0].Device.Serial);
Assert.True(sink.ConnectedEvents[0].IsConnect);
Assert.Equal("Device connected: 169.254.109.177:5555", sink.ConnectedEvents[0].ToString());
Assert.Empty(sink.ChangedEvents);
Assert.Single(sink.NotifiedEvents);
Assert.Single(sink.ListChangedEvents);
Expand Down Expand Up @@ -180,6 +186,9 @@ await RunTestAsync(
Assert.Single(sink.ListChangedEvents);
Assert.Empty(sink.DisconnectedEvents);
Assert.Equal("169.254.109.177:5555", sink.ChangedEvents[0].Device.Serial);
Assert.Equal(DeviceState.Offline, sink.ChangedEvents[0].OldState);
Assert.Equal(DeviceState.Online, sink.ChangedEvents[0].NewState);
Assert.Equal("Device state changed: 169.254.109.177:5555 Offline -> Online", sink.ChangedEvents[0].ToString());
}

[Fact]
Expand Down
19 changes: 19 additions & 0 deletions AdvancedSharpAdbClient.Tests/DeviceMonitorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ public void DeviceDisconnectedTest()
Assert.Single(sink.ListChangedEvents);
Assert.Single(sink.DisconnectedEvents);
Assert.Equal("169.254.109.177:5555", sink.DisconnectedEvents[0].Device.Serial);
Assert.False(sink.DisconnectedEvents[0].IsConnect);
Assert.Equal("Device disconnected: 169.254.109.177:5555", sink.DisconnectedEvents[0].ToString());
}

[Fact]
Expand Down Expand Up @@ -131,6 +133,8 @@ public void DeviceConnectedTest()
Assert.Single(sink.ListChangedEvents);
Assert.Empty(sink.DisconnectedEvents);
Assert.Equal("169.254.109.177:5555", sink.ConnectedEvents[0].Device.Serial);
Assert.True(sink.ConnectedEvents[0].IsConnect);
Assert.Equal("Device connected: 169.254.109.177:5555", sink.ConnectedEvents[0].ToString());
}

/// <summary>
Expand All @@ -156,6 +160,8 @@ public void StartInitialDeviceListTest()
Assert.Equal("169.254.109.177:5555", monitor.Devices[0].Serial);
Assert.Single(sink.ConnectedEvents);
Assert.Equal("169.254.109.177:5555", sink.ConnectedEvents[0].Device.Serial);
Assert.True(sink.ConnectedEvents[0].IsConnect);
Assert.Equal("Device connected: 169.254.109.177:5555", sink.ConnectedEvents[0].ToString());
Assert.Empty(sink.ChangedEvents);
Assert.Single(sink.NotifiedEvents);
Assert.Single(sink.ListChangedEvents);
Expand Down Expand Up @@ -210,6 +216,9 @@ public void TriggeredWhenStatusChangedTest()
Assert.Single(sink.ListChangedEvents);
Assert.Empty(sink.DisconnectedEvents);
Assert.Equal("169.254.109.177:5555", sink.ChangedEvents[0].Device.Serial);
Assert.Equal(DeviceState.Offline, sink.ChangedEvents[0].OldState);
Assert.Equal(DeviceState.Online, sink.ChangedEvents[0].NewState);
Assert.Equal("Device state changed: 169.254.109.177:5555 Offline -> Online", sink.ChangedEvents[0].ToString());
}

[Fact]
Expand Down Expand Up @@ -295,5 +304,15 @@ public void CloneTest()
using DeviceMonitor monitor = deviceMonitor.Clone();
Assert.NotEqual(deviceMonitor.Socket, monitor.Socket);
}

/// <summary>
/// Tests the <see cref="DeviceMonitor.ToString()"/> method.
/// </summary>
[Fact]
public void ToStringTest()
{
using DeviceMonitor deviceMonitor = new(Socket);
Assert.Equal($"{typeof(DeviceMonitor)} {{ {nameof(DeviceMonitor.Socket)} = {Socket}, {nameof(DeviceMonitor.IsRunning)} = False }}", deviceMonitor.ToString());
}
}
}
54 changes: 30 additions & 24 deletions AdvancedSharpAdbClient.Tests/Dummys/DummyAdbClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,15 @@ public IAsyncEnumerable<string> ExecuteRemoteEnumerableAsync(string command, Dev

public void ExecuteServerCommand(string target, string command)
{
StringBuilder requestBuilder = new();
DefaultInterpolatedStringHandler requestBuilder = new(1, 2);
if (!string.IsNullOrWhiteSpace(target))
{
_ = requestBuilder.Append(target).Append(':');
requestBuilder.AppendLiteral(target);
requestBuilder.AppendFormatted(':');
}
_ = requestBuilder.Append(command);
requestBuilder.AppendLiteral(command);

string request = requestBuilder.ToString();
string request = requestBuilder.ToStringAndClear();
ReceivedCommands.Add(request);
}

Expand All @@ -56,14 +57,15 @@ public void ExecuteServerCommand(string target, string command, IAdbSocket socke

public void ExecuteServerCommand(string target, string command, IShellOutputReceiver receiver, Encoding encoding)
{
StringBuilder requestBuilder = new();
DefaultInterpolatedStringHandler requestBuilder = new(1, 2);
if (!string.IsNullOrWhiteSpace(target))
{
_ = requestBuilder.Append(target).Append(':');
requestBuilder.AppendLiteral(target);
requestBuilder.AppendFormatted(':');
}
_ = requestBuilder.Append(command);
requestBuilder.AppendLiteral(command);

string request = requestBuilder.ToString();
string request = requestBuilder.ToStringAndClear();
ReceivedCommands.Add(request);

if (Commands.TryGetValue(request, out string value))
Expand Down Expand Up @@ -91,14 +93,15 @@ public void ExecuteServerCommand(string target, string command, IAdbSocket socke

public IEnumerable<string> ExecuteServerEnumerable(string target, string command, Encoding encoding)
{
StringBuilder requestBuilder = new();
DefaultInterpolatedStringHandler requestBuilder = new(1, 2);
if (!string.IsNullOrWhiteSpace(target))
{
_ = requestBuilder.Append(target).Append(':');
requestBuilder.AppendLiteral(target);
requestBuilder.AppendFormatted(':');
}
_ = requestBuilder.Append(command);
requestBuilder.AppendLiteral(command);

string request = requestBuilder.ToString();
string request = requestBuilder.ToStringAndClear();
ReceivedCommands.Add(request);

if (Commands.TryGetValue(request, out string value))
Expand All @@ -122,14 +125,15 @@ public async Task ExecuteServerCommandAsync(string target, string command, Cance
{
await Task.Yield();

StringBuilder requestBuilder = new();
DefaultInterpolatedStringHandler requestBuilder = new(1, 2);
if (!string.IsNullOrWhiteSpace(target))
{
_ = requestBuilder.Append(target).Append(':');
requestBuilder.AppendLiteral(target);
requestBuilder.AppendFormatted(':');
}
_ = requestBuilder.Append(command);
requestBuilder.AppendLiteral(command);

string request = requestBuilder.ToString();
string request = requestBuilder.ToStringAndClear();
ReceivedCommands.Add(request);
}

Expand All @@ -138,14 +142,15 @@ public Task ExecuteServerCommandAsync(string target, string command, IAdbSocket

public async Task ExecuteServerCommandAsync(string target, string command, IShellOutputReceiver receiver, Encoding encoding, CancellationToken cancellationToken = default)
{
StringBuilder requestBuilder = new();
DefaultInterpolatedStringHandler requestBuilder = new(1, 2);
if (!string.IsNullOrWhiteSpace(target))
{
_ = requestBuilder.Append(target).Append(':');
requestBuilder.AppendLiteral(target);
requestBuilder.AppendFormatted(':');
}
_ = requestBuilder.Append(command);
requestBuilder.AppendLiteral(command);

string request = requestBuilder.ToString();
string request = requestBuilder.ToStringAndClear();
ReceivedCommands.Add(request);

if (Commands.TryGetValue(request, out string value))
Expand Down Expand Up @@ -173,14 +178,15 @@ public Task ExecuteServerCommandAsync(string target, string command, IAdbSocket

public async IAsyncEnumerable<string> ExecuteServerEnumerableAsync(string target, string command, Encoding encoding, [EnumeratorCancellation] CancellationToken cancellationToken)
{
StringBuilder requestBuilder = new();
DefaultInterpolatedStringHandler requestBuilder = new(1, 2);
if (!string.IsNullOrWhiteSpace(target))
{
_ = requestBuilder.Append(target).Append(':');
requestBuilder.AppendLiteral(target);
requestBuilder.AppendFormatted(':');
}
_ = requestBuilder.Append(command);
requestBuilder.AppendLiteral(command);

string request = requestBuilder.ToString();
string request = requestBuilder.ToStringAndClear();
ReceivedCommands.Add(request);

if (Commands.TryGetValue(request, out string value))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;

Expand Down Expand Up @@ -53,6 +52,6 @@ protected override async Task<int> RunProcessAsync(string filename, string comma
return RunProcess(filename, command, errorOutput, standardOutput, Timeout.Infinite);
}

private static string ServerName => RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "adb.exe" : "adb";
private static string ServerName => OperatingSystem.IsWindows() ? "adb.exe" : "adb";
}
}
8 changes: 7 additions & 1 deletion AdvancedSharpAdbClient.Tests/Logs/LogTests.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using System;
using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
using Xunit;
Expand Down Expand Up @@ -32,6 +34,7 @@ public void ReadLogTest()
Assert.Equal(Priority.Info, androidLog.Priority);
Assert.Equal("ActivityManager", androidLog.Tag);
Assert.Equal("Start proc com.google.android.gm for broadcast com.google.android.gm/.widget.GmailWidgetProvider: pid=7026 uid=10066 gids={50066, 9997, 3003, 1028, 1015} abi=x86", androidLog.Message);
Assert.Equal($"15-11-15 07:38:20.000 707 707 I ActivityManager: Start proc com.google.android.gm for broadcast com.google.android.gm/.widget.GmailWidgetProvider: pid=7026 uid=10066 gids={{50066, 9997, 3003, 1028, 1015}} abi=x86", androidLog.ToString());

Assert.NotNull(reader.ReadEntry());
Assert.NotNull(reader.ReadEntry());
Expand Down Expand Up @@ -61,6 +64,7 @@ public async Task ReadLogAsyncTest()
Assert.Equal(Priority.Info, androidLog.Priority);
Assert.Equal("ActivityManager", androidLog.Tag);
Assert.Equal("Start proc com.google.android.gm for broadcast com.google.android.gm/.widget.GmailWidgetProvider: pid=7026 uid=10066 gids={50066, 9997, 3003, 1028, 1015} abi=x86", androidLog.Message);
Assert.Equal($"15-11-15 07:38:20.000 707 707 I ActivityManager: Start proc com.google.android.gm for broadcast com.google.android.gm/.widget.GmailWidgetProvider: pid=7026 uid=10066 gids={{50066, 9997, 3003, 1028, 1015}} abi=x86", androidLog.ToString());

Assert.NotNull(await reader.ReadEntryAsync());
Assert.NotNull(await reader.ReadEntryAsync());
Expand Down Expand Up @@ -89,6 +93,7 @@ public void ReadEventLogTest()
Assert.Single(eventLog.Values);
Assert.NotNull(eventLog.Values[0]);
Assert.IsType<List<object>>(eventLog.Values[0]);
Assert.Equal($"15-11-16 09:48:40.000 707 707 0 : System.Collections.Generic.List`1[System.Object]", eventLog.ToString());

List<object> list = (List<object>)eventLog.Values[0];
Assert.Equal(3, list.Count);
Expand Down Expand Up @@ -123,6 +128,7 @@ public async Task ReadEventLogAsyncTest()
Assert.Single(eventLog.Values);
Assert.NotNull(eventLog.Values[0]);
Assert.IsType<List<object>>(eventLog.Values[0]);
Assert.Equal($"15-11-16 09:48:40.000 707 707 0 : System.Collections.Generic.List`1[System.Object]", eventLog.ToString());

List<object> list = (List<object>)eventLog.Values[0];
Assert.Equal(3, list.Count);
Expand Down
11 changes: 6 additions & 5 deletions AdvancedSharpAdbClient.Tests/Models/ForwardDataTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@ public class ForwardDataTests
[Fact]
public void SpecTest()
{
ForwardData data = new()
{
Local = "tcp:1234",
Remote = "tcp:4321"
};
ForwardData data = new(
serialNumber: "emulator-5554",
local: "tcp:1234",
remote: "tcp:4321"
);

Assert.Equal("tcp:1234", data.LocalSpec.ToString());
Assert.Equal("tcp:4321", data.RemoteSpec.ToString());
Assert.Equal("emulator-5554 tcp:1234 tcp:4321", data.ToString());
}
}
}
Loading