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

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_AzureBlobDefinition_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 AzureBlobDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForAzureBlobDefinition_STATUS, AzureBlobDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual AzureBlobDefinition_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 AzureBlobDefinition_STATUS instances for property testing - lazily instantiated by
// AzureBlobDefinition_STATUSGenerator()
var azureBlobDefinition_STATUSGenerator gopter.Gen

// AzureBlobDefinition_STATUSGenerator returns a generator of AzureBlobDefinition_STATUS instances for property testing.
// We first initialize azureBlobDefinition_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 AzureBlobDefinition_STATUSGenerator() gopter.Gen {
	if azureBlobDefinition_STATUSGenerator != nil {
		return azureBlobDefinition_STATUSGenerator
	}

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForAzureBlobDefinition_STATUS(generators)
	AddRelatedPropertyGeneratorsForAzureBlobDefinition_STATUS(generators)
	azureBlobDefinition_STATUSGenerator = gen.Struct(reflect.TypeOf(AzureBlobDefinition_STATUS{}), generators)

	return azureBlobDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForAzureBlobDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForAzureBlobDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["ContainerName"] = gen.PtrOf(gen.AlphaString())
	gens["LocalAuthRef"] = gen.PtrOf(gen.AlphaString())
	gens["SyncIntervalInSeconds"] = gen.PtrOf(gen.Int())
	gens["TimeoutInSeconds"] = gen.PtrOf(gen.Int())
	gens["Url"] = gen.PtrOf(gen.AlphaString())
}

// AddRelatedPropertyGeneratorsForAzureBlobDefinition_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForAzureBlobDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["ManagedIdentity"] = gen.PtrOf(ManagedIdentityDefinition_STATUSGenerator())
	gens["ServicePrincipal"] = gen.PtrOf(ServicePrincipalDefinition_STATUSGenerator())
}

func Test_BucketDefinition_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 BucketDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForBucketDefinition_STATUS, BucketDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual BucketDefinition_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 BucketDefinition_STATUS instances for property testing - lazily instantiated by
// BucketDefinition_STATUSGenerator()
var bucketDefinition_STATUSGenerator gopter.Gen

// BucketDefinition_STATUSGenerator returns a generator of BucketDefinition_STATUS instances for property testing.
func BucketDefinition_STATUSGenerator() gopter.Gen {
	if bucketDefinition_STATUSGenerator != nil {
		return bucketDefinition_STATUSGenerator
	}

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

	return bucketDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForBucketDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForBucketDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["BucketName"] = gen.PtrOf(gen.AlphaString())
	gens["Insecure"] = gen.PtrOf(gen.Bool())
	gens["LocalAuthRef"] = gen.PtrOf(gen.AlphaString())
	gens["SyncIntervalInSeconds"] = gen.PtrOf(gen.Int())
	gens["TimeoutInSeconds"] = gen.PtrOf(gen.Int())
	gens["Url"] = gen.PtrOf(gen.AlphaString())
}

func Test_FluxConfiguration_Properties_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 FluxConfiguration_Properties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForFluxConfiguration_Properties_STATUS, FluxConfiguration_Properties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual FluxConfiguration_Properties_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 FluxConfiguration_Properties_STATUS instances for property testing - lazily instantiated by
// FluxConfiguration_Properties_STATUSGenerator()
var fluxConfiguration_Properties_STATUSGenerator gopter.Gen

// FluxConfiguration_Properties_STATUSGenerator returns a generator of FluxConfiguration_Properties_STATUS instances for property testing.
// We first initialize fluxConfiguration_Properties_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 FluxConfiguration_Properties_STATUSGenerator() gopter.Gen {
	if fluxConfiguration_Properties_STATUSGenerator != nil {
		return fluxConfiguration_Properties_STATUSGenerator
	}

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForFluxConfiguration_Properties_STATUS(generators)
	AddRelatedPropertyGeneratorsForFluxConfiguration_Properties_STATUS(generators)
	fluxConfiguration_Properties_STATUSGenerator = gen.Struct(reflect.TypeOf(FluxConfiguration_Properties_STATUS{}), generators)

	return fluxConfiguration_Properties_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForFluxConfiguration_Properties_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForFluxConfiguration_Properties_STATUS(gens map[string]gopter.Gen) {
	gens["ComplianceState"] = gen.PtrOf(gen.OneConstOf(
		FluxComplianceStateDefinition_STATUS_Compliant,
		FluxComplianceStateDefinition_STATUS_NonCompliant,
		FluxComplianceStateDefinition_STATUS_Pending,
		FluxComplianceStateDefinition_STATUS_Suspended,
		FluxComplianceStateDefinition_STATUS_Unknown))
	gens["ConfigurationProtectedSettings"] = gen.MapOf(
		gen.AlphaString(),
		gen.AlphaString())
	gens["ErrorMessage"] = gen.PtrOf(gen.AlphaString())
	gens["Namespace"] = gen.PtrOf(gen.AlphaString())
	gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf(
		ProvisioningStateDefinition_STATUS_Canceled,
		ProvisioningStateDefinition_STATUS_Creating,
		ProvisioningStateDefinition_STATUS_Deleting,
		ProvisioningStateDefinition_STATUS_Failed,
		ProvisioningStateDefinition_STATUS_Succeeded,
		ProvisioningStateDefinition_STATUS_Updating))
	gens["ReconciliationWaitDuration"] = gen.PtrOf(gen.AlphaString())
	gens["RepositoryPublicKey"] = gen.PtrOf(gen.AlphaString())
	gens["Scope"] = gen.PtrOf(gen.OneConstOf(ScopeDefinition_STATUS_Cluster, ScopeDefinition_STATUS_Namespace))
	gens["SourceKind"] = gen.PtrOf(gen.OneConstOf(SourceKindDefinition_STATUS_AzureBlob, SourceKindDefinition_STATUS_Bucket, SourceKindDefinition_STATUS_GitRepository))
	gens["SourceSyncedCommitId"] = gen.PtrOf(gen.AlphaString())
	gens["SourceUpdatedAt"] = gen.PtrOf(gen.AlphaString())
	gens["StatusUpdatedAt"] = gen.PtrOf(gen.AlphaString())
	gens["Suspend"] = gen.PtrOf(gen.Bool())
	gens["WaitForReconciliation"] = gen.PtrOf(gen.Bool())
}

// AddRelatedPropertyGeneratorsForFluxConfiguration_Properties_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForFluxConfiguration_Properties_STATUS(gens map[string]gopter.Gen) {
	gens["AzureBlob"] = gen.PtrOf(AzureBlobDefinition_STATUSGenerator())
	gens["Bucket"] = gen.PtrOf(BucketDefinition_STATUSGenerator())
	gens["GitRepository"] = gen.PtrOf(GitRepositoryDefinition_STATUSGenerator())
	gens["Kustomizations"] = gen.MapOf(
		gen.AlphaString(),
		KustomizationDefinition_STATUSGenerator())
	gens["Statuses"] = gen.SliceOf(ObjectStatusDefinition_STATUSGenerator())
}

func Test_FluxConfiguration_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 FluxConfiguration_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForFluxConfiguration_STATUS, FluxConfiguration_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual FluxConfiguration_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 FluxConfiguration_STATUS instances for property testing - lazily instantiated by
// FluxConfiguration_STATUSGenerator()
var fluxConfiguration_STATUSGenerator gopter.Gen

// FluxConfiguration_STATUSGenerator returns a generator of FluxConfiguration_STATUS instances for property testing.
// We first initialize fluxConfiguration_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 FluxConfiguration_STATUSGenerator() gopter.Gen {
	if fluxConfiguration_STATUSGenerator != nil {
		return fluxConfiguration_STATUSGenerator
	}

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForFluxConfiguration_STATUS(generators)
	AddRelatedPropertyGeneratorsForFluxConfiguration_STATUS(generators)
	fluxConfiguration_STATUSGenerator = gen.Struct(reflect.TypeOf(FluxConfiguration_STATUS{}), generators)

	return fluxConfiguration_STATUSGenerator
}

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

// AddRelatedPropertyGeneratorsForFluxConfiguration_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForFluxConfiguration_STATUS(gens map[string]gopter.Gen) {
	gens["Properties"] = gen.PtrOf(FluxConfiguration_Properties_STATUSGenerator())
}

func Test_GitRepositoryDefinition_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 GitRepositoryDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForGitRepositoryDefinition_STATUS, GitRepositoryDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual GitRepositoryDefinition_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 GitRepositoryDefinition_STATUS instances for property testing - lazily instantiated by
// GitRepositoryDefinition_STATUSGenerator()
var gitRepositoryDefinition_STATUSGenerator gopter.Gen

// GitRepositoryDefinition_STATUSGenerator returns a generator of GitRepositoryDefinition_STATUS instances for property testing.
// We first initialize gitRepositoryDefinition_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 GitRepositoryDefinition_STATUSGenerator() gopter.Gen {
	if gitRepositoryDefinition_STATUSGenerator != nil {
		return gitRepositoryDefinition_STATUSGenerator
	}

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForGitRepositoryDefinition_STATUS(generators)
	AddRelatedPropertyGeneratorsForGitRepositoryDefinition_STATUS(generators)
	gitRepositoryDefinition_STATUSGenerator = gen.Struct(reflect.TypeOf(GitRepositoryDefinition_STATUS{}), generators)

	return gitRepositoryDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForGitRepositoryDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForGitRepositoryDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["HttpsUser"] = gen.PtrOf(gen.AlphaString())
	gens["LocalAuthRef"] = gen.PtrOf(gen.AlphaString())
	gens["SshKnownHosts"] = gen.PtrOf(gen.AlphaString())
	gens["SyncIntervalInSeconds"] = gen.PtrOf(gen.Int())
	gens["TimeoutInSeconds"] = gen.PtrOf(gen.Int())
	gens["Url"] = gen.PtrOf(gen.AlphaString())
}

// AddRelatedPropertyGeneratorsForGitRepositoryDefinition_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForGitRepositoryDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["RepositoryRef"] = gen.PtrOf(RepositoryRefDefinition_STATUSGenerator())
}

func Test_HelmReleasePropertiesDefinition_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 HelmReleasePropertiesDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForHelmReleasePropertiesDefinition_STATUS, HelmReleasePropertiesDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual HelmReleasePropertiesDefinition_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 HelmReleasePropertiesDefinition_STATUS instances for property testing - lazily instantiated by
// HelmReleasePropertiesDefinition_STATUSGenerator()
var helmReleasePropertiesDefinition_STATUSGenerator gopter.Gen

// HelmReleasePropertiesDefinition_STATUSGenerator returns a generator of HelmReleasePropertiesDefinition_STATUS instances for property testing.
// We first initialize helmReleasePropertiesDefinition_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 HelmReleasePropertiesDefinition_STATUSGenerator() gopter.Gen {
	if helmReleasePropertiesDefinition_STATUSGenerator != nil {
		return helmReleasePropertiesDefinition_STATUSGenerator
	}

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForHelmReleasePropertiesDefinition_STATUS(generators)
	AddRelatedPropertyGeneratorsForHelmReleasePropertiesDefinition_STATUS(generators)
	helmReleasePropertiesDefinition_STATUSGenerator = gen.Struct(reflect.TypeOf(HelmReleasePropertiesDefinition_STATUS{}), generators)

	return helmReleasePropertiesDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForHelmReleasePropertiesDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForHelmReleasePropertiesDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["FailureCount"] = gen.PtrOf(gen.Int())
	gens["InstallFailureCount"] = gen.PtrOf(gen.Int())
	gens["LastRevisionApplied"] = gen.PtrOf(gen.Int())
	gens["UpgradeFailureCount"] = gen.PtrOf(gen.Int())
}

// AddRelatedPropertyGeneratorsForHelmReleasePropertiesDefinition_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForHelmReleasePropertiesDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["HelmChartRef"] = gen.PtrOf(ObjectReferenceDefinition_STATUSGenerator())
}

func Test_KustomizationDefinition_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 KustomizationDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForKustomizationDefinition_STATUS, KustomizationDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual KustomizationDefinition_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 KustomizationDefinition_STATUS instances for property testing - lazily instantiated by
// KustomizationDefinition_STATUSGenerator()
var kustomizationDefinition_STATUSGenerator gopter.Gen

// KustomizationDefinition_STATUSGenerator returns a generator of KustomizationDefinition_STATUS instances for property testing.
// We first initialize kustomizationDefinition_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 KustomizationDefinition_STATUSGenerator() gopter.Gen {
	if kustomizationDefinition_STATUSGenerator != nil {
		return kustomizationDefinition_STATUSGenerator
	}

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForKustomizationDefinition_STATUS(generators)
	AddRelatedPropertyGeneratorsForKustomizationDefinition_STATUS(generators)
	kustomizationDefinition_STATUSGenerator = gen.Struct(reflect.TypeOf(KustomizationDefinition_STATUS{}), generators)

	return kustomizationDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForKustomizationDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForKustomizationDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["DependsOn"] = gen.SliceOf(gen.AlphaString())
	gens["Force"] = gen.PtrOf(gen.Bool())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["Path"] = gen.PtrOf(gen.AlphaString())
	gens["Prune"] = gen.PtrOf(gen.Bool())
	gens["RetryIntervalInSeconds"] = gen.PtrOf(gen.Int())
	gens["SyncIntervalInSeconds"] = gen.PtrOf(gen.Int())
	gens["TimeoutInSeconds"] = gen.PtrOf(gen.Int())
	gens["Wait"] = gen.PtrOf(gen.Bool())
}

// AddRelatedPropertyGeneratorsForKustomizationDefinition_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForKustomizationDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["PostBuild"] = gen.PtrOf(PostBuildDefinition_STATUSGenerator())
}

func Test_ManagedIdentityDefinition_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 ManagedIdentityDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForManagedIdentityDefinition_STATUS, ManagedIdentityDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ManagedIdentityDefinition_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 ManagedIdentityDefinition_STATUS instances for property testing - lazily instantiated by
// ManagedIdentityDefinition_STATUSGenerator()
var managedIdentityDefinition_STATUSGenerator gopter.Gen

// ManagedIdentityDefinition_STATUSGenerator returns a generator of ManagedIdentityDefinition_STATUS instances for property testing.
func ManagedIdentityDefinition_STATUSGenerator() gopter.Gen {
	if managedIdentityDefinition_STATUSGenerator != nil {
		return managedIdentityDefinition_STATUSGenerator
	}

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

	return managedIdentityDefinition_STATUSGenerator
}

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

func Test_ObjectReferenceDefinition_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 ObjectReferenceDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForObjectReferenceDefinition_STATUS, ObjectReferenceDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ObjectReferenceDefinition_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 ObjectReferenceDefinition_STATUS instances for property testing - lazily instantiated by
// ObjectReferenceDefinition_STATUSGenerator()
var objectReferenceDefinition_STATUSGenerator gopter.Gen

// ObjectReferenceDefinition_STATUSGenerator returns a generator of ObjectReferenceDefinition_STATUS instances for property testing.
func ObjectReferenceDefinition_STATUSGenerator() gopter.Gen {
	if objectReferenceDefinition_STATUSGenerator != nil {
		return objectReferenceDefinition_STATUSGenerator
	}

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

	return objectReferenceDefinition_STATUSGenerator
}

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

func Test_ObjectStatusConditionDefinition_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 ObjectStatusConditionDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForObjectStatusConditionDefinition_STATUS, ObjectStatusConditionDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ObjectStatusConditionDefinition_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 ObjectStatusConditionDefinition_STATUS instances for property testing - lazily instantiated by
// ObjectStatusConditionDefinition_STATUSGenerator()
var objectStatusConditionDefinition_STATUSGenerator gopter.Gen

// ObjectStatusConditionDefinition_STATUSGenerator returns a generator of ObjectStatusConditionDefinition_STATUS instances for property testing.
func ObjectStatusConditionDefinition_STATUSGenerator() gopter.Gen {
	if objectStatusConditionDefinition_STATUSGenerator != nil {
		return objectStatusConditionDefinition_STATUSGenerator
	}

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

	return objectStatusConditionDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForObjectStatusConditionDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForObjectStatusConditionDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["LastTransitionTime"] = gen.PtrOf(gen.AlphaString())
	gens["Message"] = gen.PtrOf(gen.AlphaString())
	gens["Reason"] = gen.PtrOf(gen.AlphaString())
	gens["Status"] = gen.PtrOf(gen.AlphaString())
	gens["Type"] = gen.PtrOf(gen.AlphaString())
}

func Test_ObjectStatusDefinition_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 ObjectStatusDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForObjectStatusDefinition_STATUS, ObjectStatusDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ObjectStatusDefinition_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 ObjectStatusDefinition_STATUS instances for property testing - lazily instantiated by
// ObjectStatusDefinition_STATUSGenerator()
var objectStatusDefinition_STATUSGenerator gopter.Gen

// ObjectStatusDefinition_STATUSGenerator returns a generator of ObjectStatusDefinition_STATUS instances for property testing.
// We first initialize objectStatusDefinition_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 ObjectStatusDefinition_STATUSGenerator() gopter.Gen {
	if objectStatusDefinition_STATUSGenerator != nil {
		return objectStatusDefinition_STATUSGenerator
	}

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForObjectStatusDefinition_STATUS(generators)
	AddRelatedPropertyGeneratorsForObjectStatusDefinition_STATUS(generators)
	objectStatusDefinition_STATUSGenerator = gen.Struct(reflect.TypeOf(ObjectStatusDefinition_STATUS{}), generators)

	return objectStatusDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForObjectStatusDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForObjectStatusDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["ComplianceState"] = gen.PtrOf(gen.OneConstOf(
		FluxComplianceStateDefinition_STATUS_Compliant,
		FluxComplianceStateDefinition_STATUS_NonCompliant,
		FluxComplianceStateDefinition_STATUS_Pending,
		FluxComplianceStateDefinition_STATUS_Suspended,
		FluxComplianceStateDefinition_STATUS_Unknown))
	gens["Kind"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["Namespace"] = gen.PtrOf(gen.AlphaString())
}

// AddRelatedPropertyGeneratorsForObjectStatusDefinition_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForObjectStatusDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["AppliedBy"] = gen.PtrOf(ObjectReferenceDefinition_STATUSGenerator())
	gens["HelmReleaseProperties"] = gen.PtrOf(HelmReleasePropertiesDefinition_STATUSGenerator())
	gens["StatusConditions"] = gen.SliceOf(ObjectStatusConditionDefinition_STATUSGenerator())
}

func Test_PostBuildDefinition_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 PostBuildDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForPostBuildDefinition_STATUS, PostBuildDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual PostBuildDefinition_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 PostBuildDefinition_STATUS instances for property testing - lazily instantiated by
// PostBuildDefinition_STATUSGenerator()
var postBuildDefinition_STATUSGenerator gopter.Gen

// PostBuildDefinition_STATUSGenerator returns a generator of PostBuildDefinition_STATUS instances for property testing.
// We first initialize postBuildDefinition_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 PostBuildDefinition_STATUSGenerator() gopter.Gen {
	if postBuildDefinition_STATUSGenerator != nil {
		return postBuildDefinition_STATUSGenerator
	}

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForPostBuildDefinition_STATUS(generators)
	AddRelatedPropertyGeneratorsForPostBuildDefinition_STATUS(generators)
	postBuildDefinition_STATUSGenerator = gen.Struct(reflect.TypeOf(PostBuildDefinition_STATUS{}), generators)

	return postBuildDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForPostBuildDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForPostBuildDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["Substitute"] = gen.MapOf(
		gen.AlphaString(),
		gen.AlphaString())
}

// AddRelatedPropertyGeneratorsForPostBuildDefinition_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForPostBuildDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["SubstituteFrom"] = gen.SliceOf(SubstituteFromDefinition_STATUSGenerator())
}

func Test_RepositoryRefDefinition_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 RepositoryRefDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForRepositoryRefDefinition_STATUS, RepositoryRefDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual RepositoryRefDefinition_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 RepositoryRefDefinition_STATUS instances for property testing - lazily instantiated by
// RepositoryRefDefinition_STATUSGenerator()
var repositoryRefDefinition_STATUSGenerator gopter.Gen

// RepositoryRefDefinition_STATUSGenerator returns a generator of RepositoryRefDefinition_STATUS instances for property testing.
func RepositoryRefDefinition_STATUSGenerator() gopter.Gen {
	if repositoryRefDefinition_STATUSGenerator != nil {
		return repositoryRefDefinition_STATUSGenerator
	}

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

	return repositoryRefDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForRepositoryRefDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForRepositoryRefDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["Branch"] = gen.PtrOf(gen.AlphaString())
	gens["Commit"] = gen.PtrOf(gen.AlphaString())
	gens["Semver"] = gen.PtrOf(gen.AlphaString())
	gens["Tag"] = gen.PtrOf(gen.AlphaString())
}

func Test_ServicePrincipalDefinition_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 ServicePrincipalDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForServicePrincipalDefinition_STATUS, ServicePrincipalDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ServicePrincipalDefinition_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 ServicePrincipalDefinition_STATUS instances for property testing - lazily instantiated by
// ServicePrincipalDefinition_STATUSGenerator()
var servicePrincipalDefinition_STATUSGenerator gopter.Gen

// ServicePrincipalDefinition_STATUSGenerator returns a generator of ServicePrincipalDefinition_STATUS instances for property testing.
func ServicePrincipalDefinition_STATUSGenerator() gopter.Gen {
	if servicePrincipalDefinition_STATUSGenerator != nil {
		return servicePrincipalDefinition_STATUSGenerator
	}

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

	return servicePrincipalDefinition_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForServicePrincipalDefinition_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForServicePrincipalDefinition_STATUS(gens map[string]gopter.Gen) {
	gens["ClientCertificateSendChain"] = gen.PtrOf(gen.Bool())
	gens["ClientId"] = gen.PtrOf(gen.AlphaString())
	gens["TenantId"] = gen.PtrOf(gen.AlphaString())
}

func Test_SubstituteFromDefinition_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 SubstituteFromDefinition_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForSubstituteFromDefinition_STATUS, SubstituteFromDefinition_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual SubstituteFromDefinition_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 SubstituteFromDefinition_STATUS instances for property testing - lazily instantiated by
// SubstituteFromDefinition_STATUSGenerator()
var substituteFromDefinition_STATUSGenerator gopter.Gen

// SubstituteFromDefinition_STATUSGenerator returns a generator of SubstituteFromDefinition_STATUS instances for property testing.
func SubstituteFromDefinition_STATUSGenerator() gopter.Gen {
	if substituteFromDefinition_STATUSGenerator != nil {
		return substituteFromDefinition_STATUSGenerator
	}

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

	return substituteFromDefinition_STATUSGenerator
}

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