Quellcode durchsuchen

FizzBuzz code kata

Bryan Allred vor 11 Jahren
Commit
8da5d08c61

+ 22 - 0
.gitattributes

@ -0,0 +1,22 @@
1
# Auto detect text files and perform LF normalization
2
* text=auto
3
4
# Custom for Visual Studio
5
*.cs     diff=csharp
6
*.sln    merge=union
7
*.csproj merge=union
8
*.vbproj merge=union
9
*.fsproj merge=union
10
*.dbproj merge=union
11
12
# Standard to msysgit
13
*.doc	 diff=astextplain
14
*.DOC	 diff=astextplain
15
*.docx diff=astextplain
16
*.DOCX diff=astextplain
17
*.dot  diff=astextplain
18
*.DOT  diff=astextplain
19
*.pdf  diff=astextplain
20
*.PDF	 diff=astextplain
21
*.rtf	 diff=astextplain
22
*.RTF	 diff=astextplain

+ 215 - 0
.gitignore

@ -0,0 +1,215 @@
1
#################
2
## Eclipse
3
#################
4
5
*.pydevproject
6
.project
7
.metadata
8
bin/
9
tmp/
10
*.tmp
11
*.bak
12
*.swp
13
*~.nib
14
local.properties
15
.classpath
16
.settings/
17
.loadpath
18
19
# External tool builders
20
.externalToolBuilders/
21
22
# Locally stored "Eclipse launch configurations"
23
*.launch
24
25
# CDT-specific
26
.cproject
27
28
# PDT-specific
29
.buildpath
30
31
32
#################
33
## Visual Studio
34
#################
35
36
## Ignore Visual Studio temporary files, build results, and
37
## files generated by popular Visual Studio add-ons.
38
39
# User-specific files
40
*.suo
41
*.user
42
*.sln.docstates
43
44
# Build results
45
46
[Dd]ebug/
47
[Rr]elease/
48
x64/
49
build/
50
[Bb]in/
51
[Oo]bj/
52
53
# MSTest test Results
54
[Tt]est[Rr]esult*/
55
[Bb]uild[Ll]og.*
56
57
*_i.c
58
*_p.c
59
*.ilk
60
*.meta
61
*.obj
62
*.pch
63
*.pdb
64
*.pgc
65
*.pgd
66
*.rsp
67
*.sbr
68
*.tlb
69
*.tli
70
*.tlh
71
*.tmp
72
*.tmp_proj
73
*.log
74
*.vspscc
75
*.vssscc
76
.builds
77
*.pidb
78
*.log
79
*.scc
80
81
# Visual C++ cache files
82
ipch/
83
*.aps
84
*.ncb
85
*.opensdf
86
*.sdf
87
*.cachefile
88
89
# Visual Studio profiler
90
*.psess
91
*.vsp
92
*.vspx
93
94
# Guidance Automation Toolkit
95
*.gpState
96
97
# ReSharper is a .NET coding add-in
98
_ReSharper*/
99
*.[Rr]e[Ss]harper
100
101
# TeamCity is a build add-in
102
_TeamCity*
103
104
# DotCover is a Code Coverage Tool
105
*.dotCover
106
107
# NCrunch
108
*.ncrunch*
109
.*crunch*.local.xml
110
111
# Installshield output folder
112
[Ee]xpress/
113
114
# DocProject is a documentation generator add-in
115
DocProject/buildhelp/
116
DocProject/Help/*.HxT
117
DocProject/Help/*.HxC
118
DocProject/Help/*.hhc
119
DocProject/Help/*.hhk
120
DocProject/Help/*.hhp
121
DocProject/Help/Html2
122
DocProject/Help/html
123
124
# Click-Once directory
125
publish/
126
127
# Publish Web Output
128
*.Publish.xml
129
*.pubxml
130
131
# NuGet Packages Directory
132
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
133
#packages/
134
135
# Windows Azure Build Output
136
csx
137
*.build.csdef
138
139
# Windows Store app package directory
140
AppPackages/
141
142
# Others
143
sql/
144
*.Cache
145
ClientBin/
146
[Ss]tyle[Cc]op.*
147
~$*
148
*~
149
*.dbmdl
150
*.[Pp]ublish.xml
151
*.pfx
152
*.publishsettings
153
154
# RIA/Silverlight projects
155
Generated_Code/
156
157
# Backup & report files from converting an old project file to a newer
158
# Visual Studio version. Backup files are not needed, because we have git ;-)
159
_UpgradeReport_Files/
160
Backup*/
161
UpgradeLog*.XML
162
UpgradeLog*.htm
163
164
# SQL Server files
165
App_Data/*.mdf
166
App_Data/*.ldf
167
168
#############
169
## Windows detritus
170
#############
171
172
# Windows image file caches
173
Thumbs.db
174
ehthumbs.db
175
176
# Folder config file
177
Desktop.ini
178
179
# Recycle Bin used on file shares
180
$RECYCLE.BIN/
181
182
# Mac crap
183
.DS_Store
184
185
186
#############
187
## Python
188
#############
189
190
*.py[co]
191
192
# Packages
193
*.egg
194
*.egg-info
195
dist/
196
build/
197
eggs/
198
parts/
199
var/
200
sdist/
201
develop-eggs/
202
.installed.cfg
203
204
# Installer logs
205
pip-log.txt
206
207
# Unit test / coverage reports
208
.coverage
209
.tox
210
211
#Translations
212
*.mo
213
214
#Mr Developer
215
.mr.developer.cfg

+ 28 - 0
CodeKata.sln

@ -0,0 +1,28 @@
1

2
Microsoft Visual Studio Solution File, Format Version 12.00
3
# Visual Studio 2013
4
VisualStudioVersion = 12.0.21005.1
5
MinimumVisualStudioVersion = 10.0.40219.1
6
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeKata", "CodeKata\CodeKata.csproj", "{35CE129B-FFEA-40A5-8306-44C309BB3EE9}"
7
EndProject
8
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeKataTests", "CodeKataTests\CodeKataTests.csproj", "{19905A06-E68A-4A26-A63E-F5EB48EDB7E9}"
9
EndProject
10
Global
11
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
12
		Debug|Any CPU = Debug|Any CPU
13
		Release|Any CPU = Release|Any CPU
14
	EndGlobalSection
15
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
16
		{35CE129B-FFEA-40A5-8306-44C309BB3EE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17
		{35CE129B-FFEA-40A5-8306-44C309BB3EE9}.Debug|Any CPU.Build.0 = Debug|Any CPU
18
		{35CE129B-FFEA-40A5-8306-44C309BB3EE9}.Release|Any CPU.ActiveCfg = Release|Any CPU
19
		{35CE129B-FFEA-40A5-8306-44C309BB3EE9}.Release|Any CPU.Build.0 = Release|Any CPU
20
		{19905A06-E68A-4A26-A63E-F5EB48EDB7E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21
		{19905A06-E68A-4A26-A63E-F5EB48EDB7E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
22
		{19905A06-E68A-4A26-A63E-F5EB48EDB7E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
23
		{19905A06-E68A-4A26-A63E-F5EB48EDB7E9}.Release|Any CPU.Build.0 = Release|Any CPU
24
	EndGlobalSection
25
	GlobalSection(SolutionProperties) = preSolution
26
		HideSolutionNode = FALSE
27
	EndGlobalSection
28
EndGlobal

+ 6 - 0
CodeKata/App.config

@ -0,0 +1,6 @@
1
<?xml version="1.0" encoding="utf-8" ?>
2
<configuration>
3
    <startup> 
4
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
5
    </startup>
6
</configuration>

+ 64 - 0
CodeKata/CodeKata.csproj

@ -0,0 +1,64 @@
1
<?xml version="1.0" encoding="utf-8"?>
2
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4
  <PropertyGroup>
5
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7
    <ProjectGuid>{35CE129B-FFEA-40A5-8306-44C309BB3EE9}</ProjectGuid>
8
    <OutputType>Library</OutputType>
9
    <AppDesignerFolder>Properties</AppDesignerFolder>
10
    <RootNamespace>CodeKata</RootNamespace>
11
    <AssemblyName>CodeKata</AssemblyName>
12
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
13
    <FileAlignment>512</FileAlignment>
14
  </PropertyGroup>
15
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
16
    <PlatformTarget>AnyCPU</PlatformTarget>
17
    <DebugSymbols>true</DebugSymbols>
18
    <DebugType>full</DebugType>
19
    <Optimize>false</Optimize>
20
    <OutputPath>bin\Debug\</OutputPath>
21
    <DefineConstants>DEBUG;TRACE</DefineConstants>
22
    <ErrorReport>prompt</ErrorReport>
23
    <WarningLevel>4</WarningLevel>
24
  </PropertyGroup>
25
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
26
    <PlatformTarget>AnyCPU</PlatformTarget>
27
    <DebugType>pdbonly</DebugType>
28
    <Optimize>true</Optimize>
29
    <OutputPath>bin\Release\</OutputPath>
30
    <DefineConstants>TRACE</DefineConstants>
31
    <ErrorReport>prompt</ErrorReport>
32
    <WarningLevel>4</WarningLevel>
33
  </PropertyGroup>
34
  <PropertyGroup>
35
    <StartupObject />
36
  </PropertyGroup>
37
  <ItemGroup>
38
    <Reference Include="System" />
39
    <Reference Include="System.Core" />
40
    <Reference Include="System.Xml.Linq" />
41
    <Reference Include="System.Data.DataSetExtensions" />
42
    <Reference Include="Microsoft.CSharp" />
43
    <Reference Include="System.Data" />
44
    <Reference Include="System.Xml" />
45
  </ItemGroup>
46
  <ItemGroup>
47
    <Compile Include="Katas\FizzBuzz.cs" />
48
    <Compile Include="Properties\AssemblyInfo.cs" />
49
  </ItemGroup>
50
  <ItemGroup>
51
    <None Include="App.config" />
52
  </ItemGroup>
53
  <ItemGroup>
54
    <Folder Include="Common\" />
55
  </ItemGroup>
56
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
57
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
58
       Other similar extension points exist, see Microsoft.Common.targets.
59
  <Target Name="BeforeBuild">
60
  </Target>
61
  <Target Name="AfterBuild">
62
  </Target>
63
  -->
64
</Project>

+ 32 - 0
CodeKata/Katas/FizzBuzz.cs

@ -0,0 +1,32 @@
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
7
namespace CodeKata.Katas
8
{
9
    /// <summary>
10
    /// FizzBuzz.
11
    /// </summary>
12
    /// <remarks>
13
    /// Return "fizz", "buzz" or "fizzbuzz".
14
    /// 
15
    /// For a given natural number greater zero return
16
    ///     "fizz" if the number is dividable by 3
17
    ///     "buzz" if the number is dividable by 5
18
    ///     "fizzbuzz" if the number is dividable by 15
19
    /// </remarks>
20
    public class FizzBuzz
21
    {
22
        /// <summary>
23
        /// Runs the specified natural number.
24
        /// </summary>
25
        /// <param name="naturalNumber">The natural number.</param>
26
        /// <returns>Returns the FizzBuzz value.</returns>
27
        public static string Run(int naturalNumber)
28
        {
29
            return string.Empty;
30
        }
31
    }
32
}

+ 36 - 0
CodeKata/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@
1
using System.Reflection;
2
using System.Runtime.CompilerServices;
3
using System.Runtime.InteropServices;
4
5
// General Information about an assembly is controlled through the following 
6
// set of attributes. Change these attribute values to modify the information
7
// associated with an assembly.
8
[assembly: AssemblyTitle("CodeKata")]
9
[assembly: AssemblyDescription("")]
10
[assembly: AssemblyConfiguration("")]
11
[assembly: AssemblyCompany("")]
12
[assembly: AssemblyProduct("CodeKata")]
13
[assembly: AssemblyCopyright("Copyright ©  2014")]
14
[assembly: AssemblyTrademark("")]
15
[assembly: AssemblyCulture("")]
16
17
// Setting ComVisible to false makes the types in this assembly not visible 
18
// to COM components.  If you need to access a type in this assembly from 
19
// COM, set the ComVisible attribute to true on that type.
20
[assembly: ComVisible(false)]
21
22
// The following GUID is for the ID of the typelib if this project is exposed to COM
23
[assembly: Guid("3ef7cb6a-031a-420e-833d-ec5f924c849b")]
24
25
// Version information for an assembly consists of the following four values:
26
//
27
//      Major Version
28
//      Minor Version 
29
//      Build Number
30
//      Revision
31
//
32
// You can specify all the values or you can default the Build and Revision Numbers 
33
// by using the '*' as shown below:
34
// [assembly: AssemblyVersion("1.0.*")]
35
[assembly: AssemblyVersion("1.0.0.0")]
36
[assembly: AssemblyFileVersion("1.0.0.0")]

+ 66 - 0
CodeKataTests/CodeKataTests.csproj

@ -0,0 +1,66 @@
1
<?xml version="1.0" encoding="utf-8"?>
2
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4
  <PropertyGroup>
5
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7
    <ProjectGuid>{19905A06-E68A-4A26-A63E-F5EB48EDB7E9}</ProjectGuid>
8
    <OutputType>Library</OutputType>
9
    <AppDesignerFolder>Properties</AppDesignerFolder>
10
    <RootNamespace>CodeKataTests</RootNamespace>
11
    <AssemblyName>CodeKataTests</AssemblyName>
12
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
13
    <FileAlignment>512</FileAlignment>
14
  </PropertyGroup>
15
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
16
    <DebugSymbols>true</DebugSymbols>
17
    <DebugType>full</DebugType>
18
    <Optimize>false</Optimize>
19
    <OutputPath>bin\Debug\</OutputPath>
20
    <DefineConstants>DEBUG;TRACE</DefineConstants>
21
    <ErrorReport>prompt</ErrorReport>
22
    <WarningLevel>4</WarningLevel>
23
  </PropertyGroup>
24
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
25
    <DebugType>pdbonly</DebugType>
26
    <Optimize>true</Optimize>
27
    <OutputPath>bin\Release\</OutputPath>
28
    <DefineConstants>TRACE</DefineConstants>
29
    <ErrorReport>prompt</ErrorReport>
30
    <WarningLevel>4</WarningLevel>
31
  </PropertyGroup>
32
  <ItemGroup>
33
    <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
34
    <Reference Include="System" />
35
    <Reference Include="System.Core" />
36
    <Reference Include="System.Xml.Linq" />
37
    <Reference Include="System.Data.DataSetExtensions" />
38
    <Reference Include="Microsoft.CSharp" />
39
    <Reference Include="System.Data" />
40
    <Reference Include="System.Xml" />
41
  </ItemGroup>
42
  <ItemGroup>
43
    <Compile Include="Properties\AssemblyInfo.cs" />
44
    <Compile Include="Solutions\FizzBuzzTests.cs" />
45
  </ItemGroup>
46
  <ItemGroup>
47
    <Folder Include="Personal\" />
48
  </ItemGroup>
49
  <ItemGroup>
50
    <ProjectReference Include="..\CodeKata\CodeKata.csproj">
51
      <Project>{35ce129b-ffea-40a5-8306-44c309bb3ee9}</Project>
52
      <Name>CodeKata</Name>
53
    </ProjectReference>
54
  </ItemGroup>
55
  <ItemGroup>
56
    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
57
  </ItemGroup>
58
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
59
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
60
       Other similar extension points exist, see Microsoft.Common.targets.
61
  <Target Name="BeforeBuild">
62
  </Target>
63
  <Target Name="AfterBuild">
64
  </Target>
65
  -->
66
</Project>

+ 36 - 0
CodeKataTests/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@
1
using System.Reflection;
2
using System.Runtime.CompilerServices;
3
using System.Runtime.InteropServices;
4
5
// General Information about an assembly is controlled through the following 
6
// set of attributes. Change these attribute values to modify the information
7
// associated with an assembly.
8
[assembly: AssemblyTitle("CodeKataTests")]
9
[assembly: AssemblyDescription("")]
10
[assembly: AssemblyConfiguration("")]
11
[assembly: AssemblyCompany("")]
12
[assembly: AssemblyProduct("CodeKataTests")]
13
[assembly: AssemblyCopyright("Copyright ©  2014")]
14
[assembly: AssemblyTrademark("")]
15
[assembly: AssemblyCulture("")]
16
17
// Setting ComVisible to false makes the types in this assembly not visible 
18
// to COM components.  If you need to access a type in this assembly from 
19
// COM, set the ComVisible attribute to true on that type.
20
[assembly: ComVisible(false)]
21
22
// The following GUID is for the ID of the typelib if this project is exposed to COM
23
[assembly: Guid("46d8f3cf-ba7b-4d02-9911-422580b1ca21")]
24
25
// Version information for an assembly consists of the following four values:
26
//
27
//      Major Version
28
//      Minor Version 
29
//      Build Number
30
//      Revision
31
//
32
// You can specify all the values or you can default the Build and Revision Numbers 
33
// by using the '*' as shown below:
34
// [assembly: AssemblyVersion("1.0.*")]
35
[assembly: AssemblyVersion("1.0.0.0")]
36
[assembly: AssemblyFileVersion("1.0.0.0")]

+ 79 - 0
CodeKataTests/Solutions/FizzBuzzTests.cs

@ -0,0 +1,79 @@
1
using System.Collections.Generic;
2
using CodeKata.Katas;
3
using Microsoft.VisualStudio.TestTools.UnitTesting;
4
5
namespace CodeKataTests.Solutions
6
{
7
    /// <summary>
8
    /// FizzBuzz test cases.
9
    /// </summary>
10
    [TestClass]
11
    public class FizzBuzzTests
12
    {
13
        /// <summary>
14
        /// The expected output.
15
        /// </summary>
16
        private static IDictionary<int, string> output = new Dictionary<int, string>()
17
        {
18
            { 1, "1" }, { 2, "2" }, { 3, "fizz" }, { 4, "4" }, { 5, "buzz" }, { 6, "fizz" }, { 7, "7" }, { 8, "8" }, { 9, "fizz" },
19
            { 10, "buzz" }, { 11, "11" }, { 12, "fizz" }, { 13, "13" }, { 14, "14" }, { 15, "fizzbuzz" }, { 16, "16" }, { 17, "17" }, { 18, "fizz" }, { 19, "19" },
20
            { 20, "buzz" }, { 21, "fizz" }, { 22, "22" }, { 23, "23" }, { 24, "fizz" }, { 25, "buzz" }, { 26, "26" }, { 27, "fizz" }, { 28, "28" }, { 29, "29" },
21
            { 30, "fizzbuzz" }, { 31, "31" }, { 32, "32" }, { 33, "fizz" }, { 34, "34" }, { 35, "buzz" }, { 36, "fizz" }, { 37, "37" }, { 38, "38" }, { 39, "fizz" },
22
            { 40, "buzz" }, { 41, "41" }, { 42, "fizz" }, { 43, "43" }, { 44, "44" }, { 45, "fizzbuzz" }, { 46, "46" }, { 47, "47" }, { 48, "fizz" }, { 49, "49" },
23
            { 50, "buzz" }, { 51, "fizz" }, { 52, "52" }, { 53, "53" }, { 54, "fizz" }, { 55, "buzz" }, { 56, "56" }, { 57, "fizz" }, { 58, "58" }, { 59, "59" },
24
            { 60, "fizzbuzz" }, { 61, "61" }, { 62, "62" }, { 63, "fizz" }, { 64, "64" }, { 65, "buzz" }, { 66, "fizz" }, { 67, "67" }, { 68, "68" }, { 69, "fizz" },
25
            { 70, "buzz" }, { 71, "71" }, { 72, "fizz" }, { 73, "73" }, { 74, "74" }, { 75, "fizzbuzz" }, { 76, "76" }, { 77, "77" }, { 78, "fizz" }, { 79, "79" },
26
            { 80, "buzz" }, { 81, "fizz" }, { 82, "82" }, { 83, "83" }, { 84, "fizz" }, { 85, "buzz" }, { 86, "86" }, { 87, "fizz" }, { 88, "88" }, { 89, "89" },
27
            { 90, "fizzbuzz" }, { 91, "91" }, { 92, "92" }, { 93, "fizz" }, { 94, "94" }, { 95, "buzz" }, { 96, "fizz" }, { 97, "97" }, { 98, "98" }, { 99, "fizz" },
28
            { 100, "buzz" }
29
        };
30
31
        /// <summary>
32
        /// Determines whether this instance [can return default value].
33
        /// </summary>
34
        [TestMethod]
35
        public void CanReturnDefaultValue()
36
        {
37
            Assert.AreEqual(output[1], FizzBuzz.Run(1));
38
        }
39
40
        /// <summary>
41
        /// Determines whether this instance [can return fizz].
42
        /// </summary>
43
        [TestMethod]
44
        public void CanReturnFizz()
45
        {
46
            Assert.AreEqual(output[3], FizzBuzz.Run(3));
47
        }
48
49
        /// <summary>
50
        /// Determines whether this instance [can return buzz].
51
        /// </summary>
52
        [TestMethod]
53
        public void CanReturnBuzz()
54
        {
55
            Assert.AreEqual(output[5], FizzBuzz.Run(5));
56
        }
57
58
        /// <summary>
59
        /// Determines whether this instance [can return fizz buzz].
60
        /// </summary>
61
        [TestMethod]
62
        public void CanReturnFizzBuzz()
63
        {
64
            Assert.AreEqual(output[15], FizzBuzz.Run(15));
65
        }
66
67
        /// <summary>
68
        /// Propers the output from range.
69
        /// </summary>
70
        [TestMethod]
71
        public void ProperOutputFromRange()
72
        {
73
            foreach (var key in output.Keys)
74
            {
75
                Assert.AreEqual(output[key], FizzBuzz.Run(key));
76
            }
77
        }
78
    }
79
}