diff options
75 files changed, 1825 insertions, 89 deletions
diff --git a/BDInfo/BDInfo.csproj b/BDInfo/BDInfo.csproj index f38fc8101..403ecec4e 100644 --- a/BDInfo/BDInfo.csproj +++ b/BDInfo/BDInfo.csproj @@ -5,7 +5,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/DvdLib/DvdLib.csproj b/DvdLib/DvdLib.csproj index f38fc8101..403ecec4e 100644 --- a/DvdLib/DvdLib.csproj +++ b/DvdLib/DvdLib.csproj @@ -5,7 +5,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/Emby.Dlna/Emby.Dlna.csproj b/Emby.Dlna/Emby.Dlna.csproj index b671f114a..c58144e00 100644 --- a/Emby.Dlna/Emby.Dlna.csproj +++ b/Emby.Dlna/Emby.Dlna.csproj @@ -8,7 +8,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/Emby.Drawing.ImageMagick/Emby.Drawing.ImageMagick.csproj b/Emby.Drawing.ImageMagick/Emby.Drawing.ImageMagick.csproj index 091c99430..2c5c92367 100644 --- a/Emby.Drawing.ImageMagick/Emby.Drawing.ImageMagick.csproj +++ b/Emby.Drawing.ImageMagick/Emby.Drawing.ImageMagick.csproj @@ -1,7 +1,7 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj b/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj index 3b0aca366..447812458 100644 --- a/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj +++ b/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj @@ -1,7 +1,7 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/Emby.Drawing/Emby.Drawing.csproj b/Emby.Drawing/Emby.Drawing.csproj index e4c9a0c35..3fa60fad1 100644 --- a/Emby.Drawing/Emby.Drawing.csproj +++ b/Emby.Drawing/Emby.Drawing.csproj @@ -10,7 +10,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/Emby.IsoMounting/IsoMounter/IsoMounter.csproj b/Emby.IsoMounting/IsoMounter/IsoMounter.csproj index 49a9d948c..ee67a1d94 100644 --- a/Emby.IsoMounting/IsoMounter/IsoMounter.csproj +++ b/Emby.IsoMounting/IsoMounter/IsoMounter.csproj @@ -6,7 +6,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/Emby.Naming/Emby.Naming.csproj b/Emby.Naming/Emby.Naming.csproj index 89562296d..f1a736ecc 100644 --- a/Emby.Naming/Emby.Naming.csproj +++ b/Emby.Naming/Emby.Naming.csproj @@ -1,7 +1,7 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> @@ -9,4 +9,4 @@ <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj" /> </ItemGroup> -</Project>
\ No newline at end of file +</Project> diff --git a/Emby.Notifications/Emby.Notifications.csproj b/Emby.Notifications/Emby.Notifications.csproj index 0a07c419b..881be692b 100644 --- a/Emby.Notifications/Emby.Notifications.csproj +++ b/Emby.Notifications/Emby.Notifications.csproj @@ -1,7 +1,7 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/Emby.Photos/Emby.Photos.csproj b/Emby.Photos/Emby.Photos.csproj index f8c2156a6..e945ff444 100644 --- a/Emby.Photos/Emby.Photos.csproj +++ b/Emby.Photos/Emby.Photos.csproj @@ -11,7 +11,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj index 081238399..b3b476907 100644 --- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj +++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj @@ -33,7 +33,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/Emby.XmlTv/Emby.XmlTv.Test/Emby.XmlTv.Test.csproj b/Emby.XmlTv/Emby.XmlTv.Test/Emby.XmlTv.Test.csproj index a1d3878c7..7ffb30b93 100644 --- a/Emby.XmlTv/Emby.XmlTv.Test/Emby.XmlTv.Test.csproj +++ b/Emby.XmlTv/Emby.XmlTv.Test/Emby.XmlTv.Test.csproj @@ -117,7 +117,7 @@ </Target> --> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> </Project> diff --git a/Emby.XmlTv/Emby.XmlTv/Emby.XmlTv.csproj b/Emby.XmlTv/Emby.XmlTv/Emby.XmlTv.csproj index 60183534e..b10551b99 100644 --- a/Emby.XmlTv/Emby.XmlTv/Emby.XmlTv.csproj +++ b/Emby.XmlTv/Emby.XmlTv/Emby.XmlTv.csproj @@ -2,7 +2,7 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index e4c9a0c35..3fa60fad1 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -10,7 +10,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj index afd3925ba..bdf2f9873 100644 --- a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj +++ b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj @@ -10,7 +10,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 480d6c678..a318cf38a 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -15,7 +15,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 96d63be04..fb5d39743 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -16,7 +16,7 @@ </ItemGroup>
<PropertyGroup>
- <TargetFramework>netcoreapp2.1</TargetFramework>
+ <TargetFramework>netstandard2.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
diff --git a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj index e4c9a0c35..3fa60fad1 100644 --- a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj +++ b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj @@ -10,7 +10,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/MediaBrowser.sln b/MediaBrowser.sln index b7c8ba527..4c0db4880 100644 --- a/MediaBrowser.sln +++ b/MediaBrowser.sln @@ -64,6 +64,50 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.XmlTv", "Emby.XmlTv\Em EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IsoMounter", "Emby.IsoMounting\IsoMounter\IsoMounter.csproj", "{9BA471D2-6DB9-4DBF-B3A0-9FB3171F94A6}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BDInfo.Test", "tests\BDInfo.Test\BDInfo.Test.csproj", "{70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DvdLib.Test", "tests\DvdLib.Test\DvdLib.Test.csproj", "{393482D5-4902-4D78-A085-D3D1DAAB35C5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Dlna.Test", "tests\Jellyfin.Dlna.Test\Jellyfin.Dlna.Test.csproj", "{D9DDBA32-F017-4B04-A9A8-684B09792D6B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{2AC30C72-9249-4621-967C-929ECA51D9F2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Drawing.Test", "tests\Jellyfin.Drawing.Test\Jellyfin.Drawing.Test.csproj", "{DB1A8734-E61E-4DC8-9664-681E691DDD2C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Drawing.ImageMagick.Test", "tests\Jellyfin.Drawing.ImageMagick.Test\Jellyfin.Drawing.ImageMagick.Test.csproj", "{D290F8B9-5C8C-4B11-82A7-E1F1615771B6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Drawing.Skia.Test", "tests\Jellyfin.Drawing.Skia.Test\Jellyfin.Drawing.Skia.Test.csproj", "{941A0327-CBE9-4804-BD45-49C0D4889E2D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Naming.Test", "tests\Jellyfin.Naming.Test\Jellyfin.Naming.Test.csproj", "{B1577537-4675-40CA-B6F4-699E544E5238}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Notifications.Test", "tests\Jellyfin.Notifications.Test\Jellyfin.Notifications.Test.csproj", "{588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Photos.Test", "tests\Jellyfin.Photos.Test\Jellyfin.Photos.Test.csproj", "{DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Server.Implementations.Test", "tests\Jellyfin.Server.Implementations.Test\Jellyfin.Server.Implementations.Test.csproj", "{479023FE-D41A-47C2-84D3-7AB89EA94DCB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.XmlTv.Test", "tests\Jellyfin.XmlTv.Test\Jellyfin.XmlTv.Test.csproj", "{3B256C5C-6B43-418F-8101-6418275DD8E3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Test", "tests\Jellyfin.Test\Jellyfin.Test.csproj", "{522B49EE-8F4D-4DF9-A8D8-F7C49D630184}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IsoMounter.Test", "tests\IsoMounter.Test\IsoMounter.Test.csproj", "{94668F26-EF57-4308-84E7-F3AEFF6BEEEF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Api.Test", "tests\Jellyfin.Api.Test\Jellyfin.Api.Test.csproj", "{80313AD3-B247-414E-8421-332CF600192A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Common.Test", "tests\Jellyfin.Common.Test\Jellyfin.Common.Test.csproj", "{6C1A297B-DA4A-4291-8E09-1BE27A7896C7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Controller.Test", "tests\Jellyfin.Controller.Test\Jellyfin.Controller.Test.csproj", "{FFE772D4-4EA0-4CFF-959F-F03A665D21EE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.LocalMetadata.Test", "tests\Jellyfin.LocalMetadata.Test\Jellyfin.LocalMetadata.Test.csproj", "{B1E67507-8344-4759-97C0-5938BE4028C3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Model.Test", "tests\Jellyfin.Model.Test\Jellyfin.Model.Test.csproj", "{55FDA93E-B630-4EBF-BE13-45ABF23FF66F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Providers.Test", "tests\Jellyfin.Providers.Test\Jellyfin.Providers.Test.csproj", "{F15C15AA-FF3C-4B9D-B779-157573A026D6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.WebDashboard.Test", "tests\Jellyfin.WebDashboard.Test\Jellyfin.WebDashboard.Test.csproj", "{7D87AEB7-A2AD-4649-A9BC-ED577851D282}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.XbmcMetadata.Test", "tests\Jellyfin.XbmcMetadata.Test\Jellyfin.XbmcMetadata.Test.csproj", "{368FAC59-60D1-49D6-AF2C-EC489551C5E4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -525,6 +569,426 @@ Global {9BA471D2-6DB9-4DBF-B3A0-9FB3171F94A6}.Release|x64.Build.0 = Release|Any CPU {9BA471D2-6DB9-4DBF-B3A0-9FB3171F94A6}.Release|x86.ActiveCfg = Release|Any CPU {9BA471D2-6DB9-4DBF-B3A0-9FB3171F94A6}.Release|x86.Build.0 = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Win32.ActiveCfg = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Win32.Build.0 = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|x64.ActiveCfg = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|x64.Build.0 = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|x86.ActiveCfg = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|x86.Build.0 = Debug|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Any CPU.Build.0 = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Win32.ActiveCfg = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Win32.Build.0 = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|x64.ActiveCfg = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|x64.Build.0 = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|x86.ActiveCfg = Release|Any CPU + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|x86.Build.0 = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Win32.ActiveCfg = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Win32.Build.0 = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|x64.ActiveCfg = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|x64.Build.0 = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|x86.ActiveCfg = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|x86.Build.0 = Debug|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Any CPU.Build.0 = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Win32.ActiveCfg = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Win32.Build.0 = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|x64.ActiveCfg = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|x64.Build.0 = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|x86.ActiveCfg = Release|Any CPU + {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|x86.Build.0 = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Win32.ActiveCfg = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Win32.Build.0 = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|x64.ActiveCfg = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|x64.Build.0 = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|x86.ActiveCfg = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|x86.Build.0 = Debug|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Any CPU.Build.0 = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Win32.ActiveCfg = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Win32.Build.0 = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|x64.ActiveCfg = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|x64.Build.0 = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|x86.ActiveCfg = Release|Any CPU + {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|x86.Build.0 = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Win32.ActiveCfg = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Win32.Build.0 = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|x64.ActiveCfg = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|x64.Build.0 = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|x86.ActiveCfg = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|x86.Build.0 = Debug|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Any CPU.Build.0 = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Win32.ActiveCfg = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Win32.Build.0 = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|x64.ActiveCfg = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|x64.Build.0 = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|x86.ActiveCfg = Release|Any CPU + {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|x86.Build.0 = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Win32.ActiveCfg = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Win32.Build.0 = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|x64.ActiveCfg = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|x64.Build.0 = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|x86.ActiveCfg = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|x86.Build.0 = Debug|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Any CPU.Build.0 = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Win32.ActiveCfg = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Win32.Build.0 = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|x64.ActiveCfg = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|x64.Build.0 = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|x86.ActiveCfg = Release|Any CPU + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|x86.Build.0 = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Win32.ActiveCfg = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Win32.Build.0 = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|x64.ActiveCfg = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|x64.Build.0 = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|x86.ActiveCfg = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|x86.Build.0 = Debug|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Any CPU.Build.0 = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Win32.ActiveCfg = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Win32.Build.0 = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|x64.ActiveCfg = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|x64.Build.0 = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|x86.ActiveCfg = Release|Any CPU + {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|x86.Build.0 = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Win32.ActiveCfg = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Win32.Build.0 = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|x64.ActiveCfg = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|x64.Build.0 = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|x86.ActiveCfg = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|x86.Build.0 = Debug|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Any CPU.Build.0 = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Win32.ActiveCfg = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Win32.Build.0 = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|x64.ActiveCfg = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|x64.Build.0 = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|x86.ActiveCfg = Release|Any CPU + {B1577537-4675-40CA-B6F4-699E544E5238}.Release|x86.Build.0 = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Win32.ActiveCfg = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Win32.Build.0 = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|x64.ActiveCfg = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|x64.Build.0 = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|x86.ActiveCfg = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|x86.Build.0 = Debug|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Any CPU.Build.0 = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Win32.ActiveCfg = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Win32.Build.0 = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|x64.ActiveCfg = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|x64.Build.0 = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|x86.ActiveCfg = Release|Any CPU + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|x86.Build.0 = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Win32.ActiveCfg = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Win32.Build.0 = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|x64.ActiveCfg = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|x64.Build.0 = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|x86.ActiveCfg = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|x86.Build.0 = Debug|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Any CPU.Build.0 = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Win32.ActiveCfg = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Win32.Build.0 = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|x64.ActiveCfg = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|x64.Build.0 = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|x86.ActiveCfg = Release|Any CPU + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|x86.Build.0 = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Win32.ActiveCfg = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Win32.Build.0 = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|x64.ActiveCfg = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|x64.Build.0 = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|x86.ActiveCfg = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|x86.Build.0 = Debug|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Any CPU.Build.0 = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Win32.ActiveCfg = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Win32.Build.0 = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|x64.ActiveCfg = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|x64.Build.0 = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|x86.ActiveCfg = Release|Any CPU + {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|x86.Build.0 = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Win32.ActiveCfg = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Win32.Build.0 = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|x64.ActiveCfg = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|x64.Build.0 = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|x86.ActiveCfg = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|x86.Build.0 = Debug|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Any CPU.Build.0 = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Win32.ActiveCfg = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Win32.Build.0 = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|x64.ActiveCfg = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|x64.Build.0 = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|x86.ActiveCfg = Release|Any CPU + {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|x86.Build.0 = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Any CPU.Build.0 = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Win32.ActiveCfg = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Win32.Build.0 = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|x64.ActiveCfg = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|x64.Build.0 = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|x86.ActiveCfg = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|x86.Build.0 = Debug|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Any CPU.ActiveCfg = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Any CPU.Build.0 = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Win32.ActiveCfg = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Win32.Build.0 = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|x64.ActiveCfg = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|x64.Build.0 = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|x86.ActiveCfg = Release|Any CPU + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|x86.Build.0 = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Win32.ActiveCfg = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Win32.Build.0 = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|x64.ActiveCfg = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|x64.Build.0 = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|x86.ActiveCfg = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|x86.Build.0 = Debug|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Any CPU.Build.0 = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Win32.ActiveCfg = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Win32.Build.0 = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|x64.ActiveCfg = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|x64.Build.0 = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|x86.ActiveCfg = Release|Any CPU + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|x86.Build.0 = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|Win32.ActiveCfg = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|Win32.Build.0 = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|x64.ActiveCfg = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|x64.Build.0 = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|x86.ActiveCfg = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Debug|x86.Build.0 = Debug|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|Any CPU.Build.0 = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|Win32.ActiveCfg = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|Win32.Build.0 = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|x64.ActiveCfg = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|x64.Build.0 = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|x86.ActiveCfg = Release|Any CPU + {80313AD3-B247-414E-8421-332CF600192A}.Release|x86.Build.0 = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Win32.ActiveCfg = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Win32.Build.0 = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|x64.ActiveCfg = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|x64.Build.0 = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|x86.Build.0 = Debug|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Any CPU.Build.0 = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Win32.ActiveCfg = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Win32.Build.0 = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|x64.ActiveCfg = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|x64.Build.0 = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|x86.ActiveCfg = Release|Any CPU + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|x86.Build.0 = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Win32.ActiveCfg = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Win32.Build.0 = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|x64.ActiveCfg = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|x64.Build.0 = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|x86.ActiveCfg = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|x86.Build.0 = Debug|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Any CPU.Build.0 = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Win32.ActiveCfg = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Win32.Build.0 = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|x64.ActiveCfg = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|x64.Build.0 = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|x86.ActiveCfg = Release|Any CPU + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|x86.Build.0 = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Win32.ActiveCfg = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Win32.Build.0 = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|x64.ActiveCfg = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|x64.Build.0 = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|x86.ActiveCfg = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|x86.Build.0 = Debug|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Any CPU.Build.0 = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Win32.ActiveCfg = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Win32.Build.0 = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|x64.ActiveCfg = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|x64.Build.0 = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|x86.ActiveCfg = Release|Any CPU + {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|x86.Build.0 = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Win32.ActiveCfg = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Win32.Build.0 = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|x64.ActiveCfg = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|x64.Build.0 = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|x86.ActiveCfg = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|x86.Build.0 = Debug|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Any CPU.Build.0 = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Win32.ActiveCfg = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Win32.Build.0 = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|x64.ActiveCfg = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|x64.Build.0 = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|x86.ActiveCfg = Release|Any CPU + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|x86.Build.0 = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Win32.ActiveCfg = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Win32.Build.0 = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|x64.ActiveCfg = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|x64.Build.0 = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|x86.ActiveCfg = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|x86.Build.0 = Debug|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Any CPU.Build.0 = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Win32.ActiveCfg = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Win32.Build.0 = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|x64.ActiveCfg = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|x64.Build.0 = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|x86.ActiveCfg = Release|Any CPU + {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|x86.Build.0 = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Win32.ActiveCfg = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Win32.Build.0 = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|x64.ActiveCfg = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|x64.Build.0 = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|x86.ActiveCfg = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|x86.Build.0 = Debug|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Any CPU.Build.0 = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Win32.ActiveCfg = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Win32.Build.0 = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|x64.ActiveCfg = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|x64.Build.0 = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|x86.ActiveCfg = Release|Any CPU + {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|x86.Build.0 = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Win32.ActiveCfg = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Win32.Build.0 = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|x64.ActiveCfg = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|x64.Build.0 = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|x86.ActiveCfg = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|x86.Build.0 = Debug|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Any CPU.Build.0 = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Win32.ActiveCfg = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Win32.Build.0 = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|x64.ActiveCfg = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|x64.Build.0 = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|x86.ActiveCfg = Release|Any CPU + {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -532,4 +996,27 @@ Global GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {3448830C-EBDC-426C-85CD-7BBB9651A7FE} EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {D9DDBA32-F017-4B04-A9A8-684B09792D6B} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {393482D5-4902-4D78-A085-D3D1DAAB35C5} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {DB1A8734-E61E-4DC8-9664-681E691DDD2C} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {D290F8B9-5C8C-4B11-82A7-E1F1615771B6} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {941A0327-CBE9-4804-BD45-49C0D4889E2D} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {B1577537-4675-40CA-B6F4-699E544E5238} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {479023FE-D41A-47C2-84D3-7AB89EA94DCB} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {3B256C5C-6B43-418F-8101-6418275DD8E3} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {522B49EE-8F4D-4DF9-A8D8-F7C49D630184} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {94668F26-EF57-4308-84E7-F3AEFF6BEEEF} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {80313AD3-B247-414E-8421-332CF600192A} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {6C1A297B-DA4A-4291-8E09-1BE27A7896C7} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {FFE772D4-4EA0-4CFF-959F-F03A665D21EE} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {B1E67507-8344-4759-97C0-5938BE4028C3} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {55FDA93E-B630-4EBF-BE13-45ABF23FF66F} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {F15C15AA-FF3C-4B9D-B779-157573A026D6} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {7D87AEB7-A2AD-4649-A9BC-ED577851D282} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + {368FAC59-60D1-49D6-AF2C-EC489551C5E4} = {2AC30C72-9249-4621-967C-929ECA51D9F2} + EndGlobalSection EndGlobal diff --git a/Mono.Nat/Mono.Nat.csproj b/Mono.Nat/Mono.Nat.csproj index 4de89290e..eacf84c35 100644 --- a/Mono.Nat/Mono.Nat.csproj +++ b/Mono.Nat/Mono.Nat.csproj @@ -10,7 +10,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/OpenSubtitlesHandler/OpenSubtitlesHandler.csproj b/OpenSubtitlesHandler/OpenSubtitlesHandler.csproj index d6a0c2e8c..ba8bcbc23 100644 --- a/OpenSubtitlesHandler/OpenSubtitlesHandler.csproj +++ b/OpenSubtitlesHandler/OpenSubtitlesHandler.csproj @@ -6,7 +6,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/RSSDP/RSSDP.csproj b/RSSDP/RSSDP.csproj index 994e74158..0737dc213 100644 --- a/RSSDP/RSSDP.csproj +++ b/RSSDP/RSSDP.csproj @@ -6,7 +6,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/SocketHttpListener/SocketHttpListener.csproj b/SocketHttpListener/SocketHttpListener.csproj index da80fa94a..494bc7fc9 100644 --- a/SocketHttpListener/SocketHttpListener.csproj +++ b/SocketHttpListener/SocketHttpListener.csproj @@ -10,7 +10,7 @@ </ItemGroup> <PropertyGroup> - <TargetFramework>netcoreapp2.1</TargetFramework> + <TargetFramework>netstandard2.0</TargetFramework> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> diff --git a/debian/conf/jellyfin b/debian/conf/jellyfin index 57f424c06..5c26d12c3 100644 --- a/debian/conf/jellyfin +++ b/debian/conf/jellyfin @@ -1,37 +1,36 @@ -# Defaults for jellyfin initscript -# sourced by /etc/init.d/jellyfin and /usr/lib/jellyfin/jellyfin.sh -# installed at /etc/default/jellyfin by the maintainer scripts +# Jellyfin default configuration options + +# Use this file to override the default configurations; add additional +# options with JELLYFIN_ADD_OPTS. + +# Under systemd, use +# /etc/systemd/system/jellyfin.service.d/jellyfin.service.conf +# to override the user or this config file's location. # # This is a POSIX shell fragment # -## Don't edit this file -## Edit user configuration in /etc/jellyfin.conf to change -## -## JELLYFIN_USER= #$JELLYFIN_USER, username to run Jellyfin under, the default is jellyfin -## JELLYFIN_GROUP= #$JELLYFIN_GROUP, Jellyfin group where Jellyfin user belongs -## JELLYFIN_DIR= #$JELLYFIN_DIR, the location of Jellyfin program files the default is /usr/lib/jellyfin -## JELLYFIN_BIN= #$JELLYFIN_BIN, full path of MediaBrowser.Server.Mono.exe the default is /usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe -## JELLYFIN_DATA= #$JELLYFIN_DATA, the location of Jellyfin data, cache, logs, the default is /var/lib/jellyfin -## JELLYFIN_PIDFILE= #$JELLYFIN_PIDFILE, the location of jellyfin.pid, the default is /var/run/jellyfin/jellyfin.pid -## JELLYFIN_ADD_OPTS= #$JELLYFIN_ADD_OPTS, additional options to pass to the Jellyfin executable, beyond ffmpeg, ffprobe and restart -## MONO_BIN= #$MONO_BIN, full path of mono binary, the default is /usr/bin/mono-sgen -## MONO_OPTS= #$MONO_OPTS, list of additional options to pass to mono binary -## MONO_ENV= #$MONO_ENV, list of environment variables for running mono binary -## -## EXAMPLE if want to run as different user -## add JELLYFIN_USER=username to /etc/jellyfin.conf -## otherwise default jellyfin is used +# +# General options +# -JELLYFIN_USER="jellyfin" -JELLYFIN_GROUP="jellyfin" -JELLYFIN_DIR="/usr/lib/jellyfin" -JELLYFIN_BIN="/usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe" +# Path to the jellyfin.dll executable +JELLYFIN_EXE="/usr/lib/jellyfin/bin/jellyfin.dll" +# Data directory JELLYFIN_DATA="/var/lib/jellyfin" -JELLYFIN_PIDFILE="/var/run/jellyfin.pid" +# Restart script for in-app server control +JELLYFIN_RESTART_SCRIPT="/usr/lib/jellyfin/restart.sh" +# Additional options for the binary JELLYFIN_ADD_OPTS="" -MONO_BIN="/usr/bin/mono-sgen" -MONO_OPTS="--optimize=all" -MONO_ENV="MONO_THREADS_PER_CPU=250 MONO_GC_PARAMS=nursery-size=128m" -UMASK="002" + +# +# SysV init/Upstart options +# + +# Application username +JELLYFIN_USER="jellyfin" +# .NET Core runtime binary +JELLYFIN_DOTNET="/usr/bin/dotnet" +# Full application command +JELLYFIN_COMMAND="$JELLYFIN_EXE -programdata $JELLYFIN_DATA -restartpath $JELLYFIN_RESTART_SCRIPT $JELLYFIN_ADD_OPTS" diff --git a/debian/conf/jellyfin.conf b/debian/conf/jellyfin.conf deleted file mode 100644 index ef5c424e8..000000000 --- a/debian/conf/jellyfin.conf +++ /dev/null @@ -1,24 +0,0 @@ -# Override defaults for jellyfin initscript -# sourced by /etc/init.d/jellyfin and /usr/bin/jellyfin -# installed at /etc/jellyfin.conf by the maintainer scripts - -# -# This is a POSIX shell fragment -# - -## To change the defaults add any of the following settings below the comments -## -## JELLYFIN_USER= #$JELLYFIN_USER, username to run Jellyfin under, the default is jellyfin -## JELLYFIN_GROUP= #$JELLYFIN_GROUP, Jellyfin group where Jellyfin user belongs -## JELLYFIN_DIR= #$JELLYFIN_DIR, the location of Jellyfin program files the default is /usr/lib/jellyfin -## JELLYFIN_BIN= #$JELLYFIN_BIN, full path of MediaBrowser.Server.Mono.exe the default is /usr/lib/jellyfin/bin/MediaBrowser.Server.Mono.exe -## JELLYFIN_DATA= #$JELLYFIN_DATA, the location of Jellyfin data, cache, logs, the default is /var/lib/jellyfin -## JELLYFIN_PIDFILE= #$JELLYFIN_PIDFILE, the location of jellyfin.pid, the default is /var/run/jellyfin/jellyfin.pid -## JELLYFIN_ADD_OPTS= #$JELLYFIN_ADD_OPTS, additional options to pass to the Jellyfin executable, beyond ffmpeg, ffprobe and restart -## MONO_BIN= #$MONO_BIN, full path of mono binary, the default is /usr/bin/mono-sgen -## MONO_OPTS= #$MONO_OPTS, list of additional options to pass to mono binary -## MONO_ENV= #$MONO_ENV, list of environment variables for running mono binary -## -## EXAMPLE if want to run as different user -## add JELLYFIN_USER=username -## otherwise default jellyfin is used diff --git a/debian/conf/jellyfin.service.conf b/debian/conf/jellyfin.service.conf new file mode 100644 index 000000000..1b69dd74e --- /dev/null +++ b/debian/conf/jellyfin.service.conf @@ -0,0 +1,7 @@ +# Jellyfin systemd configuration options + +# Use this file to override the user or environment file location. + +[Service] +#User = jellyfin +#EnvironmentFile = /etc/default/jellyfin diff --git a/debian/install b/debian/install index a45091a3c..bc26f9f09 100644 --- a/debian/install +++ b/debian/install @@ -1,5 +1,5 @@ usr/lib/jellyfin usr/lib/ -debian/conf/jellyfin.conf etc/ debian/conf/jellyfin etc/default/ +debian/conf/jellyfin.service.conf etc/systemd/system/jellyfin.service.d/ debian/bin/jellyfin-sudoers etc/sudoers.d/ debian/bin/restart.sh usr/lib/jellyfin/ diff --git a/debian/jellyfin.init b/debian/jellyfin.init index 4f23e13f0..18c7d02a1 100644 --- a/debian/jellyfin.init +++ b/debian/jellyfin.init @@ -9,13 +9,14 @@ ### END INIT INFO # Carry out specific functions when asked to by the system -pid=`ps -fA|grep dotnet|grep JellyfinServer|awk '{print $2}'| tr -d '\n'` +pid=`ps -fA|grep dotnet|grep jellyfin|awk '{print $2}'| tr -d '\n'` case "$1" in start) if [ "$pid" == "" ]; then echo "Starting Jellyfin..." - nohup dotnet /usr/lib/jellyfin/bin/EmbyServer.dll >/dev/null 2>&1 & + . /etc/default/jellyfin + nohup su -u $JELLYFIN_USER -c $JELLYFIN_DOTNET $JELLYFIN_COMMAND else echo "Jellyfin already running" fi diff --git a/debian/jellyfin.service b/debian/jellyfin.service index 751d19f89..982608a7e 100644 --- a/debian/jellyfin.service +++ b/debian/jellyfin.service @@ -1,12 +1,14 @@ [Unit] -Description=Jellyfin Media Server -After=network.target +Description = Jellyfin Media Server +After = network.target [Service] -User=jellyfin -ExecStart=/usr/bin/dotnet /usr/lib/jellyfin/bin/EmbyServer.dll -Restart=on-abort -TimeoutSec=20 +Type = simple +EnvironmentFile = /etc/default/jellyfin +User = jellyfin +ExecStart = /usr/bin/dotnet ${JELLYFIN_EXE} -programdata ${JELLYFIN_DATA} -restartpath ${JELLYFIN_RESTART_SCRIPT} ${JELLYFIN_ADD_OPTS} +Restart = on-abort +TimeoutSec = 20 [Install] -WantedBy=multi-user.target +WantedBy = multi-user.target diff --git a/debian/jellyfin.upstart b/debian/jellyfin.upstart index ea7831ac0..ebbceaf57 100644 --- a/debian/jellyfin.upstart +++ b/debian/jellyfin.upstart @@ -15,6 +15,6 @@ script # Log file logger -t "$0" "DEBUG: `set`" - exec /usr/bin/jellyfin start - exec /usr/bin/dotnet /usr/lib/jellyfin/bin/EmbyServer.dll + . /etc/default/jellyfin + exec su -u $JELLYFIN_USER -c $JELLYFIN_DOTNET $JELLYFIN_COMMAND end script diff --git a/debian/rules b/debian/rules index 864b64f6f..eddf9b9ba 100755 --- a/debian/rules +++ b/debian/rules @@ -15,7 +15,6 @@ override_dh_auto_test: override_dh_clistrip: override_dh_auto_build: - dotnet build --configuration $(CONFIG) $(CURDIR)/MediaBrowser.sln --output='$(CURDIR)/usr/lib/jellyfin/bin' dotnet publish --configuration $(CONFIG) $(CURDIR)/MediaBrowser.sln --output='$(CURDIR)/usr/lib/jellyfin/bin' override_dh_auto_clean: diff --git a/tests/BDInfo.Test/BDInfo.Test.csproj b/tests/BDInfo.Test/BDInfo.Test.csproj new file mode 100644 index 000000000..f0438f394 --- /dev/null +++ b/tests/BDInfo.Test/BDInfo.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\BDInfo\BDInfo.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/BDInfo.Test/UnitTest1.cs b/tests/BDInfo.Test/UnitTest1.cs new file mode 100644 index 000000000..8295a0cf2 --- /dev/null +++ b/tests/BDInfo.Test/UnitTest1.cs @@ -0,0 +1,14 @@ +using NUnit.Framework; + +namespace BDInfo.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/DvdLib.Test/DvdLib.Test.csproj b/tests/DvdLib.Test/DvdLib.Test.csproj new file mode 100644 index 000000000..0fe8602bf --- /dev/null +++ b/tests/DvdLib.Test/DvdLib.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\DvdLib\DvdLib.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/DvdLib.Test/UnitTest1.cs b/tests/DvdLib.Test/UnitTest1.cs new file mode 100644 index 000000000..7328ccaf3 --- /dev/null +++ b/tests/DvdLib.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace DvdLib.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/IsoMounter.Test/IsoMounter.Test.csproj b/tests/IsoMounter.Test/IsoMounter.Test.csproj new file mode 100644 index 000000000..f5b51267f --- /dev/null +++ b/tests/IsoMounter.Test/IsoMounter.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.IsoMounting\IsoMounter\IsoMounter.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/IsoMounter.Test/UnitTest1.cs b/tests/IsoMounter.Test/UnitTest1.cs new file mode 100644 index 000000000..26e2807b1 --- /dev/null +++ b/tests/IsoMounter.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace IsoMounter.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Api.Test/Jellyfin.Api.Test.csproj b/tests/Jellyfin.Api.Test/Jellyfin.Api.Test.csproj new file mode 100644 index 000000000..fd757001d --- /dev/null +++ b/tests/Jellyfin.Api.Test/Jellyfin.Api.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\MediaBrowser.Api\MediaBrowser.Api.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Api.Test/UnitTest1.cs b/tests/Jellyfin.Api.Test/UnitTest1.cs new file mode 100644 index 000000000..781556758 --- /dev/null +++ b/tests/Jellyfin.Api.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Api.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Common.Test/Jellyfin.Common.Test.csproj b/tests/Jellyfin.Common.Test/Jellyfin.Common.Test.csproj new file mode 100644 index 000000000..f7267a9da --- /dev/null +++ b/tests/Jellyfin.Common.Test/Jellyfin.Common.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\MediaBrowser.Common\MediaBrowser.Common.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Common.Test/UnitTest1.cs b/tests/Jellyfin.Common.Test/UnitTest1.cs new file mode 100644 index 000000000..8f15221a2 --- /dev/null +++ b/tests/Jellyfin.Common.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Common.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Controller.Test/Jellyfin.Controller.Test.csproj b/tests/Jellyfin.Controller.Test/Jellyfin.Controller.Test.csproj new file mode 100644 index 000000000..707174c2d --- /dev/null +++ b/tests/Jellyfin.Controller.Test/Jellyfin.Controller.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\MediaBrowser.Controller\MediaBrowser.Controller.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Controller.Test/UnitTest1.cs b/tests/Jellyfin.Controller.Test/UnitTest1.cs new file mode 100644 index 000000000..4d8ad2169 --- /dev/null +++ b/tests/Jellyfin.Controller.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Controller.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Dlna.Test/Jellyfin.Dlna.Test.csproj b/tests/Jellyfin.Dlna.Test/Jellyfin.Dlna.Test.csproj new file mode 100644 index 000000000..f457544a6 --- /dev/null +++ b/tests/Jellyfin.Dlna.Test/Jellyfin.Dlna.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.Dlna\Emby.Dlna.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Dlna.Test/UnitTest1.cs b/tests/Jellyfin.Dlna.Test/UnitTest1.cs new file mode 100644 index 000000000..13ebfc68f --- /dev/null +++ b/tests/Jellyfin.Dlna.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Dlna.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Drawing.ImageMagick.Test/Jellyfin.Drawing.ImageMagick.Test.csproj b/tests/Jellyfin.Drawing.ImageMagick.Test/Jellyfin.Drawing.ImageMagick.Test.csproj new file mode 100644 index 000000000..63ece8021 --- /dev/null +++ b/tests/Jellyfin.Drawing.ImageMagick.Test/Jellyfin.Drawing.ImageMagick.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.Drawing.ImageMagick\Emby.Drawing.ImageMagick.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Drawing.ImageMagick.Test/UnitTest1.cs b/tests/Jellyfin.Drawing.ImageMagick.Test/UnitTest1.cs new file mode 100644 index 000000000..d38c4a681 --- /dev/null +++ b/tests/Jellyfin.Drawing.ImageMagick.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Drawing.ImageMagick.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Drawing.Skia.Test/Jellyfin.Drawing.Skia.Test.csproj b/tests/Jellyfin.Drawing.Skia.Test/Jellyfin.Drawing.Skia.Test.csproj new file mode 100644 index 000000000..180203b63 --- /dev/null +++ b/tests/Jellyfin.Drawing.Skia.Test/Jellyfin.Drawing.Skia.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.Drawing.Skia\Emby.Drawing.Skia.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Drawing.Skia.Test/UnitTest1.cs b/tests/Jellyfin.Drawing.Skia.Test/UnitTest1.cs new file mode 100644 index 000000000..1d9f63fb7 --- /dev/null +++ b/tests/Jellyfin.Drawing.Skia.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Drawing.Skia.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Drawing.Test/Jellyfin.Drawing.Test.csproj b/tests/Jellyfin.Drawing.Test/Jellyfin.Drawing.Test.csproj new file mode 100644 index 000000000..66911e86f --- /dev/null +++ b/tests/Jellyfin.Drawing.Test/Jellyfin.Drawing.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.Drawing\Emby.Drawing.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Drawing.Test/UnitTest1.cs b/tests/Jellyfin.Drawing.Test/UnitTest1.cs new file mode 100644 index 000000000..49e750972 --- /dev/null +++ b/tests/Jellyfin.Drawing.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Drawing.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.LocalMetadata.Test/Jellyfin.LocalMetadata.Test.csproj b/tests/Jellyfin.LocalMetadata.Test/Jellyfin.LocalMetadata.Test.csproj new file mode 100644 index 000000000..3a53de317 --- /dev/null +++ b/tests/Jellyfin.LocalMetadata.Test/Jellyfin.LocalMetadata.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\MediaBrowser.LocalMetadata\MediaBrowser.LocalMetadata.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.LocalMetadata.Test/UnitTest1.cs b/tests/Jellyfin.LocalMetadata.Test/UnitTest1.cs new file mode 100644 index 000000000..27e3d21c1 --- /dev/null +++ b/tests/Jellyfin.LocalMetadata.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.LocalMetadata.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Model.Test/Jellyfin.Model.Test.csproj b/tests/Jellyfin.Model.Test/Jellyfin.Model.Test.csproj new file mode 100644 index 000000000..fdf65127d --- /dev/null +++ b/tests/Jellyfin.Model.Test/Jellyfin.Model.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\MediaBrowser.Model\MediaBrowser.Model.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Model.Test/UnitTest1.cs b/tests/Jellyfin.Model.Test/UnitTest1.cs new file mode 100644 index 000000000..4e31c7af1 --- /dev/null +++ b/tests/Jellyfin.Model.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Model.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Naming.Test/Jellyfin.Naming.Test.csproj b/tests/Jellyfin.Naming.Test/Jellyfin.Naming.Test.csproj new file mode 100644 index 000000000..ad192467f --- /dev/null +++ b/tests/Jellyfin.Naming.Test/Jellyfin.Naming.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.Naming\Emby.Naming.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Naming.Test/UnitTest1.cs b/tests/Jellyfin.Naming.Test/UnitTest1.cs new file mode 100644 index 000000000..1f2233e95 --- /dev/null +++ b/tests/Jellyfin.Naming.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Naming.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Notifications.Test/Jellyfin.Notifications.Test.csproj b/tests/Jellyfin.Notifications.Test/Jellyfin.Notifications.Test.csproj new file mode 100644 index 000000000..e3fd48975 --- /dev/null +++ b/tests/Jellyfin.Notifications.Test/Jellyfin.Notifications.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.Notifications\Emby.Notifications.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Notifications.Test/UnitTest1.cs b/tests/Jellyfin.Notifications.Test/UnitTest1.cs new file mode 100644 index 000000000..80ecc4434 --- /dev/null +++ b/tests/Jellyfin.Notifications.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Notifications.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Photos.Test/Jellyfin.Photos.Test.csproj b/tests/Jellyfin.Photos.Test/Jellyfin.Photos.Test.csproj new file mode 100644 index 000000000..09eafca22 --- /dev/null +++ b/tests/Jellyfin.Photos.Test/Jellyfin.Photos.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.Photos\Emby.Photos.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Photos.Test/UnitTest1.cs b/tests/Jellyfin.Photos.Test/UnitTest1.cs new file mode 100644 index 000000000..56b52973e --- /dev/null +++ b/tests/Jellyfin.Photos.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Photos.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Providers.Test/Jellyfin.Providers.Test.csproj b/tests/Jellyfin.Providers.Test/Jellyfin.Providers.Test.csproj new file mode 100644 index 000000000..e1f49fed2 --- /dev/null +++ b/tests/Jellyfin.Providers.Test/Jellyfin.Providers.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\MediaBrowser.Providers\MediaBrowser.Providers.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Providers.Test/UnitTest1.cs b/tests/Jellyfin.Providers.Test/UnitTest1.cs new file mode 100644 index 000000000..4216c7a9b --- /dev/null +++ b/tests/Jellyfin.Providers.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Providers.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Server.Implementations.Test/Jellyfin.Server.Implementations.Test.csproj b/tests/Jellyfin.Server.Implementations.Test/Jellyfin.Server.Implementations.Test.csproj new file mode 100644 index 000000000..1ae578cd7 --- /dev/null +++ b/tests/Jellyfin.Server.Implementations.Test/Jellyfin.Server.Implementations.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.Server.Implementations\Emby.Server.Implementations.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Server.Implementations.Test/UnitTest1.cs b/tests/Jellyfin.Server.Implementations.Test/UnitTest1.cs new file mode 100644 index 000000000..cce8b5e36 --- /dev/null +++ b/tests/Jellyfin.Server.Implementations.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Server.Implementations.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.Test/Jellyfin.Test.csproj b/tests/Jellyfin.Test/Jellyfin.Test.csproj new file mode 100644 index 000000000..8b94543e7 --- /dev/null +++ b/tests/Jellyfin.Test/Jellyfin.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\MediaBrowser.Server.Mono\EmbyServer.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.Test/UnitTest1.cs b/tests/Jellyfin.Test/UnitTest1.cs new file mode 100644 index 000000000..0a5dd72b6 --- /dev/null +++ b/tests/Jellyfin.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.WebDashboard.Test/Jellyfin.WebDashboard.Test.csproj b/tests/Jellyfin.WebDashboard.Test/Jellyfin.WebDashboard.Test.csproj new file mode 100644 index 000000000..762b718a6 --- /dev/null +++ b/tests/Jellyfin.WebDashboard.Test/Jellyfin.WebDashboard.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\MediaBrowser.WebDashboard\MediaBrowser.WebDashboard.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.WebDashboard.Test/UnitTest1.cs b/tests/Jellyfin.WebDashboard.Test/UnitTest1.cs new file mode 100644 index 000000000..a636cb340 --- /dev/null +++ b/tests/Jellyfin.WebDashboard.Test/UnitTest1.cs @@ -0,0 +1,14 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.WebDashboard.Test +{ + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.XbmcMetadata.Test/Jellyfin.XbmcMetadata.Test.csproj b/tests/Jellyfin.XbmcMetadata.Test/Jellyfin.XbmcMetadata.Test.csproj new file mode 100644 index 000000000..499dc1383 --- /dev/null +++ b/tests/Jellyfin.XbmcMetadata.Test/Jellyfin.XbmcMetadata.Test.csproj @@ -0,0 +1,23 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\MediaBrowser.XbmcMetadata\MediaBrowser.XbmcMetadata.csproj" /> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.XbmcMetadata.Test/UnitTest1.cs b/tests/Jellyfin.XbmcMetadata.Test/UnitTest1.cs new file mode 100644 index 000000000..435c7e417 --- /dev/null +++ b/tests/Jellyfin.XbmcMetadata.Test/UnitTest1.cs @@ -0,0 +1,15 @@ +using System; +using NUnit.Framework; + +namespace Jellyfin.XbmcMetadata.Test +{ + [TestFixture] + public class UnitTest1 + { + [Test] + public void Test1() + { + Assert.That(true, Is.True); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.XmlTv.Test/Jellyfin.XmlTv.Test.csproj b/tests/Jellyfin.XmlTv.Test/Jellyfin.XmlTv.Test.csproj new file mode 100644 index 000000000..6740a65c9 --- /dev/null +++ b/tests/Jellyfin.XmlTv.Test/Jellyfin.XmlTv.Test.csproj @@ -0,0 +1,29 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.1</TargetFramework> + + <IsPackable>false</IsPackable> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="AutoFixture" Version="4.6.0" /> + <PackageReference Include="AutoFixture.AutoMoq" Version="4.6.0" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" /> + <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" /> + <PackageReference Include="Moq" Version="4.10.1" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\..\Emby.XmlTv\Emby.XmlTv\Emby.XmlTv.csproj" /> + </ItemGroup> + + <ItemGroup> + <Content Include="XmlFiles\*"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + </ItemGroup> + +</Project> diff --git a/tests/Jellyfin.XmlTv.Test/XmlTvReaderDateTimeTests.cs b/tests/Jellyfin.XmlTv.Test/XmlTvReaderDateTimeTests.cs new file mode 100644 index 000000000..12ddec713 --- /dev/null +++ b/tests/Jellyfin.XmlTv.Test/XmlTvReaderDateTimeTests.cs @@ -0,0 +1,88 @@ +using System; +using System.IO; +using Emby.XmlTv.Classes; +using NUnit.Framework; + +namespace Jellyfin.XmlTv.Test +{ + [TestFixture] + public class XmlTvReaderDateTimeTests + { + private string _testFilePath; + + [SetUp] + public void BeforeEachTest() + { + _testFilePath = Path.GetFullPath(Path.Combine("XmlFiles", "MultilanguageData.xml")); + } + + [Test] + public void ShouldHandlePartDates() + { + var reader = new XmlTvReader(_testFilePath, "es"); + + Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("2016")); + Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("201601")); + Assert.AreEqual(Parse("01 Jan 2016 00:00:00"), reader.ParseDate("20160101")); + Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("2016010112")); + Assert.AreEqual(Parse("01 Jan 2016 12:34:00"), reader.ParseDate("201601011234")); + Assert.AreEqual(Parse("01 Jan 2016 12:34:56"), reader.ParseDate("20160101123456")); + } + + [Test] + public void ShouldHandleDateWithOffset() + { + var reader = new XmlTvReader(_testFilePath, "es"); + + // parse variations on 1:00AM + Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +0000")); + Assert.AreEqual(Parse("01 Jan 2016 02:00:00"), reader.ParseDate("20160101120000 +1000")); + Assert.AreEqual(Parse("01 Jan 2016 11:00:00"), reader.ParseDate("20160101120000 +0100")); + Assert.AreEqual(Parse("01 Jan 2016 11:50:00"), reader.ParseDate("20160101120000 +0010")); + Assert.AreEqual(Parse("01 Jan 2016 11:59:00"), reader.ParseDate("20160101120000 +0001")); + + Assert.AreEqual(Parse("01 Jan 2016 22:00:00"), reader.ParseDate("20160101120000 -1000")); + Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("20160101120000 -0100")); + Assert.AreEqual(Parse("01 Jan 2016 12:10:00"), reader.ParseDate("20160101120000 -0010")); + Assert.AreEqual(Parse("01 Jan 2016 12:01:00"), reader.ParseDate("20160101120000 -0001")); + } + + [Test] + public void ShouldHandlePartDatesWithOffset() + { + var reader = new XmlTvReader(_testFilePath, "es"); + + Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("2016 -0100")); + Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("201601 -0100")); + Assert.AreEqual(Parse("01 Jan 2016 01:00:00"), reader.ParseDate("20160101 -0100")); + Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("2016010112 -0100")); + Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("201601011200 -0100")); + Assert.AreEqual(Parse("01 Jan 2016 13:00:00"), reader.ParseDate("20160101120000 -0100")); + } + + [Test] + public void ShouldHandleSpaces() + { + var reader = new XmlTvReader(_testFilePath, "es"); + + // parse variations on 1:00AM + Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +000")); + Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +00")); + Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 +0")); + } + + [Test] + public void ShouldHandleSpaces2() + { + var reader = new XmlTvReader(_testFilePath, "es"); + + // parse variations on 1:00AM + Assert.AreEqual(Parse("01 Jan 2016 12:00:00"), reader.ParseDate("20160101120000 0")); + } + + private static DateTimeOffset Parse(string value) + { + return new DateTimeOffset(DateTimeOffset.Parse(value).Ticks, TimeSpan.Zero); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.XmlTv.Test/XmlTvReaderLanguageTests.cs b/tests/Jellyfin.XmlTv.Test/XmlTvReaderLanguageTests.cs new file mode 100644 index 000000000..145ab2598 --- /dev/null +++ b/tests/Jellyfin.XmlTv.Test/XmlTvReaderLanguageTests.cs @@ -0,0 +1,173 @@ +using System; +using System.IO; +using System.Linq; +using System.Threading; +using Emby.XmlTv.Classes; +using NUnit.Framework; + +namespace Jellyfin.XmlTv.Test +{ + [TestFixture] + public class XmlTvReaderLanguageTests + { + private string _testFilePath; + + [SetUp] + public void BeforeEachTest() + { + _testFilePath = Path.GetFullPath(Path.Combine("XmlFiles", "MultilanguageData.xml")); + } + + /* + <title lang="es">Homes Under the Hammer - Spanish</title> + <title lang="es">Homes Under the Hammer - Spanish 2</title> + <title lang="en">Homes Under the Hammer - English</title> + <title lang="en">Homes Under the Hammer - English 2</title> + <title lang="">Homes Under the Hammer - Empty Language</title> + <title lang="">Homes Under the Hammer - Empty Language 2</title> + <title>Homes Under the Hammer - No Language</title> + <title>Homes Under the Hammer - No Language 2</title> + */ + + /* Expected Behaviour: + - Language = Null Homes Under the Hammer - No Language + - Language = "" Homes Under the Hammer - No Language + - Language = es Homes Under the Hammer - Spanish + - Language = en Homes Under the Hammer - English + */ + + [Test] + public void Should_Return_The_First_Matching_Language_ES() + { + var reader = new XmlTvReader(_testFilePath, "es"); + var channel = reader.GetChannels().FirstOrDefault(); + Assert.IsNotNull(channel); + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault(); + + Assert.IsNotNull(programme); + Assert.AreEqual("Homes Under the Hammer - Spanish", programme.Title); + Assert.AreEqual(1, programme.Categories.Count); + Assert.AreEqual("Property - Spanish", programme.Categories[0]); + } + + [Test] + public void Should_Return_The_First_Matching_Language_EN() + { + var reader = new XmlTvReader(_testFilePath, "en"); + + var channel = reader.GetChannels().FirstOrDefault(); + Assert.IsNotNull(channel); + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault(); + + Assert.IsNotNull(programme); + Assert.AreEqual("Homes Under the Hammer - English", programme.Title); + Assert.AreEqual(1, programme.Categories.Count); + Assert.AreEqual("Property - English", programme.Categories[0]); + } + + [Test] + public void Should_Return_The_First_Matching_With_No_Language() + { + var reader = new XmlTvReader(_testFilePath, null); + + var channel = reader.GetChannels().FirstOrDefault(); + Assert.IsNotNull(channel); + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault(); + + Assert.IsNotNull(programme); + Assert.AreEqual("Homes Under the Hammer - No Language", programme.Title); + Assert.AreEqual(1, programme.Categories.Count); + Assert.AreEqual("Property - No Language", programme.Categories[0]); + } + + [Test] + public void Should_Return_The_First_Matching_With_Empty_Language() + { + var reader = new XmlTvReader(_testFilePath, String.Empty); + + var channel = reader.GetChannels().FirstOrDefault(); + Assert.IsNotNull(channel); + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).FirstOrDefault(); + + Assert.IsNotNull(programme); + Assert.AreEqual("Homes Under the Hammer - Empty Language", programme.Title); + Assert.AreEqual(1, programme.Categories.Count); + Assert.AreEqual("Property - Empty Language", programme.Categories[0]); + } + + [Test] + public void Should_Return_The_First_When_NoMatchFound() + { + var reader = new XmlTvReader(_testFilePath, "es"); // There are no titles or categories for spanish + + var channel = reader.GetChannels().FirstOrDefault(); + Assert.IsNotNull(channel); + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).Skip(1).FirstOrDefault(); + + Assert.IsNotNull(programme); + Assert.AreEqual("Homes Under the Hammer - English", programme.Title); + + // Should return all categories + Assert.AreEqual(2, programme.Categories.Count); + Assert.IsTrue(programme.Categories.Contains("Property - English")); + Assert.IsTrue(programme.Categories.Contains("Property - Empty Language")); + } + + [Test] + public void Should_Return_The_First_When_NoLanguage() + { + var reader = new XmlTvReader(_testFilePath, null); + + var channel = reader.GetChannels().FirstOrDefault(); + Assert.IsNotNull(channel); + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programme = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).Skip(1).FirstOrDefault(); + + Assert.IsNotNull(programme); + Assert.AreEqual("Homes Under the Hammer - English", programme.Title); // Should return the first in the list + + // Should return all categories + Assert.AreEqual(2, programme.Categories.Count); + Assert.IsTrue(programme.Categories.Contains("Property - English")); + Assert.IsTrue(programme.Categories.Contains("Property - Empty Language")); + } + + [Test] + public void Should_Return_All_Languages() + { + var reader = new XmlTvReader(_testFilePath); + var cancellationToken = new CancellationToken(); + + var results = reader.GetLanguages(cancellationToken); + Assert.IsNotNull(results); + + foreach (var result in results) + { + Console.WriteLine("{0} - {1}", result.Name, result.Relevance); + } + + Assert.AreEqual(2, results.Count); + Assert.AreEqual("en", results[0].Name); + Assert.AreEqual(11, results[0].Relevance); + Assert.AreEqual("es", results[1].Name); + Assert.AreEqual(3, results[1].Relevance); + } + } +}
\ No newline at end of file diff --git a/tests/Jellyfin.XmlTv.Test/XmlTvReaderTests.cs b/tests/Jellyfin.XmlTv.Test/XmlTvReaderTests.cs new file mode 100644 index 000000000..d44081970 --- /dev/null +++ b/tests/Jellyfin.XmlTv.Test/XmlTvReaderTests.cs @@ -0,0 +1,217 @@ +using System; +using System.IO; +using System.Linq; +using System.Threading; +using Emby.XmlTv.Classes; +using NUnit.Framework; + +namespace Jellyfin.XmlTv.Test +{ + [TestFixture] + public class XmlTvReaderTests + { + private string _ukDataPath; + private string _esDataPath; + private string _honeybeeDataPath; + + [SetUp] + public void BeforeEachTest() + { + _ukDataPath = Path.GetFullPath(Path.Combine("XmlFiles", "UK_Data.xml")); + _esDataPath = Path.GetFullPath(Path.Combine("XmlFiles", "ES_MultiLanguageData.xml")); + _honeybeeDataPath = Path.GetFullPath(Path.Combine("XmlFiles", "honeybee.xml")); + } + + [Test] + public void UK_DataTest_ChannelsTest() + { + var reader = new XmlTvReader(_ukDataPath); + + var channels = reader.GetChannels().ToList(); + Assert.AreEqual(5, channels.Count); + + // Check each channel + var channel = channels.SingleOrDefault(c => c.Id == "UK_RT_2667"); + Assert.IsNotNull(channel); + Assert.AreEqual("BBC1 HD", channel.DisplayName); + Assert.AreEqual("7.1", channel.Number); + Assert.IsNotNull(channel.Icon); + Assert.AreEqual("Logo_UK_RT_2667", channel.Icon.Source); + Assert.AreEqual(100, channel.Icon.Width); + Assert.AreEqual(200, channel.Icon.Height); + + channel = channels.SingleOrDefault(c => c.Id == "UK_RT_105"); + Assert.IsNotNull(channel); + Assert.AreEqual("BBC2", channel.DisplayName); + Assert.IsNotNull(channel.Icon); + Assert.AreEqual("Logo_UK_RT_105", channel.Icon.Source); + Assert.IsFalse(channel.Icon.Width.HasValue); + Assert.IsFalse(channel.Icon.Height.HasValue); + + channel = channels.SingleOrDefault(c => c.Id == "UK_RT_2118"); + Assert.IsNotNull(channel); + Assert.AreEqual("ITV1 HD", channel.DisplayName); + Assert.IsNotNull(channel.Icon); + Assert.AreEqual("Logo_UK_RT_2118", channel.Icon.Source); + Assert.AreEqual(100, channel.Icon.Width); + Assert.IsFalse(channel.Icon.Height.HasValue); + + channel = channels.SingleOrDefault(c => c.Id == "UK_RT_2056"); + Assert.IsNotNull(channel); + Assert.AreEqual("Channel 4 HD", channel.DisplayName); + Assert.IsNotNull(channel.Icon); + Assert.AreEqual("Logo_UK_RT_2056", channel.Icon.Source); + Assert.IsFalse(channel.Icon.Width.HasValue); + Assert.AreEqual(200, channel.Icon.Height); + + channel = channels.SingleOrDefault(c => c.Id == "UK_RT_134"); + Assert.IsNotNull(channel); + Assert.AreEqual("Channel 5", channel.DisplayName); + Assert.IsNull(channel.Icon); + } + + [Test] + public void UK_DataTest_GeneralTest() + { + var reader = new XmlTvReader(_ukDataPath, null); + + var channels = reader.GetChannels().ToList(); + Assert.AreEqual(5, channels.Count); + + // Pick a channel to check the data for + var channel = channels.SingleOrDefault(c => c.Id == "UK_RT_2056"); + Assert.IsNotNull(channel); + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programmes = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).ToList(); + + Assert.AreEqual(27, programmes.Count); + var programme = programmes.SingleOrDefault(p => p.Title == "The Secret Life of"); + + Assert.IsNotNull(programme); + Assert.AreEqual(new DateTime(2015, 11, 26, 20, 0, 0), programme.StartDate); + Assert.AreEqual(new DateTime(2015, 11, 26, 21, 0, 0), programme.EndDate); + Assert.AreEqual("Cameras follow the youngsters' development after two weeks apart and time has made the heart grow fonder for Alfie and Emily, who are clearly happy to be back together. And although Alfie struggled to empathise with the rest of his peers before, a painting competition proves to be a turning point for him. George takes the children's rejection of his family recipe to heart, but goes on to triumph elsewhere, and romance is in the air when newcomer Sienna captures Arthur's heart.", programme.Description); + Assert.AreEqual("Documentary", programme.Categories.Single()); + Assert.IsNotNull(programme.Episode); + Assert.AreEqual("The Secret Life of 5 Year Olds", programme.Episode.Title); + Assert.AreEqual(1, programme.Episode.Series); + Assert.IsNull(programme.Episode.SeriesCount); + Assert.AreEqual(4, programme.Episode.Episode); + Assert.AreEqual(6, programme.Episode.EpisodeCount); + Assert.IsNotNull(programme.Premiere); + //Assert.AreEqual("First showing on national terrestrial TV", programme.Premiere.Details); + Assert.IsTrue(programme.IsNew); + } + + [Test] + public void UK_DataTest_MultipleTitles_SameLanguage_Should_ReturnFirstValue() + { + var reader = new XmlTvReader(_ukDataPath, null); + + /* + <title lang="en">Homes Under the Hammer - Title 1</title> + <title lang="en">Homes Under the Hammer - Title 2</title> + <title lang="en">Homes Under the Hammer - Title 3</title> + */ + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programmes = reader.GetProgrammes("UK_RT_2667", startDate, startDate.AddDays(1), cancellationToken).ToList(); + var programme = programmes.SingleOrDefault(p => p.Title == "Homes Under the Hammer - Title 1"); + + Assert.IsNotNull(programme); + } + + [Test] + public void UK_DataTest_MultipleTitles_NoLanguage_Should_ReturnFirstValue() + { + var reader = new XmlTvReader(_ukDataPath, null); + + /* + <title>Oxford Street Revealed - Title 1</title> + <title>Oxford Street Revealed - Title 2</title> + <title>Oxford Street Revealed - Title 3</title> + */ + + var startDate = new DateTime(2015, 11, 26); + var cancellationToken = new CancellationToken(); + var programmes = reader.GetProgrammes("UK_RT_2667", startDate, startDate.AddDays(1), cancellationToken).ToList(); + var programme = programmes.SingleOrDefault(p => p.Title == "Oxford Street Revealed - Title 1"); + + Assert.IsNotNull(programme); + } + + [Test] + public void ES_MultiLanguageDataTest() + { + var reader = new XmlTvReader(_esDataPath, "es"); // Specify the spanish language explicitly + + var channels = reader.GetChannels().ToList(); + Assert.AreEqual(141, channels.Count); + + // Pick a channel to check the data for + var channel = channels.SingleOrDefault(c => c.Id == "Canal + HD" && c.DisplayName == "Canal + HD"); + Assert.IsNotNull(channel); + + var startDate = new DateTime(2016, 02, 18); + var cancellationToken = new CancellationToken(); + var programmes = reader.GetProgrammes(channel.Id, startDate, startDate.AddDays(1), cancellationToken).ToList(); + + Assert.AreEqual(22, programmes.Count); + var programme = programmes.SingleOrDefault(p => p.Title == "This is Comedy. Judd Apatow & Co."); + + /* + <programme start="20160218055100 +0100" stop="20160218065400 +0100" channel="Canal + HD"> + <title lang="es">This is Comedy. Judd Apatow & Co.</title> + <title lang="en">This is Comedy</title> + <desc lang="es">El resurgir creativo de la comedia estadounidense en los últimos 15 años ha tenido un nombre indiscutible, Judd Apatow, y unos colaboradores indispensables, sus amigos (actores, cómicos, escritores) Jonah Hill, Steve Carrell, Paul Rudd, Seth Rogen, Lena Dunham... A través de extractos de sus filmes y de entrevistas a algunos los miembros de su 'banda' (Adam Sandler, Lena Dunham o Jason Segel), este documental muestra la carrera de un productor y director excepcional que ha sido capaz de llevar la risa a su máxima expresión</desc> + <credits> + <director>Jacky Goldberg</director> + </credits> + <date>2014</date> + <category lang="es">Documentales</category> + <category lang="es">Sociedad</category> + <icon src="http://www.plus.es/recorte/n/caratula4/F3027798" /> + <country>Francia</country> + <rating system="MPAA"> + <value>TV-G</value> + </rating> + <star-rating> + <value>3/5</value> + </star-rating> + </programme> + */ + + Assert.IsNotNull(programme); + Assert.AreEqual(new DateTime(2016, 02, 18, 4, 51, 0), programme.StartDate); + Assert.AreEqual(new DateTime(2016, 02, 18, 5, 54, 0), programme.EndDate); + Assert.AreEqual("El resurgir creativo de la comedia estadounidense en los últimos 15 años ha tenido un nombre indiscutible, Judd Apatow, y unos colaboradores indispensables, sus amigos (actores, cómicos, escritores) Jonah Hill, Steve Carrell, Paul Rudd, Seth Rogen, Lena Dunham... A través de extractos de sus filmes y de entrevistas a algunos los miembros de su 'banda' (Adam Sandler, Lena Dunham o Jason Segel), este documental muestra la carrera de un productor y director excepcional que ha sido capaz de llevar la risa a su máxima expresión", programme.Description); + Assert.AreEqual(2, programme.Categories.Count); + Assert.AreEqual("Documentales", programme.Categories[0]); + Assert.AreEqual("Sociedad", programme.Categories[1]); + Assert.IsNotNull(programme.Episode); + Assert.IsNull(programme.Episode.Episode); + Assert.IsNull(programme.Episode.EpisodeCount); + Assert.IsNull(programme.Episode.Part); + Assert.IsNull(programme.Episode.PartCount); + Assert.IsNull(programme.Episode.Series); + Assert.IsNull(programme.Episode.SeriesCount); + Assert.IsNull(programme.Episode.Title); + } + + [Test] + public void HoneybeeTest() + { + var reader = new XmlTvReader(_honeybeeDataPath, null); + + var channels = reader.GetChannels().ToList(); + Assert.AreEqual(16, channels.Count); + + var programs = reader.GetProgrammes("2013.honeybee.it", DateTime.UtcNow.AddYears(-1), + DateTime.UtcNow.AddYears(1), CancellationToken.None).ToList(); + Assert.AreEqual(297, programs.Count); + } + } +}
\ No newline at end of file |
