Ditched xUnit and put in MSTest for automated testing instead.
Some checks failed
🚀 Pack skyscraper8 / make-zip (push) Failing after 7s

This commit is contained in:
feyris-tan 2025-11-19 17:46:17 +01:00
parent 36969eede2
commit c0f644df1a
25 changed files with 566 additions and 849 deletions

View File

@ -0,0 +1,5 @@
{
"allure": {
"directory": "allure-results"
}
}

View File

@ -1,13 +0,0 @@
using Allure.Commons;
using Allure.Xunit.Attributes.Steps;
namespace skyscraper8.Tests;
public class AllureLog
{
[AllureStep("{0}")]
public static void Log(string msg)
{
}
}

View File

@ -1 +0,0 @@
[assembly: CollectionBehavior(DisableTestParallelization = true)]

View File

@ -1,40 +0,0 @@
using skyscraper5.Docsis;
using skyscraper5.Docsis.MacManagement;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
namespace skyscraper8.Tests.ClassDependencies.DocsisTests
{
internal class DocsisEventHandlerImpl : IDocsisEventHandler
{
public void OnCmtsTimestamp(PhysicalAddress source, uint timing)
{
throw new NotImplementedException();
}
public void OnDownstreamChannel(PhysicalAddress physicalAddress, MacDomainDescriptor.DownstreamActiveChannel downstreamActiveChannel)
{
throw new NotImplementedException();
}
public void OnLearnedIpFromMac(PhysicalAddress arpHeaderSenderHardwareAddress, IPAddress arpHeaderSenderProtocolAddress)
{
throw new NotImplementedException();
}
public void OnParticipantDetected(PhysicalAddress pa)
{
throw new NotImplementedException();
}
public void OnUpstreamChannel(UpstreamChannelDescriptor mmm)
{
throw new NotImplementedException();
}
}
}

View File

@ -1,118 +0,0 @@
using skyscraper5;
using skyscraper5.Docsis;
using skyscraper5.Docsis.AnnexC;
using skyscraper5.Docsis.MacManagement;
using skyscraper5.Mpeg2;
using skyscraper5.Skyscraper.Plugins;
using skyscraper5.Skyscraper.Scraper;
using skyscraper5.Skyscraper.Scraper.Storage;
using skyscraper5.Skyscraper.Scraper.Storage.Filesystem;
using skyscraper5.Skyscraper.Scraper.Storage.InMemory;
using skyscraper8.Skyscraper.IO;
using skyscraper8.Tests.ClassDependencies.DocsisTests;
using skyscraper8.Tests.Properties;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
using Xunit.Sdk;
namespace skyscraper8.Tests
{
public class DocsisTests
{
[Fact]
public void ModemCapabilitiesEncoding()
{
byte[] buffer = Resources.ModemCapabilitiesEncodingTest;
ModemCapabilitiesEncoding modemCapabilitiesEncoding = new ModemCapabilitiesEncoding(buffer);
Assert.True(modemCapabilitiesEncoding.Valid);
}
[Fact]
public void MultipartRegistrationResponse()
{
Random rng = new Random();
byte[] sourceBuffer = new byte[6];
rng.NextBytes(sourceBuffer);
PhysicalAddress source = new PhysicalAddress(sourceBuffer);
byte[] targetBuffer = new byte[6];
rng.NextBytes(targetBuffer);
PhysicalAddress target = new PhysicalAddress(targetBuffer);
byte[] buffer = Properties.Resources.MultipartRegistrationResponseTest;
T45_V4_MultipartRegistrationResponse test = new T45_V4_MultipartRegistrationResponse(source, target, buffer);
Assert.True(test.Valid);
}
[Fact]
public void MacManagement_4_45()
{
DocsisEventHandlerImpl docsisEventHandler = new DocsisEventHandlerImpl();
DocsisEnvironment environment = new DocsisEnvironment(docsisEventHandler);
byte[] testPayload = Resources.PushMacManagementMessage_Version4_Type45;
Random rng = new Random();
byte[] sourceBuffer = new byte[6];
rng.NextBytes(sourceBuffer);
PhysicalAddress source = new PhysicalAddress(sourceBuffer);
byte[] targetBuffer = new byte[6];
rng.NextBytes(targetBuffer);
PhysicalAddress target = new PhysicalAddress(targetBuffer);
environment.PushMacManagementMessage(testPayload, 4, 45, source, target, testPayload);
}
[Fact]
public void InvalidUpstreamChannelDescriptorTest()
{
byte[] testPayload = Resources.UpstreamChannelDescriptorTest;
Random rng = new Random();
byte[] sourceBuffer = new byte[6];
rng.NextBytes(sourceBuffer);
PhysicalAddress source = new PhysicalAddress(sourceBuffer);
byte[] targetBuffer = new byte[6];
rng.NextBytes(targetBuffer);
PhysicalAddress target = new PhysicalAddress(targetBuffer);
UpstreamChannelDescriptor ucd = new UpstreamChannelDescriptor(source, target, testPayload);
Assert.False(ucd.Valid);
}
[Fact]
public void TransmitChannelConfigurationObjectTest()
{
byte[] testPayload = Resources.TransmitChannelConfigurationObject;
CommonTlvEncodingObject.TransmitChannelConfigurationObject child = new CommonTlvEncodingObject.TransmitChannelConfigurationObject(testPayload);
Assert.True(child.Valid);
}
[Fact]
public void MultipartRegistrationResponse2()
{
Random rng = new Random();
byte[] sourceBuffer = new byte[6];
rng.NextBytes(sourceBuffer);
PhysicalAddress source = new PhysicalAddress(sourceBuffer);
byte[] targetBuffer = new byte[6];
rng.NextBytes(targetBuffer);
PhysicalAddress target = new PhysicalAddress(targetBuffer);
byte[] buffer = Properties.Resources.MultipartRegistrationResponseTest2;
T45_V4_MultipartRegistrationResponse test = new T45_V4_MultipartRegistrationResponse(source, target, buffer);
Assert.True(test.Valid);
}
}
}

View File

@ -0,0 +1,122 @@
using System.Runtime.InteropServices;
using Allure.Net.Commons;
using TestResult = Allure.Net.Commons.TestResult;
namespace skyscraper8.Tests;
[TestClass]
public class Feyllure
{
public TestContext TestContext { get; set; }
protected static readonly AllureLifecycle Allure = AllureLifecycle.Instance;
private bool assemblyWasInited;
private void AssemblyInit(TestContext context)
{
// Ensure allure-results exists
var resultsDir = Allure.ResultsDirectory;
Directory.CreateDirectory(resultsDir);
var envFile = Path.Combine(resultsDir, "environment.properties");
using (var writer = new StreamWriter(envFile))
{
writer.WriteLine($"SkyscraperRelease={VersionInfo.GetPublicReleaseNumber()}");
writer.WriteLine($"SkyscraperCodeVersion={VersionInfo.GetCurrentAssemblyDisplayVersion()}");
writer.WriteLine($"OS={RuntimeInformation.OSDescription}");
writer.WriteLine($".NET={Environment.Version}");
writer.WriteLine($"Machine={Environment.MachineName}");
writer.WriteLine($"User={Environment.UserName}");
writer.WriteLine($"Framework={context.Properties["TargetFramework"] ?? "net8.0"}");
writer.WriteLine($"BuildDate={DateTime.UtcNow:yyyy-MM-dd HH:mm:ss}");
}
var executorFile = Path.Combine(resultsDir, "executor.json");
var executorInfo = new
{
name = Environment.MachineName,
buildName = "My build name",
buildUrl = "http://127.0.0.2",
};
var executorJson = Newtonsoft.Json.JsonConvert.SerializeObject(executorInfo);
File.WriteAllText(executorFile, executorJson);
}
[TestInitialize]
public void Setup()
{
if (!assemblyWasInited){
AssemblyInit(TestContext);
assemblyWasInited = true;
}
var testName = TestContext.TestName;
var fqClass = TestContext.FullyQualifiedTestClassName;
// Extract namespace and class name
var lastDot = fqClass.LastIndexOf('.');
var ns = lastDot > 0 ? fqClass.Substring(0, lastDot) : "";
var cls = lastDot > 0 ? fqClass.Substring(lastDot + 1) : fqClass;
TestResult testResult = new TestResult();
testResult.uuid = Guid.NewGuid().ToString();
testResult.name = testName;
testResult.fullName = String.Format("{0}.{1}", TestContext.FullyQualifiedTestClassName, testName);
testResult.labels = new List<Label>()
{
//Packages Tab
new Label { name = "package", value = ns},
new Label { name = "testClass", value = cls},
new Label { name = "testMethod", value = testName},
//Suites tab
new Label { name = "parentSuite", value = ns},
new Label { name = "suite", value = cls},
};
Allure.StartTestCase(testResult);
descriptionWriter = null;
}
[TestCleanup]
public void TearDown()
{
switch (TestContext.CurrentTestOutcome)
{
case UnitTestOutcome.Passed:
Allure.UpdateTestCase(tc => tc.status = Status.passed);
break;
case UnitTestOutcome.Failed:
Allure.UpdateTestCase(tc => tc.status = Status.failed);
break;
default:
StepResult stepResult = new StepResult();
stepResult.name = String.Format("Current Test Outcome: {0}", TestContext.CurrentTestOutcome);;
Allure.UpdateTestCase(tc =>
{
tc.status = Status.skipped;
tc.steps.Add(stepResult);
});
break;
}
if (descriptionWriter != null)
{
Allure.UpdateTestCase(tc => { tc.description = descriptionWriter.ToString(); });
}
Allure.StopTestCase();
Allure.WriteTestCase();
}
private StringWriter descriptionWriter;
public void Print(string message, params object[] args)
{
if (descriptionWriter == null)
descriptionWriter = new StringWriter();
string formattedMessage = String.Format(message, args);
Console.WriteLine(formattedMessage);
descriptionWriter.WriteLine(formattedMessage);
}
}

View File

@ -1,31 +0,0 @@
using System.Reflection;
using skyscraper5.Mpeg2;
using skyscraper8.Tests.Properties;
namespace skyscraper8.Tests;
public class GsType1SanityTest
{
[Fact]
public void CheckBfbsCrc()
{
byte[] blob = Resources.Frame00001343_TSGS1_MIS000_SYNC001;
MemoryStream ms = new MemoryStream(blob, false);
bool result = DvbCrc32.ValidateCrc(ms, 0, (int)ms.Length);
Assert.True(result);
blob = Resources.Frame00000008_TSGS1_MIS000_SYNC001;
ms = new MemoryStream(blob, false);
result = DvbCrc32.ValidateCrc(ms, 0, (int)ms.Length);
Assert.True(result);
}
[Fact]
public void CheckBfbsCrcSpan()
{
byte[] blob = Resources.Frame00000012_TSGS1_MIS000_SYNC001;
ReadOnlySpan<byte> span = new ReadOnlySpan<byte>(blob);
bool result = DvbCrc32.ValidateCrc(span);
Assert.True(result);
}
}

View File

@ -1,160 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ModemCapabilitiesEncodingTest" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ModemCapabilitiesEncodingTest.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="MultipartRegistrationResponseTest" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\T45_V4_MultipartRegistrationResponseTest.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="PushMacManagementMessage_Version4_Type45" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PushMacManagementMessage_Version4_Type45.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="ranging_response_test" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ranging_response_test.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="MultipartRegistrationResponseTest2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\T45_V4_MultipartRegistrationResponseTest2.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="test-1packet-01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\test-1packet-01.ts;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="test-2packets-02-03" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\test-2packets-02-03.ts;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="test-3packets-04-05-06" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\test-3packets-04-05-06.ts;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TransmitChannelConfigurationObject" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TransmitChannelConfigurationObject.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="UpstreamChannelDescriptorTest" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpstreamChannelDescriptorTest.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="Frame00001343_TSGS1_MIS000_SYNC001" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Frame00001343_TSGS1_MIS000_SYNC001.bbf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="Frame00000008_TSGS1_MIS000_SYNC001" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Frame00000008_TSGS1_MIS000_SYNC001.bbf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="Frame00000012_TSGS1_MIS000_SYNC001" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Frame00000012_TSGS1_MIS000_SYNC001.bbf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -1,43 +1,22 @@
using skyscraper5;
using skyscraper5.Docsis;
using skyscraper5.Docsis;
using skyscraper5.Docsis.AnnexC;
using skyscraper5.Docsis.MacManagement;
using skyscraper5.Mpeg2;
using skyscraper5.Skyscraper.Plugins;
using skyscraper5.Skyscraper.Scraper;
using skyscraper5.Skyscraper.Scraper.Storage;
using skyscraper5.Skyscraper.Scraper.Storage.Filesystem;
using skyscraper5.Skyscraper.Scraper.Storage.InMemory;
using skyscraper8.Skyscraper.IO;
using skyscraper8.Tests.ClassDependencies.DocsisTests;
using skyscraper8.Tests.Properties;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
using Allure.Xunit.Attributes;
using Xunit.Sdk;
namespace skyscraper8.Tests.ResourceTests
{
public class DocsisTests
[TestClass]
public class DocsisTests : Feyllure
{
[Fact]
[AllureSuite("Resources")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void ModemCapabilitiesEncoding()
{
byte[] buffer = Resources.ModemCapabilitiesEncodingTest;
byte[] buffer = Resources1.ModemCapabilitiesEncodingTest;
ModemCapabilitiesEncoding modemCapabilitiesEncoding = new ModemCapabilitiesEncoding(buffer);
Assert.True(modemCapabilitiesEncoding.Valid);
Assert.IsTrue(modemCapabilitiesEncoding.Valid);
}
[Fact]
[AllureSuite("Resources")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void MultipartRegistrationResponse()
{
Random rng = new Random();
@ -50,20 +29,18 @@ namespace skyscraper8.Tests.ResourceTests
rng.NextBytes(targetBuffer);
PhysicalAddress target = new PhysicalAddress(targetBuffer);
byte[] buffer = Properties.Resources.MultipartRegistrationResponseTest;
byte[] buffer = Resources1.MultipartRegistrationResponseTest;
T45_V4_MultipartRegistrationResponse test = new T45_V4_MultipartRegistrationResponse(source, target, buffer);
Assert.True(test.Valid);
Assert.IsTrue(test.Valid);
}
[Fact]
[AllureSuite("Resources")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void MacManagement_4_45()
{
DocsisEventHandlerImpl docsisEventHandler = new DocsisEventHandlerImpl();
NullDocsisEventHandler docsisEventHandler = new NullDocsisEventHandler();
DocsisEnvironment environment = new DocsisEnvironment(docsisEventHandler);
byte[] testPayload = Resources.PushMacManagementMessage_Version4_Type45;
byte[] testPayload = Resources1.PushMacManagementMessage_Version4_Type45;
Random rng = new Random();
byte[] sourceBuffer = new byte[6];
@ -77,12 +54,10 @@ namespace skyscraper8.Tests.ResourceTests
environment.PushMacManagementMessage(testPayload, 4, 45, source, target, testPayload);
}
[Fact]
[AllureSuite("Resources")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void InvalidUpstreamChannelDescriptorTest()
{
byte[] testPayload = Resources.UpstreamChannelDescriptorTest;
byte[] testPayload = Resources1.UpstreamChannelDescriptorTest;
Random rng = new Random();
byte[] sourceBuffer = new byte[6];
@ -94,23 +69,19 @@ namespace skyscraper8.Tests.ResourceTests
PhysicalAddress target = new PhysicalAddress(targetBuffer);
UpstreamChannelDescriptor ucd = new UpstreamChannelDescriptor(source, target, testPayload);
Assert.False(ucd.Valid);
Assert.IsFalse(ucd.Valid);
}
[Fact]
[AllureSuite("Resources")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void TransmitChannelConfigurationObjectTest()
{
byte[] testPayload = Resources.TransmitChannelConfigurationObject;
byte[] testPayload = Resources1.TransmitChannelConfigurationObject;
CommonTlvEncodingObject.TransmitChannelConfigurationObject child = new CommonTlvEncodingObject.TransmitChannelConfigurationObject(testPayload);
Assert.True(child.Valid);
Assert.IsTrue(child.Valid);
}
[Fact]
[AllureSuite("Resources")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void MultipartRegistrationResponse2()
{
Random rng = new Random();
@ -123,18 +94,15 @@ namespace skyscraper8.Tests.ResourceTests
rng.NextBytes(targetBuffer);
PhysicalAddress target = new PhysicalAddress(targetBuffer);
byte[] buffer = Properties.Resources.MultipartRegistrationResponseTest2;
byte[] buffer = Resources1.MultipartRegistrationResponseTest2;
T45_V4_MultipartRegistrationResponse test = new T45_V4_MultipartRegistrationResponse(source, target, buffer);
Assert.True(test.Valid);
Assert.IsTrue(test.Valid);
}
[Fact]
[AllureSuite("Resources")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void OffsetBreakerTest()
{
byte[] blob = Resources.ranging_response_test;
byte[] blob = Resources1.ranging_response_test;
Random rng = new Random();
byte[] sourceMacBuffer = new byte[6];
@ -146,7 +114,7 @@ namespace skyscraper8.Tests.ResourceTests
PhysicalAddress targetAddress = new PhysicalAddress(targetMacBuffer);
RangingResponse rangingResponse = new RangingResponse(sourceAddress, targetAddress, blob);
Assert.True(rangingResponse.Valid);
Assert.IsTrue(rangingResponse.Valid);
}
}
}

View File

@ -1,36 +1,30 @@
using System.Reflection;
using Allure.Xunit.Attributes;
using skyscraper5.Mpeg2;
using skyscraper8.Tests.Properties;
namespace skyscraper8.Tests.ResourceTests;
public class GsType1SanityTest
[TestClass]
public class GsType1SanityTest : Feyllure
{
[Fact]
[AllureSuite("Resources")]
[AllureFeature("MPEG2")]
[TestMethod]
public void CheckBfbsCrc()
{
byte[] blob = Resources.Frame00001343_TSGS1_MIS000_SYNC001;
byte[] blob = Resources1.Frame00001343_TSGS1_MIS000_SYNC001;
MemoryStream ms = new MemoryStream(blob, false);
bool result = DvbCrc32.ValidateCrc(ms, 0, (int)ms.Length);
Assert.True(result);
Assert.IsTrue(result);
blob = Resources.Frame00000008_TSGS1_MIS000_SYNC001;
blob = Resources1.Frame00000008_TSGS1_MIS000_SYNC001;
ms = new MemoryStream(blob, false);
result = DvbCrc32.ValidateCrc(ms, 0, (int)ms.Length);
Assert.True(result);
Assert.IsTrue(result);
}
[Fact]
[AllureSuite("Resources")]
[AllureFeature("MPEG2")]
[TestMethod]
public void CheckBfbsCrcSpan()
{
byte[] blob = Resources.Frame00000012_TSGS1_MIS000_SYNC001;
byte[] blob = Resources1.Frame00000012_TSGS1_MIS000_SYNC001;
ReadOnlySpan<byte> span = new ReadOnlySpan<byte>(blob);
bool result = DvbCrc32.ValidateCrc(span);
Assert.True(result);
Assert.IsTrue(result);
}
}

View File

@ -1,25 +1,22 @@
using skyscraper5.Mpeg2;
using skyscraper5.Skyscraper.Scraper;
using skyscraper5.Skyscraper.Scraper.Storage.InMemory;
using skyscraper8.Tests.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Allure.Xunit.Attributes;
using skyscraper8.Skyscraper.Scraper.Storage;
namespace skyscraper8.Tests.ResourceTests
{
public class SkyscraperTests
[TestClass]
public class SkyscraperTests : Feyllure
{
[Fact]
[AllureSuite("Resources")]
[AllureFeature("Skyscraper")]
[TestMethod]
public void RunTestPatterns()
{
byte[][] buffers = new byte[][] { Resources.test_1packet_01, Resources.test_2packets_02_03, Resources.test_3packets_04_05_06 };
byte[][] buffers = new byte[][]
{
Resources1.test_1packet_01,
Resources1.test_2packets_02_03,
Resources1.test_3packets_04_05_06
};
InMemoryScraperStorageFactory imssf = new InMemoryScraperStorageFactory();

View File

@ -1,4 +1,4 @@
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
@ -7,28 +7,28 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace skyscraper8.Tests.Properties {
namespace skyscraper8.Tests {
using System;
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
internal class Resources1 {
private static System.Resources.ResourceManager resourceMan;
private static System.Globalization.CultureInfo resourceCulture;
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
internal Resources1() {
}
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static System.Resources.ResourceManager ResourceManager {
get {
if (object.Equals(null, resourceMan)) {
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("skyscraper8.Tests.Properties.Resources", typeof(Resources).Assembly);
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("skyscraper8.Tests.Resources1", typeof(Resources1).Assembly);
resourceMan = temp;
}
return resourceMan;

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ModemCapabilitiesEncodingTest" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\ModemCapabilitiesEncodingTest.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="MultipartRegistrationResponseTest" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\T45_V4_MultipartRegistrationResponseTest.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="PushMacManagementMessage_Version4_Type45" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\PushMacManagementMessage_Version4_Type45.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="ranging_response_test" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\ranging_response_test.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="MultipartRegistrationResponseTest2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\T45_V4_MultipartRegistrationResponseTest2.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="test-1packet-01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\test-1packet-01.ts;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="test-2packets-02-03" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\test-2packets-02-03.ts;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="test-3packets-04-05-06" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\test-3packets-04-05-06.ts;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="TransmitChannelConfigurationObject" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\TransmitChannelConfigurationObject.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="UpstreamChannelDescriptorTest" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\UpstreamChannelDescriptorTest.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="Frame00001343_TSGS1_MIS000_SYNC001" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\Frame00001343_TSGS1_MIS000_SYNC001.bbf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="Frame00000008_TSGS1_MIS000_SYNC001" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\Frame00000008_TSGS1_MIS000_SYNC001.bbf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="Frame00000012_TSGS1_MIS000_SYNC001" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\Frame00000012_TSGS1_MIS000_SYNC001.bbf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -1,61 +1,51 @@
using Allure.Commons;
using Allure.Xunit.Attributes;
using System.Net.NetworkInformation;
using skyscraper5.Docsis;
using skyscraper5.Docsis.AnnexC;
namespace skyscraper8.Tests.RootTests;
public class DocsisTests
[TestClass]
public class DocsisTests : Feyllure
{
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
void MacManagementMessageTypeAttributeTest()
[TestMethod]
public void MacManagementMessageTypeAttributeTest()
{
MacManagementMessageTypeAttribute mmmta = new MacManagementMessageTypeAttribute(1, 2);
Console.WriteLine(mmmta.ToString());
Print(mmmta.ToString());
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
void RcpIdEncodingTest()
[TestMethod]
public void RcpIdEncodingTest()
{
RcpIdEncoding rie = new RcpIdEncoding(new byte[] { 7, 1, 0 });
SimplifiedReceiveChannelAssignmentEncoding simplifiedReceiveChannelAssignmentEncoding = rie.SimplifiedReceiveChannelConfiguration;
Assert.NotNull(simplifiedReceiveChannelAssignmentEncoding);
Assert.Throws<NotImplementedException>(() => new RcpIdEncoding(new byte[] { 255, 1, 0 }));
Assert.IsNotNull(simplifiedReceiveChannelAssignmentEncoding);
Assert.ThrowsException<NotImplementedException>(() => new RcpIdEncoding(new byte[] { 255, 1, 0 }));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
void EthernetLlcPacketClassificationEncodingTest()
[TestMethod]
public void EthernetLlcPacketClassificationEncodingTest()
{
EthernetLlcPacketClassificationEncoding epce = new EthernetLlcPacketClassificationEncoding(new byte[] { 3, 3, 1, 0, 1 });
ushort epceEProt = epce.EProt;
Assert.Equal(1, epce.EProt);
Assert.Equal(1, epce.Type);
Assert.Throws<NotImplementedException>(() => new EthernetLlcPacketClassificationEncoding(new byte[] { 255, 1, 0 }));
Assert.AreEqual(1, epce.EProt);
Assert.AreEqual(1, epce.Type);
Assert.ThrowsException<NotImplementedException>(() => new EthernetLlcPacketClassificationEncoding(new byte[] { 255, 1, 0 }));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
void SimplifiedReceiveChannelAssignmentEncodingTest()
[TestMethod]
public void SimplifiedReceiveChannelAssignmentEncodingTest()
{
SimplifiedReceiveChannelAssignmentEncoding srcae =
new SimplifiedReceiveChannelAssignmentEncoding(new byte[] { 1, 1, 0, 2, 1, 0, 3, 1, 0 });
Assert.Equal(0,srcae.DownstreamChannelAssignment[0]);
Assert.Equal(0, srcae.DownstreamProfileAssignment[0]);
Assert.Equal(0, srcae.PrimaryDownstreamChannelAssignment[0]);
Assert.Throws<NotImplementedException>(() => new SimplifiedReceiveChannelAssignmentEncoding(new byte[] { 254,0,1 }));
Assert.AreEqual(0,srcae.DownstreamChannelAssignment[0]);
Assert.AreEqual(0, srcae.DownstreamProfileAssignment[0]);
Assert.AreEqual(0, srcae.PrimaryDownstreamChannelAssignment[0]);
Assert.ThrowsException<NotImplementedException>(() => new SimplifiedReceiveChannelAssignmentEncoding(new byte[] { 254,0,1 }));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
void TransmitChannelConfigurationObjectTest()
[TestMethod]
public void TransmitChannelConfigurationObjectTest()
{
CommonTlvEncodingObject.TransmitChannelConfigurationObject tcco =
new CommonTlvEncodingObject.TransmitChannelConfigurationObject(
@ -71,24 +61,22 @@ public class DocsisTests
10, 1, 0,
11, 1, 0
});
Assert.Equal(0, tcco.TccReferenceId.Value);
Assert.Equal(CommonTlvEncodingObject.TransmitChannelConfigurationObject.UpstreamChannelActionEnum.NoAction, tcco.UpstreamChannelAction.Value);
Assert.Equal(0, tcco.UpstreamChannelId.Value);
Assert.NotNull(tcco.UpstreamChannelDescriptor);
Assert.Equal(0, tcco.RangingSid.Value);
Assert.Equal(InitalizationTechniqueEnum.BroadcastInitialRanging, tcco.InitializationTechnique.Value);
Assert.Equal(0, tcco.DynamicRangeWindow);
Assert.Equal(0, tcco.P16Hi);
Assert.Equal(0, tcco.ListOfIucs[0]);
Assert.AreEqual(0, tcco.TccReferenceId.Value);
Assert.AreEqual(CommonTlvEncodingObject.TransmitChannelConfigurationObject.UpstreamChannelActionEnum.NoAction, tcco.UpstreamChannelAction.Value);
Assert.AreEqual(0, tcco.UpstreamChannelId.Value);
Assert.IsNotNull(tcco.UpstreamChannelDescriptor);
Assert.AreEqual(0, tcco.RangingSid.Value);
Assert.AreEqual(InitalizationTechniqueEnum.BroadcastInitialRanging, tcco.InitializationTechnique.Value);
Assert.AreEqual(0, tcco.DynamicRangeWindow);
Assert.AreEqual(0, tcco.P16Hi);
Assert.AreEqual(0, tcco.ListOfIucs[0]);
Assert.Throws<NotImplementedException>(() =>
Assert.ThrowsException<NotImplementedException>(() =>
new CommonTlvEncodingObject.TransmitChannelConfigurationObject(new byte[] { 254, 1, 0 }));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
void CommonTlvEncodingObjectTest()
[TestMethod]
public void CommonTlvEncodingObjectTest()
{
MemoryStream ms = new MemoryStream(new byte[]
{
@ -101,22 +89,20 @@ public class DocsisTests
52, 2, 0, 1
});
CommonTlvEncodingObject commonTlv = new CommonTlvEncodingObject(ms);
Assert.NotNull(commonTlv.ModemCapabilitiesEncoding);
Assert.NotNull(commonTlv.ServiceFlowSidClusterAssignment);
Assert.NotNull(commonTlv.RcpId);
Assert.Equal(0, commonTlv.KeySequenceNumber);
Assert.Equal(0, commonTlv.HmacDigest[0]);
Assert.NotNull(commonTlv.AuthorizationHint);
Assert.Equal(new TimeSpan(0, 0, 1), commonTlv.InitializingChannelTimeout);
Assert.IsNotNull(commonTlv.ModemCapabilitiesEncoding);
Assert.IsNotNull(commonTlv.ServiceFlowSidClusterAssignment);
Assert.IsNotNull(commonTlv.RcpId);
Assert.AreEqual(0, commonTlv.KeySequenceNumber);
Assert.AreEqual(0, commonTlv.HmacDigest[0]);
Assert.IsNotNull(commonTlv.AuthorizationHint);
Assert.AreEqual(new TimeSpan(0, 0, 1), commonTlv.InitializingChannelTimeout);
ms = new MemoryStream(new byte[] { 254, 1, 0 });
Assert.Throws<NotImplementedException>(() => new CommonTlvEncodingObject(ms));
Assert.ThrowsException<NotImplementedException>(() => new CommonTlvEncodingObject(ms));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
void GeneralPacketClassifierEncodingTest()
[TestMethod]
public void GeneralPacketClassifierEncodingTest()
{
GeneralPacketClassifierEncoding gpce = new GeneralPacketClassifierEncoding(new byte[]
{
@ -135,31 +121,29 @@ public class DocsisTests
4, 4, 127, 0, 0, 1,
6, 4, 127, 0, 0, 1
});
Assert.True(gpce.ClassifierActivationState.Value);
Assert.Equal(0, gpce.RulePriority.Value);
Assert.NotNull(gpce.Ipv4PacketClassification);
Assert.Equal(1, gpce.ServiceFlowReference.Value);
Assert.Equal(0, gpce.ClassifierReference.Value);
Assert.Equal(1, gpce.ClassifierIdentifier.Value);
Assert.Equal((uint)1, gpce.ServiceFlowIdentifier.Value);
Assert.Equal(GeneralPacketClassifierEncoding.DynamicServiceChangeActionEnum.Add, gpce.DynamicServiceChangeAction.Value);
Assert.NotNull(gpce.EthernetLlcPacketClassificationEncodings);
Assert.IsTrue(gpce.ClassifierActivationState.Value);
Assert.AreEqual(0, gpce.RulePriority.Value);
Assert.IsNotNull(gpce.Ipv4PacketClassification);
Assert.AreEqual(1, gpce.ServiceFlowReference.Value);
Assert.AreEqual(0, gpce.ClassifierReference.Value);
Assert.AreEqual(1, gpce.ClassifierIdentifier.Value);
Assert.AreEqual((uint)1, gpce.ServiceFlowIdentifier.Value);
Assert.AreEqual(GeneralPacketClassifierEncoding.DynamicServiceChangeActionEnum.Add, gpce.DynamicServiceChangeAction.Value);
Assert.IsNotNull(gpce.EthernetLlcPacketClassificationEncodings);
Assert.Throws<NotImplementedException>(() => new GeneralPacketClassifierEncoding(new byte[]
Assert.ThrowsException<NotImplementedException>(() => new GeneralPacketClassifierEncoding(new byte[]
{
12, 4,
255, 1, 0, 0
}));
Assert.Throws<NotImplementedException>(() => new GeneralPacketClassifierEncoding(new byte[]
Assert.ThrowsException<NotImplementedException>(() => new GeneralPacketClassifierEncoding(new byte[]
{
254, 1, 0
}));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void Ipv4PacketClassificationEncodingTest()
{
GeneralPacketClassifierEncoding.Ipv4PacketClassificationEncodings ipce =
@ -175,26 +159,24 @@ public class DocsisTests
7, 2, 0, 1,
8, 2, 0, 1
});
Assert.NotNull(ipce.Ipv4SourceAddress);
Assert.NotNull(ipce.Ipv4DestinationAddress);
Assert.Equal(1, ipce.IpProtocol.Value);
Assert.NotNull(ipce.Ipv4SourceMask);
Assert.NotNull(ipce.Ipv4DestinationMask);
Assert.Equal(1, ipce.DestinationPortStart.Value);
Assert.Equal(1, ipce.DestinationPortEnd.Value);
Assert.Equal(1, ipce.SourcePortStart.Value);
Assert.Equal(1, ipce.SourcePortEnd.Value);
Assert.IsNotNull(ipce.Ipv4SourceAddress);
Assert.IsNotNull(ipce.Ipv4DestinationAddress);
Assert.AreEqual(1, ipce.IpProtocol.Value);
Assert.IsNotNull(ipce.Ipv4SourceMask);
Assert.IsNotNull(ipce.Ipv4DestinationMask);
Assert.AreEqual(1, ipce.DestinationPortStart.Value);
Assert.AreEqual(1, ipce.DestinationPortEnd.Value);
Assert.AreEqual(1, ipce.SourcePortStart.Value);
Assert.AreEqual(1, ipce.SourcePortEnd.Value);
Assert.Throws<NotImplementedException>(() =>
Assert.ThrowsException<NotImplementedException>(() =>
new GeneralPacketClassifierEncoding.Ipv4PacketClassificationEncodings(new byte[]
{
255, 1, 0
}));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void ServiceFlowSidClusterAssignmentObjectTest()
{
ServiceFlowSidClusterAssignmentObject sfscao = new ServiceFlowSidClusterAssignmentObject(new byte[]
@ -203,19 +185,17 @@ public class DocsisTests
2, 1, 0,
3, 1, 0,
});
Assert.Equal(1u, sfscao.SFID.Value);
Assert.NotNull(sfscao.SidClusterEncoding);
Assert.NotNull(sfscao.SidClusterSwitchoverCriteria);
Assert.AreEqual(1u, sfscao.SFID.Value);
Assert.IsNotNull(sfscao.SidClusterEncoding);
Assert.IsNotNull(sfscao.SidClusterSwitchoverCriteria);
Assert.Throws<NotImplementedException>(() => new ServiceFlowSidClusterAssignmentObject(new byte[]
Assert.ThrowsException<NotImplementedException>(() => new ServiceFlowSidClusterAssignmentObject(new byte[]
{
255, 1, 0
}));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void SidClusterEncodingObjectTest()
{
ServiceFlowSidClusterAssignmentObject.SidClusterEncodingObject sceo =
@ -224,18 +204,16 @@ public class DocsisTests
1, 1, 1,
2, 1, 0
});
Assert.Equal(1, sceo.SidClusterId.Value);
Assert.NotNull(sceo.SidToChannelMapping);
Assert.AreEqual(1, sceo.SidClusterId.Value);
Assert.IsNotNull(sceo.SidToChannelMapping);
Assert.Throws<NotImplementedException>(() => new ServiceFlowSidClusterAssignmentObject.SidClusterEncodingObject(new byte[]
Assert.ThrowsException<NotImplementedException>(() => new ServiceFlowSidClusterAssignmentObject.SidClusterEncodingObject(new byte[]
{
255, 1, 0
}));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void SidToChannelMappingObjectTest()
{
ServiceFlowSidClusterAssignmentObject.SidClusterEncodingObject.SidToChannelMappingObject stcmo =
@ -245,20 +223,18 @@ public class DocsisTests
2,2,0,1,
3,1,1
});
Assert.Equal(1, stcmo.UpstreamChannelId.Value);
Assert.Equal(1, stcmo.SID.Value);
Assert.Equal(ServiceFlowSidClusterAssignmentObject.SidClusterEncodingObject.SidToChannelMappingObject.ActionEnum.Add,stcmo.Action.Value);
Assert.AreEqual(1, stcmo.UpstreamChannelId.Value);
Assert.AreEqual(1, stcmo.SID.Value);
Assert.AreEqual(ServiceFlowSidClusterAssignmentObject.SidClusterEncodingObject.SidToChannelMappingObject.ActionEnum.Add,stcmo.Action.Value);
Assert.Throws<NotImplementedException>(() =>
Assert.ThrowsException<NotImplementedException>(() =>
new ServiceFlowSidClusterAssignmentObject.SidClusterEncodingObject.SidToChannelMappingObject(new byte[]
{
255, 1, 0
}));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void Ipv6PacketClassificationEncodingTest()
{
byte[] buffer = new byte[]
@ -272,15 +248,13 @@ public class DocsisTests
};
GeneralPacketClassifierEncoding gpce = new GeneralPacketClassifierEncoding(buffer);
Ipv6PacketClassificationEncoding ipce = gpce.Ipv6PacketClassification;
Assert.NotNull(ipce);
Assert.NotNull(ipce.Ipv6DestinationAddress);
Assert.NotNull(ipce.Ipv6SourceAddress);
Assert.Equal(0x0800, ipce.NextHeaderType);
Assert.IsNotNull(ipce);
Assert.IsNotNull(ipce.Ipv6DestinationAddress);
Assert.IsNotNull(ipce.Ipv6SourceAddress);
Assert.AreEqual(0x0800, ipce.NextHeaderType);
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void SidClusterSwitchoverCriteriaObjectTest()
{
byte[] buffer = new byte[]
@ -292,19 +266,17 @@ public class DocsisTests
};
ServiceFlowSidClusterAssignmentObject.SidClusterSwitchoverCriteriaObject scsco =
new ServiceFlowSidClusterAssignmentObject.SidClusterSwitchoverCriteriaObject(buffer);
Assert.Equal((byte)1,scsco.MaximumRequestPerSidCluster);
Assert.Equal((uint)1, scsco.MaximumOutstandingBytesPerSidCluster);
Assert.Equal((uint)1, scsco.MaximumTotalBytesRequestedPerSidCluster);
Assert.Equal((ushort)1, scsco.MaximumTimeInTheSidCluster);
Assert.AreEqual((byte)1,scsco.MaximumRequestPerSidCluster);
Assert.AreEqual((uint)1, scsco.MaximumOutstandingBytesPerSidCluster);
Assert.AreEqual((uint)1, scsco.MaximumTotalBytesRequestedPerSidCluster);
Assert.AreEqual((ushort)1, scsco.MaximumTimeInTheSidCluster);
buffer = new byte[] { 254, 1, 0 };
Assert.Throws<NotImplementedException>(() =>
Assert.ThrowsException<NotImplementedException>(() =>
new ServiceFlowSidClusterAssignmentObject.SidClusterSwitchoverCriteriaObject(buffer));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void ModemCapabilitiesEncodingTest()
{
byte[] buffer = new byte[]
@ -365,62 +337,62 @@ public class DocsisTests
};
ModemCapabilitiesEncoding mcs = new ModemCapabilitiesEncoding(buffer);
Assert.True(mcs.ConcatenationSupport);
Assert.Equal(new Version(1, 0), mcs.DocsisVersion);
Assert.True(mcs.FragmentationSupport);
Assert.True(mcs.PayloadHeaderSuppressionSupport);
Assert.Equal(ModemCapabilitiesEncoding.PrivacySupportValue.BpiPlusSupport,mcs.PrivacySupport.Value);
Assert.Equal(1, mcs.DownstreamSaidSupport.Value);
Assert.Equal(1, mcs.UpstreamServiceFlowSupport.Value);
Assert.Equal(1, mcs.TransmitPreEqualizerTapsPerModulationInterval.Value);
Assert.Equal(1, mcs.NumberOfTransmitEqualizerTaps.Value);
Assert.True(mcs.DccSupport);
Assert.NotNull(mcs.RangingHoldOffSupport);
Assert.True(mcs.L2VPN);
Assert.NotNull(mcs.ESafeHostCapability);
Assert.True(mcs.DownstreamUnencryptedTrafficFiltering);
Assert.Equal(ModemCapabilitiesEncoding.UpstreamFrequencyRangeSupportEnum.Extended, mcs.UpstreamFrequencyRangeSupport);
Assert.True(mcs._160kspsSymbolRateSupport);
Assert.True(mcs._320kspsSymbolRateSupport);
Assert.True(mcs._640kspsSymbolRateSupport);
Assert.True(mcs._1280kspsSymbolRateSupport);
Assert.True(mcs._2560kspsSymbolRateSupport);
Assert.True(mcs._5120kspsSymbolRateSupport);
Assert.True(mcs.SelectableActiveCodeMode2Support);
Assert.True(mcs.CodeHoppingMode2Support);
Assert.Equal(2,mcs.ScQamMultipleTransmitChannelSupport.Value);
Assert.Equal(2, mcs.TotalSidClusterSupport.Value);
Assert.Equal(2, mcs.SidClustersPerServiceFlowSupport.Value);
Assert.Equal(2, mcs.ScQamMultipleReceiveChannelSupport.Value);
Assert.Equal(3, mcs.TotalDsidSupport.Value);
Assert.Equal(3, mcs.ResequencingDsidSupport.Value);
Assert.Equal(3, mcs.MulticastDsidSupport.Value);
Assert.Equal(ModemCapabilitiesEncoding.MulticastDsidForwardingEnum.SupportPromiscious, mcs.MulticastDsidForwarding.Value);
Assert.True(mcs.FrameControlTypeForwardingCapability);
Assert.True(mcs.DpvPerPathSuppported);
Assert.True(mcs.DpvPerPacketSuppported);
Assert.Equal(3, mcs.UnsolicitedGrantServiceFlowSupport.Value);
Assert.True(mcs.MapAndUcdReceiptSupport);
Assert.Equal(3, mcs.UpstreamDropClassifierSupport);
Assert.True(mcs.Ipv6Support.Value);
Assert.Equal(4, mcs.ExtendedUpstreamTransmitPowerCapability.Value);
Assert.True(mcs.CmStatusAck);
Assert.True(mcs.EnergyManagement1x1Feature);
Assert.True(mcs.DocsisLightSleepMode);
Assert.Equal(4, mcs.ExtendedPacketLengthSupportCapability);
Assert.Equal(4, mcs.OfdmMultipleReceiveChannelSupport.Value);
Assert.Equal(5, mcs.OfdmaMultipleTransmitChannelSupport.Value);
Assert.Equal(5, mcs.DownstreamOfdmProfileSupport.Value);
Assert.NotNull(mcs.DownstreamOfdmChannelSubcarrierQamModulationSupport);
Assert.NotNull(mcs.UpstreamOfdmaChannelSubcarrierQamModulationSupport);
Assert.Equal(108, mcs.DownstreamFrequencyRangeStarting);
Assert.Equal(1218, mcs.DownstreamFrequencyRangeUpTo);
Assert.Equal(42, mcs.UpstreamFrequencyRangeUpTo);
Assert.Equal(ModemCapabilitiesEncoding.DtpMode.MasterOrSlave, mcs.DocsisTimeProtocolMode.Value);
Assert.Equal(ModemCapabilitiesEncoding.DtpPerformanceSupport.Level5, mcs.DocsisTimeProtocolPerformanceSupport.Value);
Assert.Equal(5, mcs.Pmax);
Assert.True(mcs.DownstreamFullDuplex);
Assert.Equal(7, mcs.LowLatencySupport.Value);
Assert.IsTrue(mcs.ConcatenationSupport);
Assert.AreEqual(new Version(1, 0), mcs.DocsisVersion);
Assert.IsTrue(mcs.FragmentationSupport);
Assert.IsTrue(mcs.PayloadHeaderSuppressionSupport);
Assert.AreEqual(ModemCapabilitiesEncoding.PrivacySupportValue.BpiPlusSupport,mcs.PrivacySupport.Value);
Assert.AreEqual(1, mcs.DownstreamSaidSupport.Value);
Assert.AreEqual(1, mcs.UpstreamServiceFlowSupport.Value);
Assert.AreEqual(1, mcs.TransmitPreEqualizerTapsPerModulationInterval.Value);
Assert.AreEqual(1, mcs.NumberOfTransmitEqualizerTaps.Value);
Assert.IsTrue(mcs.DccSupport);
Assert.IsNotNull(mcs.RangingHoldOffSupport);
Assert.IsTrue(mcs.L2VPN);
Assert.IsNotNull(mcs.ESafeHostCapability);
Assert.IsTrue(mcs.DownstreamUnencryptedTrafficFiltering);
Assert.AreEqual(ModemCapabilitiesEncoding.UpstreamFrequencyRangeSupportEnum.Extended, mcs.UpstreamFrequencyRangeSupport);
Assert.IsTrue(mcs._160kspsSymbolRateSupport);
Assert.IsTrue(mcs._320kspsSymbolRateSupport);
Assert.IsTrue(mcs._640kspsSymbolRateSupport);
Assert.IsTrue(mcs._1280kspsSymbolRateSupport);
Assert.IsTrue(mcs._2560kspsSymbolRateSupport);
Assert.IsTrue(mcs._5120kspsSymbolRateSupport);
Assert.IsTrue(mcs.SelectableActiveCodeMode2Support);
Assert.IsTrue(mcs.CodeHoppingMode2Support);
Assert.AreEqual(2,mcs.ScQamMultipleTransmitChannelSupport.Value);
Assert.AreEqual(2, mcs.TotalSidClusterSupport.Value);
Assert.AreEqual(2, mcs.SidClustersPerServiceFlowSupport.Value);
Assert.AreEqual(2, mcs.ScQamMultipleReceiveChannelSupport.Value);
Assert.AreEqual(3, mcs.TotalDsidSupport.Value);
Assert.AreEqual(3, mcs.ResequencingDsidSupport.Value);
Assert.AreEqual(3, mcs.MulticastDsidSupport.Value);
Assert.AreEqual(ModemCapabilitiesEncoding.MulticastDsidForwardingEnum.SupportPromiscious, mcs.MulticastDsidForwarding.Value);
Assert.IsTrue(mcs.FrameControlTypeForwardingCapability);
Assert.IsTrue(mcs.DpvPerPathSuppported);
Assert.IsTrue(mcs.DpvPerPacketSuppported);
Assert.AreEqual(3, mcs.UnsolicitedGrantServiceFlowSupport.Value);
Assert.IsTrue(mcs.MapAndUcdReceiptSupport);
Assert.AreEqual(3, mcs.UpstreamDropClassifierSupport);
Assert.IsTrue(mcs.Ipv6Support.Value);
Assert.AreEqual(4, mcs.ExtendedUpstreamTransmitPowerCapability.Value);
Assert.IsTrue(mcs.CmStatusAck);
Assert.IsTrue(mcs.EnergyManagement1x1Feature);
Assert.IsTrue(mcs.DocsisLightSleepMode);
Assert.AreEqual(4, mcs.ExtendedPacketLengthSupportCapability);
Assert.AreEqual(4, mcs.OfdmMultipleReceiveChannelSupport.Value);
Assert.AreEqual(5, mcs.OfdmaMultipleTransmitChannelSupport.Value);
Assert.AreEqual(5, mcs.DownstreamOfdmProfileSupport.Value);
Assert.IsNotNull(mcs.DownstreamOfdmChannelSubcarrierQamModulationSupport);
Assert.IsNotNull(mcs.UpstreamOfdmaChannelSubcarrierQamModulationSupport);
Assert.AreEqual(108, mcs.DownstreamFrequencyRangeStarting);
Assert.AreEqual(1218, mcs.DownstreamFrequencyRangeUpTo);
Assert.AreEqual(42, mcs.UpstreamFrequencyRangeUpTo);
Assert.AreEqual(ModemCapabilitiesEncoding.DtpMode.MasterOrSlave, mcs.DocsisTimeProtocolMode.Value);
Assert.AreEqual(ModemCapabilitiesEncoding.DtpPerformanceSupport.Level5, mcs.DocsisTimeProtocolPerformanceSupport.Value);
Assert.AreEqual(5, mcs.Pmax);
Assert.IsTrue(mcs.DownstreamFullDuplex);
Assert.AreEqual(7, mcs.LowLatencySupport.Value);
buffer = new byte[]
{
@ -430,12 +402,12 @@ public class DocsisTests
56, 1, 1,
};
mcs = new ModemCapabilitiesEncoding(buffer);
Assert.True(mcs._160kspsSymbolRateSupport);
Assert.True(mcs._320kspsSymbolRateSupport);
Assert.True(mcs._640kspsSymbolRateSupport);
Assert.True(mcs._1280kspsSymbolRateSupport);
Assert.True(mcs._2560kspsSymbolRateSupport);
Assert.True(mcs._5120kspsSymbolRateSupport);
Assert.IsTrue(mcs._160kspsSymbolRateSupport);
Assert.IsTrue(mcs._320kspsSymbolRateSupport);
Assert.IsTrue(mcs._640kspsSymbolRateSupport);
Assert.IsTrue(mcs._1280kspsSymbolRateSupport);
Assert.IsTrue(mcs._2560kspsSymbolRateSupport);
Assert.IsTrue(mcs._5120kspsSymbolRateSupport);
buffer = new byte[]
@ -463,10 +435,10 @@ public class DocsisTests
61, 1, 2
};
mcs = new ModemCapabilitiesEncoding(buffer);
Assert.Null(mcs.DpvPerPathSuppported);
Assert.Null(mcs.DpvPerPacketSuppported);
Assert.Null(mcs.EnergyManagement1x1Feature);
Assert.Null(mcs.DocsisLightSleepMode);
Assert.IsNull(mcs.DpvPerPathSuppported);
Assert.IsNull(mcs.DpvPerPacketSuppported);
Assert.IsNull(mcs.EnergyManagement1x1Feature);
Assert.IsNull(mcs.DocsisLightSleepMode);
buffer = new byte[]
{
@ -506,12 +478,10 @@ public class DocsisTests
{
255, 1, 1
};
Assert.Throws<NotImplementedException>(() => new ModemCapabilitiesEncoding(buffer));
Assert.ThrowsException<NotImplementedException>(() => new ModemCapabilitiesEncoding(buffer));
}
[Fact]
[AllureSuite("Root")]
[AllureFeature("DOCSIS")]
[TestMethod]
public void GeneralServiceFlowEncodingTest()
{
byte[] buffer = new byte[]
@ -539,52 +509,89 @@ public class DocsisTests
16, 4, 0, 0, 255, 255,
};
GeneralServiceFlowEncoding gsfe = new GeneralServiceFlowEncoding(buffer);
Assert.Equal((ushort)1, gsfe.ServiceFlowReference);
Assert.Equal((ushort)1, gsfe.ServiceFlowIdentifier);
Assert.True(gsfe.ProvisionedSet);
Assert.True(gsfe.AdmittedSet);
Assert.True(gsfe.ActiveSet);
Assert.Equal((byte)1, gsfe.TrafficPriority);
Assert.Equal((uint)1, gsfe.UpstreamMaximumSustainedTrafficRate);
Assert.Equal((uint)1, gsfe.MaximumTrafficBurst);
Assert.Equal((uint)1, gsfe.MinimumReservedTrafficRate);
Assert.Equal((ushort)1, gsfe.AssumedMinimumReservedRatePacketSize);
Assert.Equal((ushort)1, gsfe.TimeoutForActiveQosParameters);
Assert.Equal(1, gsfe.MaximumConcatenatedBurst);
Assert.Equal(GeneralServiceFlowEncoding.ServiceFlowSchedulingTypeEnum.ProactiveGrantService, gsfe.ServiceFlowSchedulingType);
Assert.Equal(1, gsfe.DownstreamResequencing.Value);
Assert.Equal(1, gsfe.UnsolicitedGrantSize.Value);
Assert.Equal((uint)2, gsfe.NominalGrantInterval.Value);
Assert.Equal((uint)2, gsfe.ToleratedGrantJitter.Value);
Assert.Equal(2, gsfe.GrantsPerInterval.Value);
Assert.NotNull(gsfe.IpTypeOfServiceOverwrite);
Assert.Equal((uint)2, gsfe.CmtsTimestamp.Value);
Assert.Equal(2, gsfe.MultiplierToNumberOfBytesRequested);
Assert.Equal((uint)3, gsfe.ServiceFlowForbiddenAttributeMask);
Assert.True(gsfe.DoNotUseContentionRegions);
Assert.True(gsfe.DoNotUseSegmentHeaders);
Assert.True(gsfe.DropPacketsTooBigForUnsolicitedGrant);
Assert.True(gsfe.DoNotSupressPayloadHeaders);
Assert.True(gsfe.DoNotFragmentData);
Assert.True(gsfe.DoNotConcatenateData);
Assert.True(gsfe.DoNotPiggybackRequests);
Assert.True(gsfe.DoNotUseRequest2ForData);
Assert.True(gsfe.DoNotUseRequest2ForRequests);
Assert.True(gsfe.DoNotUsePriorityRequest);
Assert.True(gsfe.DoNotUseAllCms);
AllureLog.Log(gsfe.ToString());
Assert.AreEqual((ushort)1, gsfe.ServiceFlowReference);
Assert.AreEqual((ushort)1, gsfe.ServiceFlowIdentifier);
Assert.IsTrue(gsfe.ProvisionedSet);
Assert.IsTrue(gsfe.AdmittedSet);
Assert.IsTrue(gsfe.ActiveSet);
Assert.AreEqual((byte)1, gsfe.TrafficPriority);
Assert.AreEqual((uint)1, gsfe.UpstreamMaximumSustainedTrafficRate);
Assert.AreEqual((uint)1, gsfe.MaximumTrafficBurst);
Assert.AreEqual((uint)1, gsfe.MinimumReservedTrafficRate);
Assert.AreEqual((ushort)1, gsfe.AssumedMinimumReservedRatePacketSize);
Assert.AreEqual((ushort)1, gsfe.TimeoutForActiveQosParameters);
Assert.AreEqual(1, gsfe.MaximumConcatenatedBurst);
Assert.AreEqual(GeneralServiceFlowEncoding.ServiceFlowSchedulingTypeEnum.ProactiveGrantService, gsfe.ServiceFlowSchedulingType);
Assert.AreEqual(1, gsfe.DownstreamResequencing.Value);
Assert.AreEqual(1, gsfe.UnsolicitedGrantSize.Value);
Assert.AreEqual((uint)2, gsfe.NominalGrantInterval.Value);
Assert.AreEqual((uint)2, gsfe.ToleratedGrantJitter.Value);
Assert.AreEqual(2, gsfe.GrantsPerInterval.Value);
Assert.IsNotNull(gsfe.IpTypeOfServiceOverwrite);
Assert.AreEqual((uint)2, gsfe.CmtsTimestamp.Value);
Assert.AreEqual(2, gsfe.MultiplierToNumberOfBytesRequested);
Assert.AreEqual((uint)3, gsfe.ServiceFlowForbiddenAttributeMask);
Assert.IsTrue(gsfe.DoNotUseContentionRegions);
Assert.IsTrue(gsfe.DoNotUseSegmentHeaders);
Assert.IsTrue(gsfe.DropPacketsTooBigForUnsolicitedGrant);
Assert.IsTrue(gsfe.DoNotSupressPayloadHeaders);
Assert.IsTrue(gsfe.DoNotFragmentData);
Assert.IsTrue(gsfe.DoNotConcatenateData);
Assert.IsTrue(gsfe.DoNotPiggybackRequests);
Assert.IsTrue(gsfe.DoNotUseRequest2ForData);
Assert.IsTrue(gsfe.DoNotUseRequest2ForRequests);
Assert.IsTrue(gsfe.DoNotUsePriorityRequest);
Assert.IsTrue(gsfe.DoNotUseAllCms);
this.Print(gsfe.ToString());
buffer = new byte[]
{
17, 4, 0, 0, 0, 1
};
gsfe = new GeneralServiceFlowEncoding(buffer);
Assert.Equal((uint)1, gsfe.NominalPollingInterval.Value);
Assert.AreEqual((uint)1, gsfe.NominalPollingInterval.Value);
buffer = new byte[]
{
254, 1, 1
};
Assert.Throws<NotImplementedException>(() => new GeneralServiceFlowEncoding(buffer));
Assert.ThrowsException<NotImplementedException>(() => new GeneralServiceFlowEncoding(buffer));
}
[MacManagementMessageType(0x90,0x01)]
class TestableMacManagementMessage : MacManagementMessage
{
public TestableMacManagementMessage(PhysicalAddress source, PhysicalAddress destination, byte[] buffer) : base(source, destination, buffer)
{
}
}
class UntestableMacManagementMessage : MacManagementMessage
{
public UntestableMacManagementMessage(PhysicalAddress source, PhysicalAddress destination, byte[] buffer) : base(source, destination, buffer)
{
}
}
[TestMethod]
public void MacManagementMessageTest()
{
Random rng = new Random();
byte[] srcBuffer = new byte[6];
byte[] dstBuffer = new byte[6];
PhysicalAddress srcAddr = new PhysicalAddress(srcBuffer);
PhysicalAddress dstAddr = new PhysicalAddress(dstBuffer);
byte[] dataBuffer = new byte[0];
MacManagementMessageTypeAttribute expected = new MacManagementMessageTypeAttribute(0x90, 0x01);
TestableMacManagementMessage tmmm = new TestableMacManagementMessage(srcAddr, dstAddr, dataBuffer);
Assert.AreEqual(expected, tmmm.MessageType);
Assert.AreEqual(srcAddr, tmmm.Source);
Assert.AreEqual(dstAddr, tmmm.Destination);
Assert.ThrowsException<ArgumentNullException>(() => new TestableMacManagementMessage(srcAddr, dstAddr, null));
UntestableMacManagementMessage ummm = new UntestableMacManagementMessage(srcAddr, dstAddr, dataBuffer);
Assert.IsNull(ummm.MessageType);
}
}

View File

@ -1,14 +1,13 @@
using Allure.Xunit.Attributes;
using skyscraper5.Mpeg2;
namespace skyscraper8.Tests.RootTests;
public class Mpeg2Tests
[TestClass]
public class Mpeg2Tests : Feyllure
{
[Fact]
[AllureSuite("Root")]
[AllureFeature("MPEG2")]
void PsiSectionTest()
[TestMethod]
public void PsiSectionTest()
{
PsiSection section = new PsiSection();
section.Append(new byte[] { 3 });

View File

@ -1,30 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using skyscraper5.Skyscraper.IO;
namespace skyscraper8.Tests
{
public class SanityTests
{
[Fact]
public void Test15bits()
{
byte[] bcd = new byte[] { 0xa9, 0x23 };
MemoryStream ms = new MemoryStream(bcd);
byte readUInt8 = ms.ReadUInt8();
bool msbSet = (readUInt8 & 0x80) != 0;
Assert.True(msbSet);
readUInt8 &= 0b01111111;
int result = ms.ReadUInt8();
result <<= 8;
result += readUInt8;
Assert.Equal(9001, result);
}
}
}

View File

@ -1,40 +0,0 @@
using skyscraper5.Mpeg2;
using skyscraper5.Skyscraper.Scraper;
using skyscraper5.Skyscraper.Scraper.Storage.InMemory;
using skyscraper8.Tests.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using skyscraper8.Skyscraper.Scraper.Storage;
namespace skyscraper8.Tests
{
public class TsDuckTestPatterns
{
[Fact]
public void RunTestPatterns()
{
byte[][] buffers = new byte[][] { Resources.test_1packet_01, Resources.test_2packets_02_03, Resources.test_3packets_04_05_06 };
InMemoryScraperStorageFactory imssf = new InMemoryScraperStorageFactory();
foreach (byte[] buffer in buffers)
{
TsContext mpeg2 = new TsContext();
DataStorage ds = new InMemoryScraperStorageFactory().CreateDataStorage();
ObjectStorage os = new NullObjectStorage();
SkyscraperContext skyscraper = new SkyscraperContext(mpeg2, ds, os);
MemoryStream ms = new MemoryStream(buffer, false);
skyscraper.InitalizeFilterChain();
skyscraper.IngestFromStream(ms);
ms.Close();
ms.Dispose();
}
}
}
}

View File

@ -1,64 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Allure.Commons" Version="3.5.0.73" />
<PackageReference Include="Allure.Xunit" Version="2.14.1" />
<PackageReference Include="coverlet.collector" Version="6.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Xunit.SkippableFact" Version="1.5.23" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\skyscraper8\skyscraper8.csproj" />
</ItemGroup>
<ItemGroup>
<Using Include="Xunit" />
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Update="xunit.runner.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<None Update="allureConfig.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@ -51,8 +51,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "skyscraper5.DNS", "MpePlugi
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "skyscraper5.Gimmicks.IptvCollector", "Gimmicks\skyscraper5.Gimmicks.IptvCollector\skyscraper5.Gimmicks.IptvCollector.csproj", "{8F17668C-623C-F9B3-EAD4-2922E5414B75}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "skyscraper8.Tests", "skyscraper8.Tests\skyscraper8.Tests.csproj", "{84EE9FCD-2C7F-DF84-C1BA-99D018CE9412}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UIs", "UIs", "{E23457C5-3A34-48EE-8107-C91E2C174B2D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "skyscraper5.UI.WindowsForms", "GUIs\skyscraper5.UI\skyscraper5.UI.WindowsForms.csproj", "{46CACA1C-F9B2-2FE0-2068-716F381325E9}"
@ -67,6 +65,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "skyscraper8.UI.MonoGame", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "skyscraper8.UI.MonoGame.Bridge", "GUIs\skyscraper8.UI.ImGui.MonoGame.Bridge\skyscraper8.UI.MonoGame.Bridge.csproj", "{1A29F6E6-4B6A-DCCD-1DF1-AA8D020E17D2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "skyscraper8.Tests", "skyscraper8.Tests\skyscraper8.Tests.csproj", "{011164D8-B6FF-4BAB-B78D-0A174FC691E8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -141,10 +141,6 @@ Global
{8F17668C-623C-F9B3-EAD4-2922E5414B75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8F17668C-623C-F9B3-EAD4-2922E5414B75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8F17668C-623C-F9B3-EAD4-2922E5414B75}.Release|Any CPU.Build.0 = Release|Any CPU
{84EE9FCD-2C7F-DF84-C1BA-99D018CE9412}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{84EE9FCD-2C7F-DF84-C1BA-99D018CE9412}.Debug|Any CPU.Build.0 = Debug|Any CPU
{84EE9FCD-2C7F-DF84-C1BA-99D018CE9412}.Release|Any CPU.ActiveCfg = Release|Any CPU
{84EE9FCD-2C7F-DF84-C1BA-99D018CE9412}.Release|Any CPU.Build.0 = Release|Any CPU
{46CACA1C-F9B2-2FE0-2068-716F381325E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{46CACA1C-F9B2-2FE0-2068-716F381325E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{46CACA1C-F9B2-2FE0-2068-716F381325E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -169,6 +165,10 @@ Global
{1A29F6E6-4B6A-DCCD-1DF1-AA8D020E17D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1A29F6E6-4B6A-DCCD-1DF1-AA8D020E17D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A29F6E6-4B6A-DCCD-1DF1-AA8D020E17D2}.Release|Any CPU.Build.0 = Release|Any CPU
{011164D8-B6FF-4BAB-B78D-0A174FC691E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{011164D8-B6FF-4BAB-B78D-0A174FC691E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{011164D8-B6FF-4BAB-B78D-0A174FC691E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{011164D8-B6FF-4BAB-B78D-0A174FC691E8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -1,16 +1,21 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAllureContext_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fc09614b59cc98c343d268f55e356aaafe85d13755cd5ca217988e9c5362ff_003FAllureContext_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAllureFeatureAttribute_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F405349a6f42433abaa8b1d6d06bb6f21c66899533fa9f9648cb1cde8755143_003FAllureFeatureAttribute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArray_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F6e_003Fd247db11_003FArray_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAssert_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F053cba69424c47858472194d509c3cdc12bb0_003F37_003F58cc70f4_003FAssert_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAssert_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa840692e98b74557bc005b38213a22c72dad0_003Fc8_003F58c2e0c9_003FAssert_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADictionary_00602_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F83_003Fc73c45bc_003FDictionary_00602_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFileInfo_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe1ab690537c44e02a014076312b886b7b2e200_003F5a_003Fcf76af61_003FFileInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AInterop_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003Fea_003F7d70064b_003FInterop_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_00601_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F6b_003Fa410ee2c_003FList_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMemberInfo_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003Fce_003F751a2c1f_003FMemberInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMemoryStream_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F0d_003F068af3a6_003FMemoryStream_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANullable_00601_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F0d_003F6549c49b_003FNullable_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANullAsserts_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3f4719f7ce375226774d6991a6afc2f6932e58b42fd58ff13c7c03771642e_003FNullAsserts_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AObject_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F55_003F6efc7017_003FObject_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AQueue_00601_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003Fb6_003F498e7c75_003FQueue_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuntimeInformation_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F4c_003F5f771d10_003FRuntimeInformation_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASafeFileHandle_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003Fc6_003Fd8e0f2f2_003FSafeFileHandle_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASkip_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fd8c543d93f1559af2ea2be8e9d55839b5bb1a3605f22daa45ea63772e3b4bc_003FSkip_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003Feb_003F3c476997_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe1ab690537c44e02a014076312b886b7b2e200_003F4f_003F7bfc5050_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@ -18,11 +23,17 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATuple_00602_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F9f_003F0d16f921_003FTuple_00602_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/Environment/AssemblyExplorer/XmlDocument/@EntryValue">&lt;AssemblyExplorer&gt;
&lt;Assembly Path="/home/schiemas/.dotnet/packs/Microsoft.NETCore.App.Ref/8.0.21/ref/net8.0/System.Windows.dll" /&gt;
&lt;Assembly Path="/home/schiemas/.nuget/packages/allure.net.commons/2.14.1/lib/netstandard2.0/Allure.Net.Commons.dll" /&gt;
&lt;/AssemblyExplorer&gt;</s:String>
<s:String x:Key="/Default/Environment/Highlighting/HighlightingSourceSnapshotLocation/@EntryValue">/home/schiemas/.cache/JetBrains/Rider2025.1/resharper-host/temp/Rider/vAny/CoverageData/_skyscraper8.1808907683/Snapshot/snapshot.utdcvr</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=92c8346e_002D5416_002D4320_002Dab1d_002D051307b205cd/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" Name="All tests from &amp;lt;skyscraper8.Tests&amp;gt; #2" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;
&lt;Project Location="/home/schiemas/RiderProjects/skyscraper8/skyscraper8.Tests" Presentation="&amp;lt;skyscraper8.Tests&amp;gt;" /&gt;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=94eea68c_002Dcaa0_002D4657_002Da521_002D7b96c8ead0ec/@EntryIndexedValue">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from &amp;lt;skyscraper8.Tests&amp;gt;" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;
&lt;Project Location="/home/schiemas/RiderProjects/skyscraper8/skyscraper8.Tests" Presentation="&amp;lt;skyscraper8.Tests&amp;gt;" /&gt;
&lt;/SessionState&gt;</s:String>
<s:String x:Key="/Default/Profiling/Configurations/=1/@EntryIndexedValue">&lt;data&gt;&lt;HostParameters type="LocalHostParameters" /&gt;&lt;Argument type="StandaloneArgument"&gt;&lt;Arguments IsNull="False"&gt;&lt;/Arguments&gt;&lt;FileName IsNull="False"&gt;&lt;/FileName&gt;&lt;WorkingDirectory IsNull="False"&gt;&lt;/WorkingDirectory&gt;&lt;Scope&gt;&lt;ProcessFilters /&gt;&lt;/Scope&gt;&lt;/Argument&gt;&lt;Info type="TimelineInfo" /&gt;&lt;CoreOptions type="CoreOptions"&gt;&lt;CoreTempPath IsNull="False"&gt;&lt;/CoreTempPath&gt;&lt;RemoteEndPoint IsNull="False"&gt;&lt;/RemoteEndPoint&gt;&lt;AdditionalEnvironmentVariables /&gt;&lt;/CoreOptions&gt;&lt;HostOptions type="HostOptions"&gt;&lt;HostTempPath IsNull="False"&gt;&lt;/HostTempPath&gt;&lt;/HostOptions&gt;&lt;/data&gt;</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/Profiling/Configurations/=1/@EntryIndexedValue">&lt;data&gt;&lt;HostParameters type="LocalHostParameters" /&gt;&lt;Argument type="StandaloneArgument"&gt;&lt;Arguments IsNull="False"&gt;&lt;/Arguments&gt;&lt;FileName IsNull="False"&gt;&lt;/FileName&gt;&lt;WorkingDirectory IsNull="False"&gt;&lt;/WorkingDirectory&gt;&lt;Scope&gt;&lt;ProcessFilters /&gt;&lt;/Scope&gt;&lt;/Argument&gt;&lt;Info type="TimelineInfo" /&gt;&lt;CoreOptions type="CoreOptions"&gt;&lt;CoreTempPath IsNull="False"&gt;&lt;/CoreTempPath&gt;&lt;RemoteEndPoint IsNull="False"&gt;&lt;/RemoteEndPoint&gt;&lt;AdditionalEnvironmentVariables /&gt;&lt;/CoreOptions&gt;&lt;HostOptions type="HostOptions"&gt;&lt;HostTempPath IsNull="False"&gt;&lt;/HostTempPath&gt;&lt;/HostOptions&gt;&lt;/data&gt;</s:String>
<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=skyscraper8_002ETests_002FResources1/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/ResxEditorPersonal/Initialized/@EntryValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@ -30,8 +30,6 @@ namespace skyscraper5.Docsis
{
Type type = this.GetType();
object[] customAttributes = type.GetCustomAttributes(typeof(MacManagementMessageTypeAttribute), false);
if (customAttributes == null)
return null;
if (customAttributes.Length == 0)
return null;
MacManagementMessageTypeAttribute attribute = (MacManagementMessageTypeAttribute)customAttributes[0];

View File

@ -0,0 +1,33 @@
using System.Net;
using System.Net.NetworkInformation;
using skyscraper5.Docsis.MacManagement;
namespace skyscraper5.Docsis;
public class NullDocsisEventHandler : IDocsisEventHandler
{
public void OnParticipantDetected(PhysicalAddress pa)
{
throw new NotImplementedException();
}
public void OnCmtsTimestamp(PhysicalAddress source, uint timing)
{
throw new NotImplementedException();
}
public void OnUpstreamChannel(UpstreamChannelDescriptor mmm)
{
throw new NotImplementedException();
}
public void OnDownstreamChannel(PhysicalAddress physicalAddress, MacDomainDescriptor.DownstreamActiveChannel downstreamActiveChannel)
{
throw new NotImplementedException();
}
public void OnLearnedIpFromMac(PhysicalAddress arpHeaderSenderHardwareAddress, IPAddress arpHeaderSenderProtocolAddress)
{
throw new NotImplementedException();
}
}

View File

@ -42,7 +42,7 @@ namespace skyscraper5
class Program
{
private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name);
private const int PUBLIC_RELEASE = 13;
private static void IntegrationTest()
{
/*List<SsdpDevice> ssdpDevices = SsdpClient.GetSsdpDevices(1000).ToList();
@ -85,7 +85,7 @@ namespace skyscraper5
{
IntegrationTest();
logger.InfoFormat(String.Format("Hello! This is skyscraper8, public release #{0}, code version {1}", PUBLIC_RELEASE, GetCurrentAssemblyDisplayVersion()));
logger.InfoFormat(String.Format("Hello! This is skyscraper8, public release #{0}, code version {1}", VersionInfo.GetPublicReleaseNumber(), VersionInfo.GetCurrentAssemblyDisplayVersion()));
logger.DebugFormat("Found {0}-bit Operating system.", Environment.Is64BitOperatingSystem ? 64 : 32);
logger.DebugFormat("I'm a {0}-bit Process.", Environment.Is64BitProcess ? 64 : 32);
@ -928,23 +928,5 @@ namespace skyscraper5
}
}
private static string GetCurrentAssemblyDisplayVersion()
{
try
{
Assembly executingAssembly = System.Reflection.Assembly.GetExecutingAssembly();
AssemblyName assemblyName = executingAssembly.GetName();
Version version = assemblyName.Version;
DateTime buildDate = new DateTime(2000, 1, 1)
.AddDays(version.Build).AddSeconds(version.Revision * 2);
string displayableVersion = $"{version} ({buildDate})";
return displayableVersion;
}
catch (Exception e)
{
return "???";
}
}
}
}

View File

@ -102,6 +102,13 @@ namespace skyscraper8.Skyscraper
readError = 1;
break;
}
if (buffer[0] != 'G')
{
logger.ErrorFormat("{0} is not a valid Transport Stream file.", fi.Name);
readError = 3;
break;
}
tsContext.PushPacket(buffer);
}
}

View File

@ -0,0 +1,31 @@
using System.Reflection;
namespace skyscraper8;
public class VersionInfo
{
private const int PUBLIC_RELEASE = 13;
public static int GetPublicReleaseNumber()
{
return PUBLIC_RELEASE;
}
public static string GetCurrentAssemblyDisplayVersion()
{
try
{
Assembly executingAssembly = typeof(VersionInfo).GetTypeInfo().Assembly;
AssemblyName assemblyName = executingAssembly.GetName();
Version version = assemblyName.Version;
DateTime buildDate = new DateTime(2000, 1, 1)
.AddDays(version.Build).AddSeconds(version.Revision * 2);
string displayableVersion = $"{version} ({buildDate})";
return displayableVersion;
}
catch (Exception e)
{
return "???";
}
}
}