Skip to content

Commit 90426cb

Browse files
committed
Added Mvc5 support (Net45), updated to FluentAssertions 2.2
1 parent 35fed1f commit 90426cb

38 files changed

+551
-11080
lines changed

.nuget/NuGet.exe

938 KB
Binary file not shown.

.nuget/NuGet.targets

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818

1919
<ItemGroup Condition=" '$(PackageSources)' == '' ">
2020
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
21-
<!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
21+
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
2222
<!--
23-
<PackageSource Include="https://nuget.org/api/v2/" />
23+
<PackageSource Include="https://www.nuget.org/api/v2/" />
2424
<PackageSource Include="https://my-nuget-source/nuget/" />
2525
-->
2626
</ItemGroup>
@@ -29,19 +29,17 @@
2929
<!-- Windows specific commands -->
3030
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
3131
<PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
32-
<PackagesDir>$([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>
3332
</PropertyGroup>
3433

3534
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
3635
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
3736
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
3837
<PackagesConfig>packages.config</PackagesConfig>
39-
<PackagesDir>$(SolutionDir)packages</PackagesDir>
4038
</PropertyGroup>
4139

4240
<PropertyGroup>
4341
<!-- NuGet command -->
44-
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\nuget.exe</NuGetExePath>
42+
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
4543
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
4644

4745
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
@@ -50,9 +48,14 @@
5048
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
5149

5250
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
51+
<NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
52+
53+
<PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
54+
<PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
55+
5356
<!-- Commands -->
54-
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch) -o "$(PackagesDir)"</RestoreCommand>
55-
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>
57+
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
58+
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
5659

5760
<!-- We need to ensure packages are restored prior to assembly resolve -->
5861
<BuildDependsOn Condition="$(RestorePackages) == 'true'">
@@ -70,13 +73,12 @@
7073
<Target Name="CheckPrerequisites">
7174
<!-- Raise an error if we're unable to locate nuget.exe -->
7275
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
73-
<SetEnvironmentVariable EnvKey="VisualStudioVersion" EnvValue="$(VisualStudioVersion)" Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' " />
7476
<!--
7577
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
7678
This effectively acts as a lock that makes sure that the download operation will only happen once and all
7779
parallel builds will have to wait for it to complete.
7880
-->
79-
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT" />
81+
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
8082
</Target>
8183

8284
<Target Name="_DownloadNuGet">
@@ -119,7 +121,7 @@
119121
120122
Log.LogMessage("Downloading latest version of NuGet.exe...");
121123
WebClient webClient = new WebClient();
122-
webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);
124+
webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
123125
124126
return true;
125127
}
@@ -131,23 +133,4 @@
131133
</Code>
132134
</Task>
133135
</UsingTask>
134-
135-
<UsingTask TaskName="SetEnvironmentVariable" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
136-
<ParameterGroup>
137-
<EnvKey ParameterType="System.String" Required="true" />
138-
<EnvValue ParameterType="System.String" Required="true" />
139-
</ParameterGroup>
140-
<Task>
141-
<Using Namespace="System" />
142-
<Code Type="Fragment" Language="cs">
143-
<![CDATA[
144-
try {
145-
Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
146-
}
147-
catch {
148-
}
149-
]]>
150-
</Code>
151-
</Task>
152-
</UsingTask>
153136
</Project>

Contributors.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
Casey Burns
22
Kevin Kuszyk
3-
Jeff Sharp
3+
Jeff Sharp
4+
James Nail

FluentAssertionsMvc.VisualState.xml

Lines changed: 0 additions & 20 deletions
This file was deleted.

FluentAssertionsMvc.msbuild

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,31 @@
11
<Project DefaultTargets="UnitTest" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2-
<PropertyGroup>
3-
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
4-
5-
<CodeAnalysis Condition=" '$(CodeAnalysis)' == ''">true</CodeAnalysis>
6-
<StyleCopEnabled Condition=" '$(StyleCopEnabled)' == '' ">true</StyleCopEnabled>
7-
8-
</PropertyGroup>
9-
10-
<Target Name="Clean">
11-
<MSBuild
12-
Projects="FluentAssertionsMvc.sln"
13-
Targets="Clean"
14-
Properties="Configuration=$(Configuration)" />
15-
<RemoveDir Directories="bin\$(Configuration)" />
16-
</Target>
17-
18-
<Target Name="Build" DependsOnTargets="Prereq">
19-
<MakeDir Directories="bin\$(Configuration)" />
20-
<MSBuild
21-
Projects="FluentAssertionsMvc.sln"
22-
BuildInParallel="$(BuildInParallel)"
23-
Targets="Build"
24-
Properties="Configuration=$(Configuration);CodeAnalysis=$(CodeAnalysis);StyleCopEnabled=$(StyleCopEnabled)" />
25-
</Target>
26-
27-
<Target Name="Prereq">
28-
</Target>
29-
30-
<Target Name="UnitTest" DependsOnTargets="Clean;Build">
31-
</Target>
32-
2+
<PropertyGroup>
3+
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
4+
<CodeAnalysis Condition=" '$(CodeAnalysis)' == ''">true</CodeAnalysis>
5+
<StyleCopEnabled Condition=" '$(StyleCopEnabled)' == '' ">true</StyleCopEnabled>
6+
</PropertyGroup>
7+
8+
<Target Name="Clean">
9+
<MSBuild
10+
Projects="FluentAssertionsMvc.sln"
11+
Targets="Clean"
12+
Properties="Configuration=$(Configuration)" />
13+
<RemoveDir Directories="bin\$(Configuration)" />
14+
</Target>
15+
16+
<Target Name="Build" DependsOnTargets="Prereq">
17+
<MakeDir Directories="bin\$(Configuration)" />
18+
<MSBuild
19+
Projects="FluentAssertionsMvc.sln"
20+
BuildInParallel="$(BuildInParallel)"
21+
Targets="Build"
22+
Properties="Configuration=$(Configuration);CodeAnalysis=$(CodeAnalysis);StyleCopEnabled=$(StyleCopEnabled)" />
23+
</Target>
24+
25+
<Target Name="Prereq">
26+
</Target>
27+
28+
<Target Name="UnitTest" DependsOnTargets="Clean;Build">
29+
</Target>
30+
3331
</Project>

FluentAssertionsMvc.sln

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,17 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 2012
4-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc3", "src\FluentAssertions.Mvc3\FluentAssertions.Mvc3.csproj", "{53589F79-0908-409A-8366-3E18DC637600}"
5-
EndProject
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc3.Tests", "tests\FluentAssertions.Mvc3.Tests\FluentAssertions.Mvc3.Tests.csproj", "{3CB00FF9-3DC2-460F-82E8-EBFB6339247D}"
7-
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test", "tests\test\test.csproj", "{D29AE253-FEE8-4A54-BFBD-323CAD27F549}"
9-
EndProject
10-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc3.Samples", "samples\FluentAssertions.Mvc3.Samples\FluentAssertions.Mvc3.Samples.csproj", "{95B0CEBD-D9B8-4C41-A918-B13317A9AC16}"
11-
EndProject
12-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc4", "src\FluentAssertions.Mvc4\FluentAssertions.Mvc4.csproj", "{B18BFBDE-02A0-4DB2-AFEA-E756C177E4AD}"
13-
EndProject
14-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc4.Tests", "tests\FluentAssertions.Mvc4.Tests\FluentAssertions.Mvc4.Tests.csproj", "{B9F72C07-90A8-4A15-815B-7618530CA889}"
15-
EndProject
3+
# Visual Studio 2013
4+
VisualStudioVersion = 12.0.21005.1
5+
MinimumVisualStudioVersion = 10.0.40219.1
166
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mvc3", "Mvc3", "{4E91D524-3DC0-4E08-82FE-6FDAEB89212B}"
177
EndProject
188
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mvc4", "Mvc4", "{34E084BA-3DFA-4042-9B30-5C14831901B4}"
199
EndProject
20-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D241AE45-1989-4B1F-8836-0DEDC1601320}"
21-
ProjectSection(SolutionItems) = preProject
22-
.nuget\NuGet.Config = .nuget\NuGet.Config
23-
.nuget\NuGet.exe = .nuget\NuGet.exe
24-
.nuget\NuGet.targets = .nuget\NuGet.targets
25-
EndProjectSection
26-
EndProject
2710
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nuspecs", "nuspecs", "{48A7D304-F178-46B0-901E-E060D87B5E07}"
2811
ProjectSection(SolutionItems) = preProject
2912
src\FluentAssertions.Mvc3\FluentAssertions.Mvc3.nuspec = src\FluentAssertions.Mvc3\FluentAssertions.Mvc3.nuspec
3013
src\FluentAssertions.Mvc4\FluentAssertions.Mvc4.nuspec = src\FluentAssertions.Mvc4\FluentAssertions.Mvc4.nuspec
14+
src\FluentAssertions.Mvc5\FluentAssertions.Mvc5.nuspec = src\FluentAssertions.Mvc5\FluentAssertions.Mvc5.nuspec
3115
EndProjectSection
3216
EndProject
3317
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0C48468D-7CDA-45C7-8B21-0669A567711B}"
@@ -36,6 +20,24 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
3620
Contributors.txt = Contributors.txt
3721
EndProjectSection
3822
EndProject
23+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc3", "src\FluentAssertions.Mvc3\FluentAssertions.Mvc3.csproj", "{53589F79-0908-409A-8366-3E18DC637600}"
24+
EndProject
25+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc3.Tests", "tests\FluentAssertions.Mvc3.Tests\FluentAssertions.Mvc3.Tests.csproj", "{3CB00FF9-3DC2-460F-82E8-EBFB6339247D}"
26+
EndProject
27+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test", "tests\test\test.csproj", "{D29AE253-FEE8-4A54-BFBD-323CAD27F549}"
28+
EndProject
29+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc3.Samples", "samples\FluentAssertions.Mvc3.Samples\FluentAssertions.Mvc3.Samples.csproj", "{95B0CEBD-D9B8-4C41-A918-B13317A9AC16}"
30+
EndProject
31+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc4", "src\FluentAssertions.Mvc4\FluentAssertions.Mvc4.csproj", "{B18BFBDE-02A0-4DB2-AFEA-E756C177E4AD}"
32+
EndProject
33+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc4.Tests", "tests\FluentAssertions.Mvc4.Tests\FluentAssertions.Mvc4.Tests.csproj", "{B9F72C07-90A8-4A15-815B-7618530CA889}"
34+
EndProject
35+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mvc5", "Mvc5", "{466CDF89-8C39-4734-9644-CE16B787EDD1}"
36+
EndProject
37+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc5", "src\FluentAssertions.Mvc5\FluentAssertions.Mvc5.csproj", "{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}"
38+
EndProject
39+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentAssertions.Mvc5.Tests", "tests\FluentAssertions.Mvc5.Tests\FluentAssertions.Mvc5.Tests.csproj", "{650A92FF-8874-41CD-BCDA-BE583F3F2638}"
40+
EndProject
3941
Global
4042
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4143
Debug|Any CPU = Debug|Any CPU
@@ -103,15 +105,37 @@ Global
103105
{B9F72C07-90A8-4A15-815B-7618530CA889}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
104106
{B9F72C07-90A8-4A15-815B-7618530CA889}.Release|Mixed Platforms.Build.0 = Release|Any CPU
105107
{B9F72C07-90A8-4A15-815B-7618530CA889}.Release|x86.ActiveCfg = Release|Any CPU
108+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
109+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
110+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
111+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
112+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Debug|x86.ActiveCfg = Debug|Any CPU
113+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
114+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Release|Any CPU.Build.0 = Release|Any CPU
115+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
116+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
117+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2}.Release|x86.ActiveCfg = Release|Any CPU
118+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
119+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Debug|Any CPU.Build.0 = Debug|Any CPU
120+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
121+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
122+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Debug|x86.ActiveCfg = Debug|Any CPU
123+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Release|Any CPU.ActiveCfg = Release|Any CPU
124+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Release|Any CPU.Build.0 = Release|Any CPU
125+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
126+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Release|Mixed Platforms.Build.0 = Release|Any CPU
127+
{650A92FF-8874-41CD-BCDA-BE583F3F2638}.Release|x86.ActiveCfg = Release|Any CPU
106128
EndGlobalSection
107129
GlobalSection(SolutionProperties) = preSolution
108130
HideSolutionNode = FALSE
109131
EndGlobalSection
110132
GlobalSection(NestedProjects) = preSolution
133+
{53589F79-0908-409A-8366-3E18DC637600} = {4E91D524-3DC0-4E08-82FE-6FDAEB89212B}
111134
{3CB00FF9-3DC2-460F-82E8-EBFB6339247D} = {4E91D524-3DC0-4E08-82FE-6FDAEB89212B}
112135
{95B0CEBD-D9B8-4C41-A918-B13317A9AC16} = {4E91D524-3DC0-4E08-82FE-6FDAEB89212B}
113-
{53589F79-0908-409A-8366-3E18DC637600} = {4E91D524-3DC0-4E08-82FE-6FDAEB89212B}
114-
{B9F72C07-90A8-4A15-815B-7618530CA889} = {34E084BA-3DFA-4042-9B30-5C14831901B4}
115136
{B18BFBDE-02A0-4DB2-AFEA-E756C177E4AD} = {34E084BA-3DFA-4042-9B30-5C14831901B4}
137+
{B9F72C07-90A8-4A15-815B-7618530CA889} = {34E084BA-3DFA-4042-9B30-5C14831901B4}
138+
{E5BFF617-46A3-48F7-83AA-BD34376F1AB2} = {466CDF89-8C39-4734-9644-CE16B787EDD1}
139+
{650A92FF-8874-41CD-BCDA-BE583F3F2638} = {466CDF89-8C39-4734-9644-CE16B787EDD1}
116140
EndGlobalSection
117141
EndGlobal

Package.cmd

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
@ECHO OFF
22
pushd %~dp0
33

4-
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild FluentAssertionsMvc.msbuild /m /nr:false /v:M /fl /flp:LogFile=bin\msbuild.log;Verbosity=Normal
4+
REM %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild FluentAssertionsMvc.msbuild /m /nr:false /v:M /fl /flp:LogFile=bin\msbuild.log;Verbosity=Normal
5+
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild FluentAssertionsMvc.msbuild /maxcpucount /nodeReuse:false /verbosity:quiet /fileLogger /fileloggerparameters:LogFile=bin\msbuild.log;
56
if errorlevel 1 goto BuildFail
67

78
echo.
89
echo *** BUILD SUCCESSFUL ***
910
echo.
1011

11-
.nuget\nuget pack src\FluentAssertions.Mvc3\FluentAssertions.Mvc3.csproj
12-
.nuget\nuget pack src\FluentAssertions.Mvc4\FluentAssertions.Mvc4.csproj
12+
REM .nuget\nuget pack src\FluentAssertions.Mvc3\FluentAssertions.Mvc3.csproj
13+
.nuget\nuget pack src\FluentAssertions.Mvc4\FluentAssertions.Mvc4.csproj -verbosity detailed
14+
.nuget\nuget pack src\FluentAssertions.Mvc5\FluentAssertions.Mvc5.csproj -verbosity detailed
1315
if errorlevel 1 goto PackageFail
1416

1517
echo.
-91.8 KB
Binary file not shown.
-140 KB
Binary file not shown.

0 commit comments

Comments
 (0)