{{>partial_header}}

using Xunit;

using System;
using System.Linq;
using System.IO;
using System.Collections.Generic;
using {{packageName}}.{{modelPackage}};
using {{packageName}}.{{clientPackage}};
using System.Reflection;
{{^useGenericHost}}
using Newtonsoft.Json;
{{/useGenericHost}}

{{#models}}
{{#model}}
namespace {{packageName}}.Test.Model
{
    /// <summary>
    ///  Class for testing {{classname}}
    /// </summary>
    /// <remarks>
    /// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
    /// Please update the test case below to test the model.
    /// </remarks>
    public class {{classname}}Tests : IDisposable
    {
        // TODO uncomment below to declare an instance variable for {{classname}}
        //private {{classname}} instance;

        public {{classname}}Tests()
        {
            // TODO uncomment below to create an instance of {{classname}}
            //instance = new {{classname}}();
        }

        public void Dispose()
        {
            // Cleanup when everything is done.
        }

        {{#lambda.trimTrailingWithNewLine}}
        {{#lambda.trimLineBreaks}}
        /// <summary>
        /// Test an instance of {{classname}}
        /// </summary>
        [Fact]
        public void {{classname}}InstanceTest()
        {
            // TODO uncomment below to test "IsType" {{classname}}
            //Assert.IsType<{{classname}}>(instance);
        }

        {{#discriminator}}
        {{#children}}

        /// <summary>
        /// Test deserialize a {{classname}} from type {{parent}}
        /// </summary>
        [Fact]
        public void {{classname}}DeserializeFrom{{parent}}Test()
        {
            // TODO uncomment below to test deserialize a {{classname}} from type {{parent}}
            //Assert.IsType<{{parent}}>(JsonConvert.DeserializeObject<{{parent}}>(new {{classname}}().ToJson()));
        }

        {{/children}}
        {{/discriminator}}
        {{#vars}}


        /// <summary>
        /// Test the property '{{name}}'
        /// </summary>
        [Fact]
        public void {{name}}Test()
        {
            // TODO unit test for the property '{{name}}'
        }
        {{/vars}}
        {{/lambda.trimLineBreaks}}
        {{/lambda.trimTrailingWithNewLine}}
    }
}
{{/model}}
{{/models}}
