added unit tests for Philips BIN loader

This commit is contained in:
Horst Beham
2020-08-09 14:09:08 +02:00
parent 8195267981
commit bfc12eae66
63 changed files with 472 additions and 49 deletions

View File

@@ -9,6 +9,7 @@ namespace ChanSort.Api
private string uid;
private string serviceTypeName;
private int newProgramNr;
public virtual bool IsDeleted { get; set; }
public SignalSource SignalSource { get; set; }
@@ -28,10 +29,21 @@ namespace ChanSort.Api
/// original program number from the file, except for channels with IsDeleted==true, which will have the value -1
/// </summary>
public int OldProgramNr { get; set; }
/// <summary>
/// new program number or -1, if the channel isn't assigned a number or has IsDeleted==true
/// </summary>
public int NewProgramNr { get; set; }
public int NewProgramNr
{
get => newProgramNr;
set
{
if (value == 0)
{
}
newProgramNr = value;
}
}
public string Name { get; set; }
public string ShortName { get; set; }

View File

@@ -75,9 +75,9 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="ChanSort.Loader.PhilipsBin.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<Content Include="ChanSort.Loader.PhilipsBin.ini">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -2,6 +2,8 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: InternalsVisibleTo("Test.Loader.PhilipsBin")]
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
@@ -72,7 +73,8 @@ namespace ChanSort.Loader.PhilipsBin
this.satChannels.VisibleColumnFieldNames.Remove("Encrypted");
this.satChannels.VisibleColumnFieldNames.Remove("Hidden");
this.ini = new IniFile("ChanSort.Loader.PhilipsBin.ini");
string iniFile = Assembly.GetExecutingAssembly().Location.Replace(".dll", ".ini");
this.ini = new IniFile(iniFile);
}
#endregion
@@ -287,53 +289,64 @@ namespace ChanSort.Loader.PhilipsBin
mapping.SetDataPtr(data, 12 + recordCount * 4);
for (int i = 0; i < recordCount; i++, mapping.BaseOffset += recordSize)
{
var ch = new ChannelInfo(list.SignalSource, i, 0, null);
var progNr = mapping.GetWord("offProgNr");
var transponderId = mapping.GetWord("offTransponderIndex");
if (progNr == 0xFFFF || transponderId == 0xFFFF)
{
ch.IsDeleted = true;
ch.OldProgramNr = -1;
DataRoot.AddChannel(list, ch);
continue;
}
ch.PcrPid = mapping.GetWord("offPcrPid") & mapping.GetMask("maskPcrPid");
ch.Lock = mapping.GetFlag("Locked");
ch.OriginalNetworkId = mapping.GetWord("OffOnid"); // can be 0 in some lists
ch.TransportStreamId = mapping.GetWord("offTsid");
ch.ServiceId = mapping.GetWord("offSid");
ch.VideoPid = mapping.GetWord("offVpid") & mapping.GetMask("maskVpid");
//ch.Favorites = mapping.GetFlag("IsFav") ? Favorites.A : 0; // setting this here would mess up the proper order
ch.OldProgramNr = progNr;
dvbStringDecoder.GetChannelNames(data, mapping.BaseOffset + mapping.GetConst("offName",0), mapping.GetConst("lenName", 0), out var longName, out var shortName);
ch.Name = longName.TrimEnd('\0');
ch.ShortName = shortName.TrimEnd('\0');
dvbStringDecoder.GetChannelNames(data, mapping.BaseOffset + mapping.GetConst("offProvider", 0), mapping.GetConst("lenProvider", 0), out var provider, out _);
ch.Provider = provider.TrimEnd('\0');
if (this.DataRoot.Transponder.TryGetValue(transponderId, out var t))
{
ch.Transponder = t;
ch.FreqInMhz = t.FrequencyInMhz;
ch.SymbolRate = t.SymbolRate;
ch.SatPosition = t.Satellite?.OrbitalPosition;
ch.Satellite = t.Satellite?.Name;
if (ch.OriginalNetworkId == 0)
ch.OriginalNetworkId = t.OriginalNetworkId;
if (ch.TransportStreamId == 0)
ch.TransportStreamId = t.TransportStreamId;
}
var ch = LoadDvbsChannel(list, mapping, i, dvbStringDecoder);
this.DataRoot.AddChannel(list, ch);
}
}
#endregion
#region LoadDvbsChannel
private ChannelInfo LoadDvbsChannel(ChannelList list, DataMapping mapping, int recordIndex, DvbStringDecoder dvbStringDecoder)
{
var transponderId = mapping.GetWord("offTransponderIndex");
var progNr = mapping.GetWord("offProgNr");
var ch = new ChannelInfo(list.SignalSource, recordIndex, progNr, null);
// deleted channels must be kept in the list because their records must also be physically reordered when saving the list
if (progNr == 0xFFFF || transponderId == 0xFFFF)
{
ch.IsDeleted = true;
ch.OldProgramNr = -1;
return ch;
}
// onid, tsid, pcrpid and vpid can be 0 in some lists
ch.PcrPid = mapping.GetWord("offPcrPid") & mapping.GetMask("maskPcrPid");
ch.Lock = mapping.GetFlag("Locked");
ch.OriginalNetworkId = mapping.GetWord("OffOnid");
ch.TransportStreamId = mapping.GetWord("offTsid");
ch.ServiceId = mapping.GetWord("offSid");
ch.VideoPid = mapping.GetWord("offVpid") & mapping.GetMask("maskVpid");
ch.Favorites = mapping.GetFlag("IsFav") ? Favorites.A : 0;
ch.OldProgramNr = progNr;
// the 0x1F as the first byte of the channel name is likely the DVB encoding indicator for UTF-8. So we use the DvbStringDecoder here
dvbStringDecoder.GetChannelNames(mapping.Data, mapping.BaseOffset + mapping.GetConst("offName", 0), mapping.GetConst("lenName", 0), out var longName, out var shortName);
ch.Name = longName.TrimEnd('\0');
ch.ShortName = shortName.TrimEnd('\0');
dvbStringDecoder.GetChannelNames(mapping.Data, mapping.BaseOffset + mapping.GetConst("offProvider", 0), mapping.GetConst("lenProvider", 0), out var provider, out _);
ch.Provider = provider.TrimEnd('\0');
// copy values from the satellite/transponder tables to the channel
if (this.DataRoot.Transponder.TryGetValue(transponderId, out var t))
{
ch.Transponder = t;
ch.FreqInMhz = t.FrequencyInMhz;
ch.SymbolRate = t.SymbolRate;
ch.SatPosition = t.Satellite?.OrbitalPosition;
ch.Satellite = t.Satellite?.Name;
if (t.OriginalNetworkId != 0)
ch.OriginalNetworkId = t.OriginalNetworkId;
if (t.TransportStreamId != 0)
ch.TransportStreamId = t.TransportStreamId;
}
return ch;
}
#endregion
#region LoadDvbsFavorites
private void LoadDvbsFavorites(string path)
{

View File

@@ -78,6 +78,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.M3u", "Chan
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.PhilipsBin", "ChanSort.Loader.PhilipsBin\ChanSort.Loader.PhilipsBin.csproj", "{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.PhilipsBin", "Test.Loader.PhilipsBin\Test.Loader.PhilipsBin.csproj", "{36ED558E-576C-4D9D-A8C5-8D270A156B82}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -434,8 +436,20 @@ Global
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|Any CPU.Build.0 = Release|Any CPU
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|x86.ActiveCfg = Release|Any CPU
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|x86.Build.0 = Release|Any CPU
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|x86.ActiveCfg = Release|x86
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|x86.Build.0 = Release|x86
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|x86.ActiveCfg = Debug|x86
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|x86.Build.0 = Debug|x86
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|Any CPU.Build.0 = Release|Any CPU
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|x86.ActiveCfg = Release|x86
{36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -0,0 +1,97 @@
using System;
using System.IO;
using System.Linq;
using ChanSort.Api;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Test.Loader.PhilipsBin
{
[TestClass]
public class PhilipsS2channellibTest
{
[TestMethod]
public void TestFiles1()
{
var baseDir = Path.GetDirectoryName(this.GetType().Assembly.Location);
var baseFile = Path.Combine(baseDir, "TestFiles1\\Repair\\ChannelList\\chanLst.bin");
var plugin = new ChanSort.Loader.PhilipsBin.SerializerPlugin();
var loader = plugin.CreateSerializer(baseFile);
loader.Load();
var list = loader.DataRoot.GetChannelList(SignalSource.DvbS);
Assert.AreEqual(5000, list.Channels.Count);
Assert.AreEqual(4975, list.Channels.Count(ch => !ch.IsDeleted));
var ch0 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 0);
Assert.IsTrue(ch0.IsDeleted);
var ch1 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 1);
Assert.AreEqual(2, ch1.OldProgramNr);
Assert.AreEqual("ZDF HD", ch1.Name);
Assert.AreEqual(11361, ch1.FreqInMhz);
Assert.AreEqual("Astra 1", ch1.Satellite);
Assert.AreEqual(1, ch1.OriginalNetworkId);
Assert.AreEqual(1011, ch1.TransportStreamId);
Assert.AreEqual(11110, ch1.ServiceId);
Assert.AreEqual(6110, ch1.PcrPid);
Assert.AreEqual(6110, ch1.VideoPid);
Assert.AreEqual(21999, ch1.SymbolRate);
Assert.AreEqual("ZDFvision", ch1.Provider);
}
[TestMethod]
public void TestFiles2()
{
var baseDir = Path.GetDirectoryName(this.GetType().Assembly.Location);
var baseFile = Path.Combine(baseDir, "TestFiles2\\Repair\\ChannelList\\chanLst.bin");
var plugin = new ChanSort.Loader.PhilipsBin.SerializerPlugin();
var loader = plugin.CreateSerializer(baseFile);
loader.Load();
var list = loader.DataRoot.GetChannelList(SignalSource.DvbS);
Assert.AreEqual(5000, list.Channels.Count);
Assert.AreEqual(1326, list.Channels.Count(ch => !ch.IsDeleted));
var ch0 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 0);
Assert.AreEqual(1, ch0.OldProgramNr);
Assert.AreEqual("Das Erste HD", ch0.Name);
Assert.AreEqual(11493, ch0.FreqInMhz);
Assert.AreEqual("Astra 1", ch0.Satellite);
//Assert.AreEqual(1, ch0.OriginalNetworkId);
Assert.AreEqual(1019, ch0.TransportStreamId);
Assert.AreEqual(10301, ch0.ServiceId);
//Assert.AreEqual(6110, ch1.PcrPid);
//Assert.AreEqual(6110, ch1.VideoPid);
Assert.AreEqual(21999, ch0.SymbolRate);
Assert.AreEqual("ARD", ch0.Provider);
Assert.IsFalse(ch0.Lock);
Assert.AreEqual((Favorites)0, ch0.Favorites);
Assert.IsFalse(ch0.IsDeleted);
var ch2 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 2);
Assert.AreEqual("NDR FS HH", ch2.Name);
Assert.IsTrue(ch2.Lock);
Assert.AreEqual((Favorites)0, ch2.Favorites);
var ch3 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 3);
Assert.AreEqual("SAT.1", ch3.Name);
Assert.AreEqual(Favorites.A, ch3.Favorites);
var ch4 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 4);
Assert.AreEqual("arte HD", ch4.Name);
Assert.AreEqual(Favorites.A, ch4.Favorites);
var ch7 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 7);
Assert.AreEqual("RTL2", ch7.Name);
Assert.AreEqual(Favorites.A, ch7.Favorites);
var ch8 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 8);
Assert.IsTrue(ch8.IsDeleted);
Assert.AreEqual(1, ch4.OldFavIndex[0]);
Assert.AreEqual(2, ch7.OldFavIndex[0]);
Assert.AreEqual(3, ch3.OldFavIndex[0]);
}
}
}

View File

@@ -0,0 +1,20 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("Test.Loader.PhilipsBin")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Test.Loader.PhilipsBin")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("36ed558e-576c-4d9d-a8c5-8d270a156b82")]
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,260 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{36ED558E-576C-4D9D-A8C5-8D270A156B82}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Test.Loader.PhilipsBin</RootNamespace>
<AssemblyName>Test.Loader.PhilipsBin</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
<IsCodedUITest>False</IsCodedUITest>
<TestProjectType>UnitTest</TestProjectType>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="PhilipsS2channellibTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<None Include="TestFiles1\Repair\ChannelList\chanLst.bin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\AntennaAnalogTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\AntennaDigSrvTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\AntennaDigTSTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\AntennaFrqMapTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\AntennaPresetTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\CableAnalogTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\CableDigSrvTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\CableDigTSTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\CableFrqMapTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\channellib\CablePresetTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\adk_user_pref.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\adk_user_pref_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\db_file_info.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\db_file_info_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\favorite.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\favorite_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\lnb.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\lnb_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\satellite.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\satellite_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\service.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\service_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\tuneinfo.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\tuneinfo_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\user_pref.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles1\Repair\ChannelList\s2channellib\user_pref_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\chanLst.bin">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\AntennaAnalogTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\AntennaDigSrvTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\AntennaDigTSTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\AntennaFrqMapTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\AntennaPresetTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\CableAnalogTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\CableDigSrvTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\CableDigTSTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\CableFrqMapTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\channellib\CablePresetTable">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\adk_user_pref.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\adk_user_pref_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\db_file_info.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\db_file_info_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\favorite.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\favorite_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\lnb.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\lnb_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\satellite.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\satellite_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\service.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\service_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\tuneinfo.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\tuneinfo_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\user_pref.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestFiles2\Repair\ChannelList\s2channellib\user_pref_backup.dat">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ChanSort.Api\ChanSort.Api.csproj">
<Project>{dccffa08-472b-4d17-bb90-8f513fc01392}</Project>
<Name>ChanSort.Api</Name>
</ProjectReference>
<ProjectReference Include="..\ChanSort.Loader.PhilipsBin\ChanSort.Loader.PhilipsBin.csproj">
<Project>{1f52b5ec-a2f1-4e53-9e1a-4658296c5bb5}</Project>
<Name>ChanSort.Loader.PhilipsBin</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props'))" />
<Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets'))" />
</Target>
<Import Project="..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets')" />
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MSTest.TestAdapter" version="2.1.1" targetFramework="net48" />
<package id="MSTest.TestFramework" version="2.1.1" targetFramework="net48" />
</packages>