// Code generated by azure-service-operator-codegen. DO NOT EDIT.
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
package storage

import (
	"encoding/json"
	"github.com/google/go-cmp/cmp"
	"github.com/google/go-cmp/cmp/cmpopts"
	"github.com/kr/pretty"
	"github.com/kylelemons/godebug/diff"
	"github.com/leanovate/gopter"
	"github.com/leanovate/gopter/gen"
	"github.com/leanovate/gopter/prop"
	"os"
	"reflect"
	"testing"
)

func Test_Api_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 20
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of Api via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApi, ApiGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApi runs a test to see if a specific instance of Api round trips to JSON and back losslessly
func RunJSONSerializationTestForApi(subject Api) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual Api
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of Api instances for property testing - lazily instantiated by ApiGenerator()
var apiGenerator gopter.Gen

// ApiGenerator returns a generator of Api instances for property testing.
func ApiGenerator() gopter.Gen {
	if apiGenerator != nil {
		return apiGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddRelatedPropertyGeneratorsForApi(generators)
	apiGenerator = gen.Struct(reflect.TypeOf(Api{}), generators)

	return apiGenerator
}

// AddRelatedPropertyGeneratorsForApi is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForApi(gens map[string]gopter.Gen) {
	gens["Spec"] = Api_SpecGenerator()
	gens["Status"] = Api_STATUSGenerator()
}

func Test_ApiContactInformation_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 100
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of ApiContactInformation via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApiContactInformation, ApiContactInformationGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApiContactInformation runs a test to see if a specific instance of ApiContactInformation round trips to JSON and back losslessly
func RunJSONSerializationTestForApiContactInformation(subject ApiContactInformation) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual ApiContactInformation
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of ApiContactInformation instances for property testing - lazily instantiated by
// ApiContactInformationGenerator()
var apiContactInformationGenerator gopter.Gen

// ApiContactInformationGenerator returns a generator of ApiContactInformation instances for property testing.
func ApiContactInformationGenerator() gopter.Gen {
	if apiContactInformationGenerator != nil {
		return apiContactInformationGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApiContactInformation(generators)
	apiContactInformationGenerator = gen.Struct(reflect.TypeOf(ApiContactInformation{}), generators)

	return apiContactInformationGenerator
}

// AddIndependentPropertyGeneratorsForApiContactInformation is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForApiContactInformation(gens map[string]gopter.Gen) {
	gens["Email"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["Url"] = gen.PtrOf(gen.AlphaString())
}

func Test_ApiContactInformation_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 80
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of ApiContactInformation_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApiContactInformation_STATUS, ApiContactInformation_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApiContactInformation_STATUS runs a test to see if a specific instance of ApiContactInformation_STATUS round trips to JSON and back losslessly
func RunJSONSerializationTestForApiContactInformation_STATUS(subject ApiContactInformation_STATUS) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual ApiContactInformation_STATUS
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of ApiContactInformation_STATUS instances for property testing - lazily instantiated by
// ApiContactInformation_STATUSGenerator()
var apiContactInformation_STATUSGenerator gopter.Gen

// ApiContactInformation_STATUSGenerator returns a generator of ApiContactInformation_STATUS instances for property testing.
func ApiContactInformation_STATUSGenerator() gopter.Gen {
	if apiContactInformation_STATUSGenerator != nil {
		return apiContactInformation_STATUSGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApiContactInformation_STATUS(generators)
	apiContactInformation_STATUSGenerator = gen.Struct(reflect.TypeOf(ApiContactInformation_STATUS{}), generators)

	return apiContactInformation_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForApiContactInformation_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForApiContactInformation_STATUS(gens map[string]gopter.Gen) {
	gens["Email"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["Url"] = gen.PtrOf(gen.AlphaString())
}

func Test_ApiCreateOrUpdateProperties_WsdlSelector_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 100
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of ApiCreateOrUpdateProperties_WsdlSelector via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApiCreateOrUpdateProperties_WsdlSelector, ApiCreateOrUpdateProperties_WsdlSelectorGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApiCreateOrUpdateProperties_WsdlSelector runs a test to see if a specific instance of ApiCreateOrUpdateProperties_WsdlSelector round trips to JSON and back losslessly
func RunJSONSerializationTestForApiCreateOrUpdateProperties_WsdlSelector(subject ApiCreateOrUpdateProperties_WsdlSelector) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual ApiCreateOrUpdateProperties_WsdlSelector
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of ApiCreateOrUpdateProperties_WsdlSelector instances for property testing - lazily instantiated by
// ApiCreateOrUpdateProperties_WsdlSelectorGenerator()
var apiCreateOrUpdateProperties_WsdlSelectorGenerator gopter.Gen

// ApiCreateOrUpdateProperties_WsdlSelectorGenerator returns a generator of ApiCreateOrUpdateProperties_WsdlSelector instances for property testing.
func ApiCreateOrUpdateProperties_WsdlSelectorGenerator() gopter.Gen {
	if apiCreateOrUpdateProperties_WsdlSelectorGenerator != nil {
		return apiCreateOrUpdateProperties_WsdlSelectorGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApiCreateOrUpdateProperties_WsdlSelector(generators)
	apiCreateOrUpdateProperties_WsdlSelectorGenerator = gen.Struct(reflect.TypeOf(ApiCreateOrUpdateProperties_WsdlSelector{}), generators)

	return apiCreateOrUpdateProperties_WsdlSelectorGenerator
}

// AddIndependentPropertyGeneratorsForApiCreateOrUpdateProperties_WsdlSelector is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForApiCreateOrUpdateProperties_WsdlSelector(gens map[string]gopter.Gen) {
	gens["WsdlEndpointName"] = gen.PtrOf(gen.AlphaString())
	gens["WsdlServiceName"] = gen.PtrOf(gen.AlphaString())
}

func Test_ApiLicenseInformation_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 100
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of ApiLicenseInformation via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApiLicenseInformation, ApiLicenseInformationGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApiLicenseInformation runs a test to see if a specific instance of ApiLicenseInformation round trips to JSON and back losslessly
func RunJSONSerializationTestForApiLicenseInformation(subject ApiLicenseInformation) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual ApiLicenseInformation
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of ApiLicenseInformation instances for property testing - lazily instantiated by
// ApiLicenseInformationGenerator()
var apiLicenseInformationGenerator gopter.Gen

// ApiLicenseInformationGenerator returns a generator of ApiLicenseInformation instances for property testing.
func ApiLicenseInformationGenerator() gopter.Gen {
	if apiLicenseInformationGenerator != nil {
		return apiLicenseInformationGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApiLicenseInformation(generators)
	apiLicenseInformationGenerator = gen.Struct(reflect.TypeOf(ApiLicenseInformation{}), generators)

	return apiLicenseInformationGenerator
}

// AddIndependentPropertyGeneratorsForApiLicenseInformation is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForApiLicenseInformation(gens map[string]gopter.Gen) {
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["Url"] = gen.PtrOf(gen.AlphaString())
}

func Test_ApiLicenseInformation_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 80
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of ApiLicenseInformation_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApiLicenseInformation_STATUS, ApiLicenseInformation_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApiLicenseInformation_STATUS runs a test to see if a specific instance of ApiLicenseInformation_STATUS round trips to JSON and back losslessly
func RunJSONSerializationTestForApiLicenseInformation_STATUS(subject ApiLicenseInformation_STATUS) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual ApiLicenseInformation_STATUS
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of ApiLicenseInformation_STATUS instances for property testing - lazily instantiated by
// ApiLicenseInformation_STATUSGenerator()
var apiLicenseInformation_STATUSGenerator gopter.Gen

// ApiLicenseInformation_STATUSGenerator returns a generator of ApiLicenseInformation_STATUS instances for property testing.
func ApiLicenseInformation_STATUSGenerator() gopter.Gen {
	if apiLicenseInformation_STATUSGenerator != nil {
		return apiLicenseInformation_STATUSGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApiLicenseInformation_STATUS(generators)
	apiLicenseInformation_STATUSGenerator = gen.Struct(reflect.TypeOf(ApiLicenseInformation_STATUS{}), generators)

	return apiLicenseInformation_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForApiLicenseInformation_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForApiLicenseInformation_STATUS(gens map[string]gopter.Gen) {
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["Url"] = gen.PtrOf(gen.AlphaString())
}

func Test_ApiOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 100
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of ApiOperatorSpec via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApiOperatorSpec, ApiOperatorSpecGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApiOperatorSpec runs a test to see if a specific instance of ApiOperatorSpec round trips to JSON and back losslessly
func RunJSONSerializationTestForApiOperatorSpec(subject ApiOperatorSpec) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual ApiOperatorSpec
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of ApiOperatorSpec instances for property testing - lazily instantiated by ApiOperatorSpecGenerator()
var apiOperatorSpecGenerator gopter.Gen

// ApiOperatorSpecGenerator returns a generator of ApiOperatorSpec instances for property testing.
func ApiOperatorSpecGenerator() gopter.Gen {
	if apiOperatorSpecGenerator != nil {
		return apiOperatorSpecGenerator
	}

	generators := make(map[string]gopter.Gen)
	apiOperatorSpecGenerator = gen.Struct(reflect.TypeOf(ApiOperatorSpec{}), generators)

	return apiOperatorSpecGenerator
}

func Test_ApiVersionSetContractDetails_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 100
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of ApiVersionSetContractDetails via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApiVersionSetContractDetails, ApiVersionSetContractDetailsGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApiVersionSetContractDetails runs a test to see if a specific instance of ApiVersionSetContractDetails round trips to JSON and back losslessly
func RunJSONSerializationTestForApiVersionSetContractDetails(subject ApiVersionSetContractDetails) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual ApiVersionSetContractDetails
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of ApiVersionSetContractDetails instances for property testing - lazily instantiated by
// ApiVersionSetContractDetailsGenerator()
var apiVersionSetContractDetailsGenerator gopter.Gen

// ApiVersionSetContractDetailsGenerator returns a generator of ApiVersionSetContractDetails instances for property testing.
func ApiVersionSetContractDetailsGenerator() gopter.Gen {
	if apiVersionSetContractDetailsGenerator != nil {
		return apiVersionSetContractDetailsGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApiVersionSetContractDetails(generators)
	apiVersionSetContractDetailsGenerator = gen.Struct(reflect.TypeOf(ApiVersionSetContractDetails{}), generators)

	return apiVersionSetContractDetailsGenerator
}

// AddIndependentPropertyGeneratorsForApiVersionSetContractDetails is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForApiVersionSetContractDetails(gens map[string]gopter.Gen) {
	gens["Description"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["VersionHeaderName"] = gen.PtrOf(gen.AlphaString())
	gens["VersionQueryName"] = gen.PtrOf(gen.AlphaString())
	gens["VersioningScheme"] = gen.PtrOf(gen.AlphaString())
}

func Test_ApiVersionSetContractDetails_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 80
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of ApiVersionSetContractDetails_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApiVersionSetContractDetails_STATUS, ApiVersionSetContractDetails_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApiVersionSetContractDetails_STATUS runs a test to see if a specific instance of ApiVersionSetContractDetails_STATUS round trips to JSON and back losslessly
func RunJSONSerializationTestForApiVersionSetContractDetails_STATUS(subject ApiVersionSetContractDetails_STATUS) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual ApiVersionSetContractDetails_STATUS
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of ApiVersionSetContractDetails_STATUS instances for property testing - lazily instantiated by
// ApiVersionSetContractDetails_STATUSGenerator()
var apiVersionSetContractDetails_STATUSGenerator gopter.Gen

// ApiVersionSetContractDetails_STATUSGenerator returns a generator of ApiVersionSetContractDetails_STATUS instances for property testing.
func ApiVersionSetContractDetails_STATUSGenerator() gopter.Gen {
	if apiVersionSetContractDetails_STATUSGenerator != nil {
		return apiVersionSetContractDetails_STATUSGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApiVersionSetContractDetails_STATUS(generators)
	apiVersionSetContractDetails_STATUSGenerator = gen.Struct(reflect.TypeOf(ApiVersionSetContractDetails_STATUS{}), generators)

	return apiVersionSetContractDetails_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForApiVersionSetContractDetails_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForApiVersionSetContractDetails_STATUS(gens map[string]gopter.Gen) {
	gens["Description"] = gen.PtrOf(gen.AlphaString())
	gens["Id"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["VersionHeaderName"] = gen.PtrOf(gen.AlphaString())
	gens["VersionQueryName"] = gen.PtrOf(gen.AlphaString())
	gens["VersioningScheme"] = gen.PtrOf(gen.AlphaString())
}

func Test_Api_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 80
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of Api_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApi_STATUS, Api_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApi_STATUS runs a test to see if a specific instance of Api_STATUS round trips to JSON and back losslessly
func RunJSONSerializationTestForApi_STATUS(subject Api_STATUS) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual Api_STATUS
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of Api_STATUS instances for property testing - lazily instantiated by Api_STATUSGenerator()
var api_STATUSGenerator gopter.Gen

// Api_STATUSGenerator returns a generator of Api_STATUS instances for property testing.
// We first initialize api_STATUSGenerator with a simplified generator based on the
// fields with primitive types then replacing it with a more complex one that also handles complex fields
// to ensure any cycles in the object graph properly terminate.
func Api_STATUSGenerator() gopter.Gen {
	if api_STATUSGenerator != nil {
		return api_STATUSGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApi_STATUS(generators)
	api_STATUSGenerator = gen.Struct(reflect.TypeOf(Api_STATUS{}), generators)

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApi_STATUS(generators)
	AddRelatedPropertyGeneratorsForApi_STATUS(generators)
	api_STATUSGenerator = gen.Struct(reflect.TypeOf(Api_STATUS{}), generators)

	return api_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForApi_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForApi_STATUS(gens map[string]gopter.Gen) {
	gens["APIVersion"] = gen.PtrOf(gen.AlphaString())
	gens["ApiRevision"] = gen.PtrOf(gen.AlphaString())
	gens["ApiRevisionDescription"] = gen.PtrOf(gen.AlphaString())
	gens["ApiVersionDescription"] = gen.PtrOf(gen.AlphaString())
	gens["ApiVersionSetId"] = gen.PtrOf(gen.AlphaString())
	gens["Description"] = gen.PtrOf(gen.AlphaString())
	gens["DisplayName"] = gen.PtrOf(gen.AlphaString())
	gens["Id"] = gen.PtrOf(gen.AlphaString())
	gens["IsCurrent"] = gen.PtrOf(gen.Bool())
	gens["IsOnline"] = gen.PtrOf(gen.Bool())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["Path"] = gen.PtrOf(gen.AlphaString())
	gens["PropertiesType"] = gen.PtrOf(gen.AlphaString())
	gens["Protocols"] = gen.SliceOf(gen.AlphaString())
	gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString())
	gens["ServiceUrl"] = gen.PtrOf(gen.AlphaString())
	gens["SourceApiId"] = gen.PtrOf(gen.AlphaString())
	gens["SubscriptionRequired"] = gen.PtrOf(gen.Bool())
	gens["TermsOfServiceUrl"] = gen.PtrOf(gen.AlphaString())
	gens["Type"] = gen.PtrOf(gen.AlphaString())
}

// AddRelatedPropertyGeneratorsForApi_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForApi_STATUS(gens map[string]gopter.Gen) {
	gens["ApiVersionSet"] = gen.PtrOf(ApiVersionSetContractDetails_STATUSGenerator())
	gens["AuthenticationSettings"] = gen.PtrOf(AuthenticationSettingsContract_STATUSGenerator())
	gens["Contact"] = gen.PtrOf(ApiContactInformation_STATUSGenerator())
	gens["License"] = gen.PtrOf(ApiLicenseInformation_STATUSGenerator())
	gens["SubscriptionKeyParameterNames"] = gen.PtrOf(SubscriptionKeyParameterNamesContract_STATUSGenerator())
}

func Test_Api_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 80
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of Api_Spec via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApi_Spec, Api_SpecGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForApi_Spec runs a test to see if a specific instance of Api_Spec round trips to JSON and back losslessly
func RunJSONSerializationTestForApi_Spec(subject Api_Spec) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual Api_Spec
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of Api_Spec instances for property testing - lazily instantiated by Api_SpecGenerator()
var api_SpecGenerator gopter.Gen

// Api_SpecGenerator returns a generator of Api_Spec instances for property testing.
// We first initialize api_SpecGenerator with a simplified generator based on the
// fields with primitive types then replacing it with a more complex one that also handles complex fields
// to ensure any cycles in the object graph properly terminate.
func Api_SpecGenerator() gopter.Gen {
	if api_SpecGenerator != nil {
		return api_SpecGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApi_Spec(generators)
	api_SpecGenerator = gen.Struct(reflect.TypeOf(Api_Spec{}), generators)

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForApi_Spec(generators)
	AddRelatedPropertyGeneratorsForApi_Spec(generators)
	api_SpecGenerator = gen.Struct(reflect.TypeOf(Api_Spec{}), generators)

	return api_SpecGenerator
}

// AddIndependentPropertyGeneratorsForApi_Spec is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForApi_Spec(gens map[string]gopter.Gen) {
	gens["APIVersion"] = gen.PtrOf(gen.AlphaString())
	gens["ApiRevision"] = gen.PtrOf(gen.AlphaString())
	gens["ApiRevisionDescription"] = gen.PtrOf(gen.AlphaString())
	gens["ApiType"] = gen.PtrOf(gen.AlphaString())
	gens["ApiVersionDescription"] = gen.PtrOf(gen.AlphaString())
	gens["AzureName"] = gen.AlphaString()
	gens["Description"] = gen.PtrOf(gen.AlphaString())
	gens["DisplayName"] = gen.PtrOf(gen.AlphaString())
	gens["Format"] = gen.PtrOf(gen.AlphaString())
	gens["IsCurrent"] = gen.PtrOf(gen.Bool())
	gens["OriginalVersion"] = gen.AlphaString()
	gens["Path"] = gen.PtrOf(gen.AlphaString())
	gens["Protocols"] = gen.SliceOf(gen.AlphaString())
	gens["ServiceUrl"] = gen.PtrOf(gen.AlphaString())
	gens["SubscriptionRequired"] = gen.PtrOf(gen.Bool())
	gens["TermsOfServiceUrl"] = gen.PtrOf(gen.AlphaString())
	gens["TranslateRequiredQueryParameters"] = gen.PtrOf(gen.AlphaString())
	gens["Type"] = gen.PtrOf(gen.AlphaString())
	gens["Value"] = gen.PtrOf(gen.AlphaString())
}

// AddRelatedPropertyGeneratorsForApi_Spec is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForApi_Spec(gens map[string]gopter.Gen) {
	gens["ApiVersionSet"] = gen.PtrOf(ApiVersionSetContractDetailsGenerator())
	gens["AuthenticationSettings"] = gen.PtrOf(AuthenticationSettingsContractGenerator())
	gens["Contact"] = gen.PtrOf(ApiContactInformationGenerator())
	gens["License"] = gen.PtrOf(ApiLicenseInformationGenerator())
	gens["OperatorSpec"] = gen.PtrOf(ApiOperatorSpecGenerator())
	gens["SubscriptionKeyParameterNames"] = gen.PtrOf(SubscriptionKeyParameterNamesContractGenerator())
	gens["WsdlSelector"] = gen.PtrOf(ApiCreateOrUpdateProperties_WsdlSelectorGenerator())
}

func Test_AuthenticationSettingsContract_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 100
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of AuthenticationSettingsContract via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForAuthenticationSettingsContract, AuthenticationSettingsContractGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForAuthenticationSettingsContract runs a test to see if a specific instance of AuthenticationSettingsContract round trips to JSON and back losslessly
func RunJSONSerializationTestForAuthenticationSettingsContract(subject AuthenticationSettingsContract) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual AuthenticationSettingsContract
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of AuthenticationSettingsContract instances for property testing - lazily instantiated by
// AuthenticationSettingsContractGenerator()
var authenticationSettingsContractGenerator gopter.Gen

// AuthenticationSettingsContractGenerator returns a generator of AuthenticationSettingsContract instances for property testing.
func AuthenticationSettingsContractGenerator() gopter.Gen {
	if authenticationSettingsContractGenerator != nil {
		return authenticationSettingsContractGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddRelatedPropertyGeneratorsForAuthenticationSettingsContract(generators)
	authenticationSettingsContractGenerator = gen.Struct(reflect.TypeOf(AuthenticationSettingsContract{}), generators)

	return authenticationSettingsContractGenerator
}

// AddRelatedPropertyGeneratorsForAuthenticationSettingsContract is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForAuthenticationSettingsContract(gens map[string]gopter.Gen) {
	gens["OAuth2"] = gen.PtrOf(OAuth2AuthenticationSettingsContractGenerator())
	gens["OAuth2AuthenticationSettings"] = gen.SliceOf(OAuth2AuthenticationSettingsContractGenerator())
	gens["Openid"] = gen.PtrOf(OpenIdAuthenticationSettingsContractGenerator())
	gens["OpenidAuthenticationSettings"] = gen.SliceOf(OpenIdAuthenticationSettingsContractGenerator())
}

func Test_AuthenticationSettingsContract_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 80
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of AuthenticationSettingsContract_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForAuthenticationSettingsContract_STATUS, AuthenticationSettingsContract_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForAuthenticationSettingsContract_STATUS runs a test to see if a specific instance of AuthenticationSettingsContract_STATUS round trips to JSON and back losslessly
func RunJSONSerializationTestForAuthenticationSettingsContract_STATUS(subject AuthenticationSettingsContract_STATUS) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual AuthenticationSettingsContract_STATUS
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of AuthenticationSettingsContract_STATUS instances for property testing - lazily instantiated by
// AuthenticationSettingsContract_STATUSGenerator()
var authenticationSettingsContract_STATUSGenerator gopter.Gen

// AuthenticationSettingsContract_STATUSGenerator returns a generator of AuthenticationSettingsContract_STATUS instances for property testing.
func AuthenticationSettingsContract_STATUSGenerator() gopter.Gen {
	if authenticationSettingsContract_STATUSGenerator != nil {
		return authenticationSettingsContract_STATUSGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddRelatedPropertyGeneratorsForAuthenticationSettingsContract_STATUS(generators)
	authenticationSettingsContract_STATUSGenerator = gen.Struct(reflect.TypeOf(AuthenticationSettingsContract_STATUS{}), generators)

	return authenticationSettingsContract_STATUSGenerator
}

// AddRelatedPropertyGeneratorsForAuthenticationSettingsContract_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForAuthenticationSettingsContract_STATUS(gens map[string]gopter.Gen) {
	gens["OAuth2"] = gen.PtrOf(OAuth2AuthenticationSettingsContract_STATUSGenerator())
	gens["OAuth2AuthenticationSettings"] = gen.SliceOf(OAuth2AuthenticationSettingsContract_STATUSGenerator())
	gens["Openid"] = gen.PtrOf(OpenIdAuthenticationSettingsContract_STATUSGenerator())
	gens["OpenidAuthenticationSettings"] = gen.SliceOf(OpenIdAuthenticationSettingsContract_STATUSGenerator())
}

func Test_OAuth2AuthenticationSettingsContract_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 100
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of OAuth2AuthenticationSettingsContract via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForOAuth2AuthenticationSettingsContract, OAuth2AuthenticationSettingsContractGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForOAuth2AuthenticationSettingsContract runs a test to see if a specific instance of OAuth2AuthenticationSettingsContract round trips to JSON and back losslessly
func RunJSONSerializationTestForOAuth2AuthenticationSettingsContract(subject OAuth2AuthenticationSettingsContract) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual OAuth2AuthenticationSettingsContract
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of OAuth2AuthenticationSettingsContract instances for property testing - lazily instantiated by
// OAuth2AuthenticationSettingsContractGenerator()
var oAuth2AuthenticationSettingsContractGenerator gopter.Gen

// OAuth2AuthenticationSettingsContractGenerator returns a generator of OAuth2AuthenticationSettingsContract instances for property testing.
func OAuth2AuthenticationSettingsContractGenerator() gopter.Gen {
	if oAuth2AuthenticationSettingsContractGenerator != nil {
		return oAuth2AuthenticationSettingsContractGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForOAuth2AuthenticationSettingsContract(generators)
	oAuth2AuthenticationSettingsContractGenerator = gen.Struct(reflect.TypeOf(OAuth2AuthenticationSettingsContract{}), generators)

	return oAuth2AuthenticationSettingsContractGenerator
}

// AddIndependentPropertyGeneratorsForOAuth2AuthenticationSettingsContract is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForOAuth2AuthenticationSettingsContract(gens map[string]gopter.Gen) {
	gens["AuthorizationServerId"] = gen.PtrOf(gen.AlphaString())
	gens["Scope"] = gen.PtrOf(gen.AlphaString())
}

func Test_OAuth2AuthenticationSettingsContract_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 80
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of OAuth2AuthenticationSettingsContract_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForOAuth2AuthenticationSettingsContract_STATUS, OAuth2AuthenticationSettingsContract_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForOAuth2AuthenticationSettingsContract_STATUS runs a test to see if a specific instance of OAuth2AuthenticationSettingsContract_STATUS round trips to JSON and back losslessly
func RunJSONSerializationTestForOAuth2AuthenticationSettingsContract_STATUS(subject OAuth2AuthenticationSettingsContract_STATUS) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual OAuth2AuthenticationSettingsContract_STATUS
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of OAuth2AuthenticationSettingsContract_STATUS instances for property testing - lazily instantiated by
// OAuth2AuthenticationSettingsContract_STATUSGenerator()
var oAuth2AuthenticationSettingsContract_STATUSGenerator gopter.Gen

// OAuth2AuthenticationSettingsContract_STATUSGenerator returns a generator of OAuth2AuthenticationSettingsContract_STATUS instances for property testing.
func OAuth2AuthenticationSettingsContract_STATUSGenerator() gopter.Gen {
	if oAuth2AuthenticationSettingsContract_STATUSGenerator != nil {
		return oAuth2AuthenticationSettingsContract_STATUSGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForOAuth2AuthenticationSettingsContract_STATUS(generators)
	oAuth2AuthenticationSettingsContract_STATUSGenerator = gen.Struct(reflect.TypeOf(OAuth2AuthenticationSettingsContract_STATUS{}), generators)

	return oAuth2AuthenticationSettingsContract_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForOAuth2AuthenticationSettingsContract_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForOAuth2AuthenticationSettingsContract_STATUS(gens map[string]gopter.Gen) {
	gens["AuthorizationServerId"] = gen.PtrOf(gen.AlphaString())
	gens["Scope"] = gen.PtrOf(gen.AlphaString())
}

func Test_OpenIdAuthenticationSettingsContract_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 100
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of OpenIdAuthenticationSettingsContract via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForOpenIdAuthenticationSettingsContract, OpenIdAuthenticationSettingsContractGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForOpenIdAuthenticationSettingsContract runs a test to see if a specific instance of OpenIdAuthenticationSettingsContract round trips to JSON and back losslessly
func RunJSONSerializationTestForOpenIdAuthenticationSettingsContract(subject OpenIdAuthenticationSettingsContract) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual OpenIdAuthenticationSettingsContract
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of OpenIdAuthenticationSettingsContract instances for property testing - lazily instantiated by
// OpenIdAuthenticationSettingsContractGenerator()
var openIdAuthenticationSettingsContractGenerator gopter.Gen

// OpenIdAuthenticationSettingsContractGenerator returns a generator of OpenIdAuthenticationSettingsContract instances for property testing.
func OpenIdAuthenticationSettingsContractGenerator() gopter.Gen {
	if openIdAuthenticationSettingsContractGenerator != nil {
		return openIdAuthenticationSettingsContractGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForOpenIdAuthenticationSettingsContract(generators)
	openIdAuthenticationSettingsContractGenerator = gen.Struct(reflect.TypeOf(OpenIdAuthenticationSettingsContract{}), generators)

	return openIdAuthenticationSettingsContractGenerator
}

// AddIndependentPropertyGeneratorsForOpenIdAuthenticationSettingsContract is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForOpenIdAuthenticationSettingsContract(gens map[string]gopter.Gen) {
	gens["BearerTokenSendingMethods"] = gen.SliceOf(gen.AlphaString())
	gens["OpenidProviderId"] = gen.PtrOf(gen.AlphaString())
}

func Test_OpenIdAuthenticationSettingsContract_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 80
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of OpenIdAuthenticationSettingsContract_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForOpenIdAuthenticationSettingsContract_STATUS, OpenIdAuthenticationSettingsContract_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForOpenIdAuthenticationSettingsContract_STATUS runs a test to see if a specific instance of OpenIdAuthenticationSettingsContract_STATUS round trips to JSON and back losslessly
func RunJSONSerializationTestForOpenIdAuthenticationSettingsContract_STATUS(subject OpenIdAuthenticationSettingsContract_STATUS) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual OpenIdAuthenticationSettingsContract_STATUS
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of OpenIdAuthenticationSettingsContract_STATUS instances for property testing - lazily instantiated by
// OpenIdAuthenticationSettingsContract_STATUSGenerator()
var openIdAuthenticationSettingsContract_STATUSGenerator gopter.Gen

// OpenIdAuthenticationSettingsContract_STATUSGenerator returns a generator of OpenIdAuthenticationSettingsContract_STATUS instances for property testing.
func OpenIdAuthenticationSettingsContract_STATUSGenerator() gopter.Gen {
	if openIdAuthenticationSettingsContract_STATUSGenerator != nil {
		return openIdAuthenticationSettingsContract_STATUSGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForOpenIdAuthenticationSettingsContract_STATUS(generators)
	openIdAuthenticationSettingsContract_STATUSGenerator = gen.Struct(reflect.TypeOf(OpenIdAuthenticationSettingsContract_STATUS{}), generators)

	return openIdAuthenticationSettingsContract_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForOpenIdAuthenticationSettingsContract_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForOpenIdAuthenticationSettingsContract_STATUS(gens map[string]gopter.Gen) {
	gens["BearerTokenSendingMethods"] = gen.SliceOf(gen.AlphaString())
	gens["OpenidProviderId"] = gen.PtrOf(gen.AlphaString())
}

func Test_SubscriptionKeyParameterNamesContract_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 100
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of SubscriptionKeyParameterNamesContract via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForSubscriptionKeyParameterNamesContract, SubscriptionKeyParameterNamesContractGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForSubscriptionKeyParameterNamesContract runs a test to see if a specific instance of SubscriptionKeyParameterNamesContract round trips to JSON and back losslessly
func RunJSONSerializationTestForSubscriptionKeyParameterNamesContract(subject SubscriptionKeyParameterNamesContract) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual SubscriptionKeyParameterNamesContract
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of SubscriptionKeyParameterNamesContract instances for property testing - lazily instantiated by
// SubscriptionKeyParameterNamesContractGenerator()
var subscriptionKeyParameterNamesContractGenerator gopter.Gen

// SubscriptionKeyParameterNamesContractGenerator returns a generator of SubscriptionKeyParameterNamesContract instances for property testing.
func SubscriptionKeyParameterNamesContractGenerator() gopter.Gen {
	if subscriptionKeyParameterNamesContractGenerator != nil {
		return subscriptionKeyParameterNamesContractGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForSubscriptionKeyParameterNamesContract(generators)
	subscriptionKeyParameterNamesContractGenerator = gen.Struct(reflect.TypeOf(SubscriptionKeyParameterNamesContract{}), generators)

	return subscriptionKeyParameterNamesContractGenerator
}

// AddIndependentPropertyGeneratorsForSubscriptionKeyParameterNamesContract is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForSubscriptionKeyParameterNamesContract(gens map[string]gopter.Gen) {
	gens["Header"] = gen.PtrOf(gen.AlphaString())
	gens["Query"] = gen.PtrOf(gen.AlphaString())
}

func Test_SubscriptionKeyParameterNamesContract_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) {
	t.Parallel()
	parameters := gopter.DefaultTestParameters()
	parameters.MinSuccessfulTests = 80
	parameters.MaxSize = 3
	properties := gopter.NewProperties(parameters)
	properties.Property(
		"Round trip of SubscriptionKeyParameterNamesContract_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForSubscriptionKeyParameterNamesContract_STATUS, SubscriptionKeyParameterNamesContract_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

// RunJSONSerializationTestForSubscriptionKeyParameterNamesContract_STATUS runs a test to see if a specific instance of SubscriptionKeyParameterNamesContract_STATUS round trips to JSON and back losslessly
func RunJSONSerializationTestForSubscriptionKeyParameterNamesContract_STATUS(subject SubscriptionKeyParameterNamesContract_STATUS) string {
	// Serialize to JSON
	bin, err := json.Marshal(subject)
	if err != nil {
		return err.Error()
	}

	// Deserialize back into memory
	var actual SubscriptionKeyParameterNamesContract_STATUS
	err = json.Unmarshal(bin, &actual)
	if err != nil {
		return err.Error()
	}

	// Check for outcome
	match := cmp.Equal(subject, actual, cmpopts.EquateEmpty())
	if !match {
		actualFmt := pretty.Sprint(actual)
		subjectFmt := pretty.Sprint(subject)
		result := diff.Diff(subjectFmt, actualFmt)
		return result
	}

	return ""
}

// Generator of SubscriptionKeyParameterNamesContract_STATUS instances for property testing - lazily instantiated by
// SubscriptionKeyParameterNamesContract_STATUSGenerator()
var subscriptionKeyParameterNamesContract_STATUSGenerator gopter.Gen

// SubscriptionKeyParameterNamesContract_STATUSGenerator returns a generator of SubscriptionKeyParameterNamesContract_STATUS instances for property testing.
func SubscriptionKeyParameterNamesContract_STATUSGenerator() gopter.Gen {
	if subscriptionKeyParameterNamesContract_STATUSGenerator != nil {
		return subscriptionKeyParameterNamesContract_STATUSGenerator
	}

	generators := make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForSubscriptionKeyParameterNamesContract_STATUS(generators)
	subscriptionKeyParameterNamesContract_STATUSGenerator = gen.Struct(reflect.TypeOf(SubscriptionKeyParameterNamesContract_STATUS{}), generators)

	return subscriptionKeyParameterNamesContract_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForSubscriptionKeyParameterNamesContract_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForSubscriptionKeyParameterNamesContract_STATUS(gens map[string]gopter.Gen) {
	gens["Header"] = gen.PtrOf(gen.AlphaString())
	gens["Query"] = gen.PtrOf(gen.AlphaString())
}
