<?xml version="1.0"?>
<!--
 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.
-->
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>NSubstitute</id>
    <version>1.6.0.0</version>
    <title>NSubstitute</title>
    <authors>Anthony Egerton, David Tchepak</authors>
    <owners>Anthony Egerton, David Tchepak</owners>
    <licenseUrl>https://github.com/nsubstitute/NSubstitute/raw/master/LICENSE.txt</licenseUrl>
    <projectUrl>http://nsubstitute.github.com/</projectUrl>
    <iconUrl>http://nsubstitute.github.com/images/nsubstitute-100x100.png</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>NSubstitute is a friendly substitute for .NET mocking frameworks. It has a simple, succinct syntax to help developers write clearer tests. NSubstitute is designed for Arrange-Act-Assert (AAA) testing and with Test Driven Development (TDD) in mind.</description>
    <releaseNotes />
    <copyright />
    <language />
    <tags>mocking mocks testing unit-testing TDD AAA</tags>
  </metadata>
</package>
