﻿<?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>

    <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>