Skip to content

Commit 4ab11a6

Browse files
Merge pull request #3 from SweetPumpkinPie/lab-3
Lab 3
2 parents 37d003f + 93d144e commit 4ab11a6

5 files changed

Lines changed: 96 additions & 11 deletions

File tree

.github/workflows/sonarcloud.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ jobs:
7070
run: dotnet restore NetSdrClient.sln
7171
- name: Build
7272
run: dotnet build NetSdrClient.sln -c Release --no-restore
73-
#- name: Tests with coverage (OpenCover)
74-
# run: |
75-
# dotnet test NetSdrClientAppTests/NetSdrClientAppTests.csproj -c Release --no-build `
76-
# /p:CollectCoverage=true `
77-
# /p:CoverletOutput=TestResults/coverage.xml `
78-
# /p:CoverletOutputFormat=opencover
79-
# shell: pwsh
73+
- name: Tests with coverage (OpenCover)
74+
run: |
75+
dotnet test NetSdrClientAppTests/NetSdrClientAppTests.csproj -c Release --no-build `
76+
/p:CollectCoverage=true `
77+
/p:CoverletOutput=TestResults/coverage.xml `
78+
/p:CoverletOutputFormat=opencover
79+
shell: pwsh
8080
# 3) END: SonarScanner
8181
- name: SonarScanner End
8282
run: dotnet sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}"

NetSdrClientApp/Messages/NetSdrMessageHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public static bool TranslateMessage(byte[] msg, out MsgTypes type, out ControlIt
8383
msgEnumarable = msgEnumarable.Skip(_msgControlItemLength);
8484
msgLength -= _msgControlItemLength;
8585

86-
if (Enum.IsDefined(typeof(ControlItemCodes), value))
86+
if (Enum.IsDefined(typeof(ControlItemCodes), (int)value))
8787
{
8888
itemCode = (ControlItemCodes)value;
8989
}

NetSdrClientAppTests/NetSdrClientAppTests.csproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111

1212
<ItemGroup>
1313
<PackageReference Include="coverlet.collector" Version="6.0.0" />
14-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
14+
<PackageReference Include="coverlet.msbuild" Version="8.0.1">
15+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
16+
<PrivateAssets>all</PrivateAssets>
17+
</PackageReference>
18+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
1519
<PackageReference Include="Moq" Version="4.20.72" />
1620
<PackageReference Include="NUnit" Version="3.14.0" />
1721
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />

NetSdrClientAppTests/NetSdrClientTests.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,5 +115,20 @@ public async Task StopIQTest()
115115
Assert.That(_client.IQStarted, Is.False);
116116
}
117117

118-
//TODO: cover the rest of the NetSdrClient code here
118+
[Test]
119+
public async Task ChangeFrequencyAsyncTest()
120+
{
121+
// Arrange
122+
await ConnectAsyncTest();
123+
long testFrequency = 100000000; // 100 MHz
124+
int testChannel = 1;
125+
126+
// Act
127+
await _client.ChangeFrequencyAsync(testFrequency, testChannel);
128+
129+
// Assert
130+
// Ensure the client has sent at least one message via TCP after calling the method
131+
// Expect 4 calls: 3 were in ConnectAsync + 1 (new frequency change request)
132+
_tcpMock.Verify(tcp => tcp.SendMessageAsync(It.IsAny<byte[]>()), Times.Exactly(4));
133+
}
119134
}

NetSdrClientAppTests/NetSdrMessageHelperTests.cs

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,72 @@ public void GetDataItemMessageTest()
6464
Assert.That(parametersBytes.Count(), Is.EqualTo(parametersLength));
6565
}
6666

67-
//TODO: add more NetSdrMessageHelper tests
67+
[Test]
68+
public void GetSamples_WithValid16BitData_ReturnsCorrectIntegers()
69+
{
70+
// Arrange
71+
ushort sampleSize = 16;
72+
byte[] body = new byte[] { 0x01, 0x00, 0x00, 0x01 };
73+
74+
// Act
75+
var result = NetSdrMessageHelper.GetSamples(sampleSize, body).ToList();
76+
77+
// Assert
78+
Assert.That(result, Has.Count.EqualTo(2));
79+
Assert.That(result[0], Is.EqualTo(1));
80+
Assert.That(result[1], Is.EqualTo(256));
81+
}
82+
83+
[Test]
84+
public void GetSamples_WithInvalidSampleSize_ThrowsException()
85+
{
86+
// Arrange
87+
ushort invalidSampleSize = 64; // > 4B (32 b)
88+
byte[] body = new byte[] { 0x01, 0x02 };
89+
90+
// Act & Assert
91+
Assert.Throws<ArgumentOutOfRangeException>(() =>
92+
NetSdrMessageHelper.GetSamples(invalidSampleSize, body).ToList());
93+
}
94+
95+
[Test]
96+
public void TranslateMessage_WithValidData_ReturnsTrueAndCorrectBody()
97+
{
98+
// Arrange
99+
var type = NetSdrMessageHelper.MsgTypes.Ack;
100+
var code = NetSdrMessageHelper.ControlItemCodes.RFFilter;
101+
byte[] dummyParams = new byte[] { 0x01, 0x02 };
102+
byte[] rawMessage = NetSdrMessageHelper.GetControlItemMessage(type, code, dummyParams);
103+
104+
// Act
105+
bool success = NetSdrMessageHelper.TranslateMessage(
106+
rawMessage, out var outType, out var outCode, out var seqNum, out var outBody);
107+
108+
// Assert
109+
Assert.That(success, Is.True);
110+
Assert.That(outType, Is.EqualTo(type));
111+
Assert.That(outCode, Is.EqualTo(code));
112+
Assert.That(outBody, Is.EquivalentTo(dummyParams));
113+
}
114+
115+
[Test]
116+
public void TranslateMessage_WithInvalidControlItemCode_ReturnsFalse()
117+
{
118+
// Arrange
119+
var type = NetSdrMessageHelper.MsgTypes.Ack;
120+
var validCode = NetSdrMessageHelper.ControlItemCodes.ReceiverState;
121+
byte[] rawMessage = NetSdrMessageHelper.GetControlItemMessage(type, validCode, Array.Empty<byte>());
122+
123+
rawMessage[2] = 0xFF;
124+
rawMessage[3] = 0xFF;
125+
126+
// Act
127+
bool success = NetSdrMessageHelper.TranslateMessage(
128+
rawMessage, out var outType, out var outCode, out var seqNum, out var outBody);
129+
130+
// Assert
131+
Assert.That(success, Is.False);
132+
Assert.That(outCode, Is.EqualTo(NetSdrMessageHelper.ControlItemCodes.None));
133+
}
68134
}
69135
}

0 commit comments

Comments
 (0)