﻿<?xml version="1.0" encoding="utf-8"?>
<!--

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.

-->
<Project Sdk="Microsoft.NET.Sdk">

  <Import Project="$(SolutionDir)build/NuGet.props" />

  <PropertyGroup>
    <TargetFrameworks>netstandard2.1;netstandard2.0;</TargetFrameworks>
    <TargetFrameworks Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(TargetFrameworks);net451</TargetFrameworks>

    <AssemblyTitle>Lucene.Net.TestFramework</AssemblyTitle>
    <RootNamespace>Lucene.Net</RootNamespace>
    <Description>Framework for testing third-party code that uses the Lucene.Net API using NUnit.</Description>
    <PackageTags>$(PackageTags);testframework;test;framework;nunit</PackageTags>
    <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
    
    
    <NoWarn>$(NoWarn);1591;1573</NoWarn>
    <NoWarn Label="Collection initialization can be simplified">$(NoWarn);IDE0028</NoWarn>

    <DefineConstants>$(DefineConstants);TESTFRAMEWORK_NUNIT</DefineConstants>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="..\Lucene.Net.TestFramework.NUnit\Support\TestFramework\Assert.cs" Link="Support\TestFramework\Assert.cs" />
  </ItemGroup>
  
  <ItemGroup>
    <None Remove="Util\europarl.lines.txt.gz" />
    <EmbeddedResource Include="Util\europarl.lines.txt.gz" />
    <None Include="*.txt" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Lucene.Net.Analysis.Common\Lucene.Net.Analysis.Common.csproj" />
    <ProjectReference Include="..\Lucene.Net.Codecs\Lucene.Net.Codecs.csproj" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="J2N" Version="$(J2NPackageVersion)" />
    <PackageReference Include="NUnit" Version="$(NUnitPackageVersion)" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="$(MicrosoftExtensionsConfigurationPackageVersion)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="$(MicrosoftExtensionsConfigurationCommandLinePackageVersion)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="$(MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="$(MicrosoftExtensionsConfigurationJsonPackageVersion)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="$(MicrosoftExtensionsConfigurationXmlPackageVersion)" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.1'">
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="$(MicrosoftExtensionsConfigurationPackageVersion)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="$(MicrosoftExtensionsConfigurationCommandLinePackageVersion)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="$(MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="$(MicrosoftExtensionsConfigurationJsonPackageVersion)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="$(MicrosoftExtensionsConfigurationXmlPackageVersion)" />
  </ItemGroup>
  
  <ItemGroup Condition=" '$(TargetFramework)' == 'net451' ">
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="$(MicrosoftExtensionsConfigurationPackageVersion_NET4_5_1)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="$(MicrosoftExtensionsConfigurationCommandLinePackageVersion_NET4_5_1)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="$(MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion_NET4_5_1)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="$(MicrosoftExtensionsConfigurationJsonPackageVersion_NET4_5_1)" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="$(MicrosoftExtensionsConfigurationXmlPackageVersion_NET4_5_1)" />
  </ItemGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'net451' ">
    <Reference Include="System.IO.Compression" />
    <Reference Include="System.Numerics" />
    <Reference Include="System.ServiceModel" />
  </ItemGroup>
  
  <ItemGroup>
    <!--  Note that some of the APIs we use to test Lucene.Net are internal because they are only meant to
          make porting tests from Java easier. This means that every Lucene.Net test project requires
          InternalsVisibleTo, now and in the future to keep these APIs from public view. -->
    
    <InternalsVisibleTo Include="Lucene.Net.Tests._A-D" />
    <InternalsVisibleTo Include="Lucene.Net.Tests._E-I" />
    <InternalsVisibleTo Include="Lucene.Net.Tests._I-J" />
    <InternalsVisibleTo Include="Lucene.Net.Tests._J-S" />
    <InternalsVisibleTo Include="Lucene.Net.Tests._T-Z" />
    
    <InternalsVisibleTo Include="Lucene.Net.Tests.Analysis.Common" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Analysis.Kuromoji" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Analysis.Morfologik" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Analysis.OpenNLP" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Analysis.Phonetic" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Analysis.SmartCn" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Analysis.Stempel" />
    
    <InternalsVisibleTo Include="Lucene.Net.Tests.Benchmark" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Classification" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Cli" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Codecs" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Demo" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Expressions" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Facet" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Grouping" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Highlighter" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Join" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.ICU" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Memory" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Misc" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Queries" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.QueryParser" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Replicator" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Sandbox" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Spatial" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.Suggest" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.TestFramework" />
    <InternalsVisibleTo Include="Lucene.Net.Tests.TestFramework.DependencyInjection" />
  </ItemGroup>

</Project>