Skip to content

Commit

Permalink
Move to xunit 2 where possible (#76)
Browse files Browse the repository at this point in the history
  • Loading branch information
jason-roberts committed Apr 6, 2015
1 parent 127d1ed commit 4cd20f2
Show file tree
Hide file tree
Showing 6 changed files with 187 additions and 82 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
<ThrowErrorsInValidation>true</ThrowErrorsInValidation>
<DefaultLanguage>en-US</DefaultLanguage>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<RestorePackages>true</RestorePackages>
<NuGetPackageImportStamp>051e2913</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
Expand Down Expand Up @@ -77,7 +80,6 @@
<Compile Include="ApplicationResourcesSettingsProviderShould.cs" />
<Compile Include="LocalizedStrings.cs" />
<Compile Include="RunOn.cs" />
<Compile Include="UnitTest1.cs" />
<Compile Include="MainPage.xaml.cs">
<DependentUpon>MainPage.xaml</DependentUpon>
</Compile>
Expand Down Expand Up @@ -164,4 +166,11 @@
</Target>
-->
<ProjectExtensions />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
</Project>
Original file line number Diff line number Diff line change
@@ -1,115 +1,155 @@
// These tests are commented out until I figure out how to have app.xaml in this test project
using System;
using System.Collections.Generic;
using System.Linq;
using Windows.UI.Xaml;
using FeatureToggle.Providers;
using FeatureToggle.Toggles;
using Xunit;

namespace FeatureToggle.WindowsStore.Tests
{
[Trait("category", "Threaded")]
public class ApplicationResourcesSettingsProviderShould
{
[Fact]
public async void ReadBooleanTrue()
{
var result = false;

//using System;
//using FeatureToggle.Providers;
//using FeatureToggle.Toggles;
//using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
//using Microsoft.VisualStudio.TestPlatform.UnitTestFramework.AppContainer;
//using Assert = Microsoft.VisualStudio.TestPlatform.UnitTestFramework.Assert;
var sut = new ApplicationResourcesSettingsProvider();

//namespace FeatureToggle.WindowsStore.Tests
//{
// [TestClass]
// public class ApplicationResourcesSettingsProviderShould
// {
// [UITestMethod]
// public void ReadBooleanTrue()
// {
// var result = false;

// var sut = new ApplicationResourcesSettingsProvider();

// result = sut.EvaluateBooleanToggleValue(new BooleanTrue());
await RunOn.Dispatcher(() =>
{
Application.Current.Resources["FeatureToggle.BooleanTrue"] = true;
result = sut.EvaluateBooleanToggleValue(new BooleanTrue());
});

// Assert.IsTrue(result);
// }
Assert.True(result);
}


// [UITestMethod]
// public void ReadBooleanFalse()
// {
// var result = true;
[Fact]
public async void ReadBooleanFalse()
{
var result = true;

// var sut = new ApplicationResourcesSettingsProvider();
var sut = new ApplicationResourcesSettingsProvider();

// result = sut.EvaluateBooleanToggleValue(new BooleanFalse());
await RunOn.Dispatcher(() =>
{
Application.Current.Resources["FeatureToggle.BooleanFalse"] = false;
result = sut.EvaluateBooleanToggleValue(new BooleanFalse());
});

// Assert.IsFalse(result);
// }

Assert.False(result);
}


// [UITestMethod]
// public void ErrorWhenKeyNotInConfig()
// {
// Exception expectedEx = null;

// try
// {
// new ApplicationResourcesSettingsProvider().EvaluateBooleanToggleValue(new NotInConfig());
// }
// catch (Exception ex)
// {
// expectedEx = ex;
// }

[Fact]
public async void ErrorWhenKeyNotInConfig()
{
Exception expectedEx = null;

// Assert.IsNotNull(expectedEx, "Exception expected");
// }
try
{
await RunOn.Dispatcher(() =>
{
new ApplicationResourcesSettingsProvider().EvaluateBooleanToggleValue(new NotInConfig());
});
}
catch (Exception ex)
{
expectedEx = ex;
}


// [UITestMethod]
// public void ReadDate()
// {
// var result = DateTime.MaxValue;
Assert.True(expectedEx.Message.EndsWith("was not found in Application.Current.Resources"));
}

// var sut = new ApplicationResourcesSettingsProvider();

// result = sut.EvaluateDateTimeToggleValue(new SimpleToggle());
[Fact]
public async void ReadDate()
{
var result = DateTime.MaxValue;

// Assert.AreEqual(new DateTime(2000, 1, 1, 23, 22, 21), result);
// }
var sut = new ApplicationResourcesSettingsProvider();

await RunOn.Dispatcher(() =>
{
Application.Current.Resources["FeatureToggle.SimpleToggle"] = "01-Feb-2000 23:22:21";
result = sut.EvaluateDateTimeToggleValue(new SimpleToggle());
});

// [UITestMethod]
// public void ReadDatePeriod()
// {
// var result = Tuple.Create(DateTime.MinValue, DateTime.MaxValue);
Assert.Equal(new DateTime(2000, 2, 1, 23, 22, 21), result);
}

// var sut = new ApplicationResourcesSettingsProvider();

// result = sut.EvaluateTimePeriod(new PeriodToggle());
[Fact]
public async void ReadDatePeriod()
{
var result = Tuple.Create(DateTime.MinValue, DateTime.MaxValue);

// Assert.AreEqual(new DateTime(2000, 1, 1, 23, 22, 21), result.Item1);
// Assert.AreEqual(new DateTime(2001, 1, 1, 23, 22, 21), result.Item2);
// }
var sut = new ApplicationResourcesSettingsProvider();

await RunOn.Dispatcher(() =>
{
Application.Current.Resources["FeatureToggle.PeriodToggle"] = "01-Jan-2000 23:22:21 | 01-Jan-2001 23:22:21";
result = sut.EvaluateTimePeriod(new PeriodToggle());
});

Assert.Equal(new DateTime(2000, 1, 1, 23, 22, 21), result.Item1);
Assert.Equal(new DateTime(2001, 1, 1, 23, 22, 21), result.Item2);
}

// private class BooleanTrue : SimpleFeatureToggle
// {
// }

// private class BooleanFalse : SimpleFeatureToggle
// {
// }
[Fact]
public async void ReadDaysOfWeek()
{
List<DayOfWeek> result = null;

// private class NotInConfig : SimpleFeatureToggle
// {
// }

// private class SimpleToggle : SimpleFeatureToggle
// {
// }
var sut = new ApplicationResourcesSettingsProvider();

await RunOn.Dispatcher(() =>
{
Application.Current.Resources["FeatureToggle.DaysToggle"] = "Wednesday, Saturday";
result = sut.GetDaysOfWeek(new DaysToggle()).ToList();
});

// private class PeriodToggle : SimpleFeatureToggle
// {
// }

// }
Assert.Equal(DayOfWeek.Wednesday, result[0]);
Assert.Equal(DayOfWeek.Saturday, result[1]);
Assert.Equal(2, result.Count);
}



//}

private class BooleanTrue : SimpleFeatureToggle
{
}

private class BooleanFalse : SimpleFeatureToggle
{
}

private class NotInConfig : SimpleFeatureToggle
{
}

private class SimpleToggle : SimpleFeatureToggle
{
}


private class PeriodToggle : SimpleFeatureToggle
{
}

private class DaysToggle : EnabledOnDaysOfWeekFeatureToggle
{
}

}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\xunit.runner.visualstudio.2.0.0\build\win8\xunit.runner.visualstudio.props" Condition="Exists('..\..\packages\xunit.runner.visualstudio.2.0.0\build\win8\xunit.runner.visualstudio.props')" />
<Import Project="..\..\packages\xunit.core.2.0.0\build\win8\xunit.core.props" Condition="Exists('..\..\packages\xunit.core.2.0.0\build\win8\xunit.core.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
Expand All @@ -19,6 +21,9 @@
<PackageCertificateKeyFile>FeatureToggle.WindowsStore.Tests_TemporaryKey.pfx</PackageCertificateKeyFile>
<AppxBundle>Never</AppxBundle>
<PackageCertificateThumbprint>8BBB4788954E0C071FC837C8BF3290533DA4498A</PackageCertificateThumbprint>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
<RestorePackages>true</RestorePackages>
<NuGetPackageImportStamp>6390a793</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Expand Down Expand Up @@ -115,6 +120,7 @@
<ItemGroup>
<Compile Include="ApplicationResourcesSettingsProviderShould.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RunOn.cs" />
</ItemGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
Expand Down Expand Up @@ -147,6 +153,19 @@
</ItemGroup>
<ItemGroup>
<None Include="FeatureToggle.WindowsStore.Tests_TemporaryKey.pfx" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Reference Include="xunit.abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\xunit.abstractions.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.abstractions.dll</HintPath>
</Reference>
<Reference Include="xunit.assert">
<HintPath>..\..\packages\xunit.assert.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.assert.dll</HintPath>
</Reference>
<Reference Include="xunit.core">
<HintPath>..\..\packages\xunit.extensibility.core.2.0.0\lib\portable-net45+win+wpa81+wp80+monotouch+monoandroid+Xamarin.iOS\xunit.core.dll</HintPath>
</Reference>
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '12.0' ">
<VisualStudioVersion>12.0</VisualStudioVersion>
Expand Down Expand Up @@ -202,6 +221,19 @@
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
<Error Condition="!Exists('..\..\packages\xunit.core.2.0.0\build\win8\xunit.core.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\xunit.core.2.0.0\build\win8\xunit.core.props'))" />
<Error Condition="!Exists('..\..\packages\xunit.core.2.0.0\build\win8\xunit.core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\xunit.core.2.0.0\build\win8\xunit.core.targets'))" />
<Error Condition="!Exists('..\..\packages\xunit.runner.visualstudio.2.0.0\build\win8\xunit.runner.visualstudio.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\xunit.runner.visualstudio.2.0.0\build\win8\xunit.runner.visualstudio.props'))" />
<Error Condition="!Exists('..\..\packages\xunit.runner.visualstudio.2.0.0\build\win8\xunit.runner.visualstudio.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\xunit.runner.visualstudio.2.0.0\build\win8\xunit.runner.visualstudio.targets'))" />
</Target>
<Import Project="..\..\packages\xunit.core.2.0.0\build\win8\xunit.core.targets" Condition="Exists('..\..\packages\xunit.core.2.0.0\build\win8\xunit.core.targets')" />
<Import Project="..\..\packages\xunit.runner.visualstudio.2.0.0\build\win8\xunit.runner.visualstudio.targets" Condition="Exists('..\..\packages\xunit.runner.visualstudio.2.0.0\build\win8\xunit.runner.visualstudio.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
Expand Down
15 changes: 15 additions & 0 deletions src/Tests/FeatureToggle.WindowsStore.Tests/RunOn.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using System.Threading.Tasks;
using Windows.UI.Core;

namespace FeatureToggle.WindowsStore.Tests
{
public static class RunOn
{
public static async Task Dispatcher(Action a, int timeOut = 5000)
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, a.Invoke);
}
}

}
9 changes: 9 additions & 0 deletions src/Tests/FeatureToggle.WindowsStore.Tests/packages.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="xunit" version="2.0.0" targetFramework="win81" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="win81" />
<package id="xunit.assert" version="2.0.0" targetFramework="win81" />
<package id="xunit.core" version="2.0.0" targetFramework="win81" />
<package id="xunit.extensibility.core" version="2.0.0" targetFramework="win81" />
<package id="xunit.runner.visualstudio" version="2.0.0" targetFramework="win81" />
</packages>
2 changes: 1 addition & 1 deletion src/packages/repositories.config
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
<repositories>
<repository path="..\Examples\WebServicesForExamples\packages.config" />
<repository path="..\FeatureToggle.RavenDB\packages.config" />
<repository path="..\FeatureToggle.UniversalApps81.Tests\FeatureToggle.UniversalApps81.Tests.Windows\packages.config" />
<repository path="..\Tests\FeatureToggle.Integration.Tests\packages.config" />
<repository path="..\Tests\FeatureToggle.Tests\packages.config" />
<repository path="..\Tests\FeatureToggle.UniversalApps81.Tests\packages.config" />
<repository path="..\Tests\FeatureToggle.WindowsStore.Tests\packages.config" />
</repositories>

0 comments on commit 4cd20f2

Please sign in to comment.