// 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_ActionGroupResource_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 ActionGroupResource_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForActionGroupResource_STATUS, ActionGroupResource_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ActionGroupResource_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 ActionGroupResource_STATUS instances for property testing - lazily instantiated by
// ActionGroupResource_STATUSGenerator()
var actionGroupResource_STATUSGenerator gopter.Gen

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

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForActionGroupResource_STATUS(generators)
	AddRelatedPropertyGeneratorsForActionGroupResource_STATUS(generators)
	actionGroupResource_STATUSGenerator = gen.Struct(reflect.TypeOf(ActionGroupResource_STATUS{}), generators)

	return actionGroupResource_STATUSGenerator
}

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

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

func Test_ActionGroup_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 ActionGroup_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForActionGroup_STATUS, ActionGroup_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ActionGroup_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 ActionGroup_STATUS instances for property testing - lazily instantiated by ActionGroup_STATUSGenerator()
var actionGroup_STATUSGenerator gopter.Gen

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

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForActionGroup_STATUS(generators)
	AddRelatedPropertyGeneratorsForActionGroup_STATUS(generators)
	actionGroup_STATUSGenerator = gen.Struct(reflect.TypeOf(ActionGroup_STATUS{}), generators)

	return actionGroup_STATUSGenerator
}

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

// AddRelatedPropertyGeneratorsForActionGroup_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForActionGroup_STATUS(gens map[string]gopter.Gen) {
	gens["ArmRoleReceivers"] = gen.SliceOf(ArmRoleReceiver_STATUSGenerator())
	gens["AutomationRunbookReceivers"] = gen.SliceOf(AutomationRunbookReceiver_STATUSGenerator())
	gens["AzureAppPushReceivers"] = gen.SliceOf(AzureAppPushReceiver_STATUSGenerator())
	gens["AzureFunctionReceivers"] = gen.SliceOf(AzureFunctionReceiver_STATUSGenerator())
	gens["EmailReceivers"] = gen.SliceOf(EmailReceiver_STATUSGenerator())
	gens["EventHubReceivers"] = gen.SliceOf(EventHubReceiver_STATUSGenerator())
	gens["ItsmReceivers"] = gen.SliceOf(ItsmReceiver_STATUSGenerator())
	gens["LogicAppReceivers"] = gen.SliceOf(LogicAppReceiver_STATUSGenerator())
	gens["SmsReceivers"] = gen.SliceOf(SmsReceiver_STATUSGenerator())
	gens["VoiceReceivers"] = gen.SliceOf(VoiceReceiver_STATUSGenerator())
	gens["WebhookReceivers"] = gen.SliceOf(WebhookReceiver_STATUSGenerator())
}

func Test_ArmRoleReceiver_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 ArmRoleReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForArmRoleReceiver_STATUS, ArmRoleReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ArmRoleReceiver_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 ArmRoleReceiver_STATUS instances for property testing - lazily instantiated by
// ArmRoleReceiver_STATUSGenerator()
var armRoleReceiver_STATUSGenerator gopter.Gen

// ArmRoleReceiver_STATUSGenerator returns a generator of ArmRoleReceiver_STATUS instances for property testing.
func ArmRoleReceiver_STATUSGenerator() gopter.Gen {
	if armRoleReceiver_STATUSGenerator != nil {
		return armRoleReceiver_STATUSGenerator
	}

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

	return armRoleReceiver_STATUSGenerator
}

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

func Test_AutomationRunbookReceiver_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 AutomationRunbookReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForAutomationRunbookReceiver_STATUS, AutomationRunbookReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual AutomationRunbookReceiver_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 AutomationRunbookReceiver_STATUS instances for property testing - lazily instantiated by
// AutomationRunbookReceiver_STATUSGenerator()
var automationRunbookReceiver_STATUSGenerator gopter.Gen

// AutomationRunbookReceiver_STATUSGenerator returns a generator of AutomationRunbookReceiver_STATUS instances for property testing.
func AutomationRunbookReceiver_STATUSGenerator() gopter.Gen {
	if automationRunbookReceiver_STATUSGenerator != nil {
		return automationRunbookReceiver_STATUSGenerator
	}

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

	return automationRunbookReceiver_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForAutomationRunbookReceiver_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForAutomationRunbookReceiver_STATUS(gens map[string]gopter.Gen) {
	gens["AutomationAccountId"] = gen.PtrOf(gen.AlphaString())
	gens["IsGlobalRunbook"] = gen.PtrOf(gen.Bool())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["RunbookName"] = gen.PtrOf(gen.AlphaString())
	gens["ServiceUri"] = gen.PtrOf(gen.AlphaString())
	gens["UseCommonAlertSchema"] = gen.PtrOf(gen.Bool())
	gens["WebhookResourceId"] = gen.PtrOf(gen.AlphaString())
}

func Test_AzureAppPushReceiver_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 AzureAppPushReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForAzureAppPushReceiver_STATUS, AzureAppPushReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual AzureAppPushReceiver_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 AzureAppPushReceiver_STATUS instances for property testing - lazily instantiated by
// AzureAppPushReceiver_STATUSGenerator()
var azureAppPushReceiver_STATUSGenerator gopter.Gen

// AzureAppPushReceiver_STATUSGenerator returns a generator of AzureAppPushReceiver_STATUS instances for property testing.
func AzureAppPushReceiver_STATUSGenerator() gopter.Gen {
	if azureAppPushReceiver_STATUSGenerator != nil {
		return azureAppPushReceiver_STATUSGenerator
	}

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

	return azureAppPushReceiver_STATUSGenerator
}

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

func Test_AzureFunctionReceiver_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 AzureFunctionReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForAzureFunctionReceiver_STATUS, AzureFunctionReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual AzureFunctionReceiver_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 AzureFunctionReceiver_STATUS instances for property testing - lazily instantiated by
// AzureFunctionReceiver_STATUSGenerator()
var azureFunctionReceiver_STATUSGenerator gopter.Gen

// AzureFunctionReceiver_STATUSGenerator returns a generator of AzureFunctionReceiver_STATUS instances for property testing.
func AzureFunctionReceiver_STATUSGenerator() gopter.Gen {
	if azureFunctionReceiver_STATUSGenerator != nil {
		return azureFunctionReceiver_STATUSGenerator
	}

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

	return azureFunctionReceiver_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForAzureFunctionReceiver_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForAzureFunctionReceiver_STATUS(gens map[string]gopter.Gen) {
	gens["FunctionAppResourceId"] = gen.PtrOf(gen.AlphaString())
	gens["FunctionName"] = gen.PtrOf(gen.AlphaString())
	gens["HttpTriggerUrl"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["UseCommonAlertSchema"] = gen.PtrOf(gen.Bool())
}

func Test_EmailReceiver_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 EmailReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForEmailReceiver_STATUS, EmailReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual EmailReceiver_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 EmailReceiver_STATUS instances for property testing - lazily instantiated by
// EmailReceiver_STATUSGenerator()
var emailReceiver_STATUSGenerator gopter.Gen

// EmailReceiver_STATUSGenerator returns a generator of EmailReceiver_STATUS instances for property testing.
func EmailReceiver_STATUSGenerator() gopter.Gen {
	if emailReceiver_STATUSGenerator != nil {
		return emailReceiver_STATUSGenerator
	}

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

	return emailReceiver_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForEmailReceiver_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForEmailReceiver_STATUS(gens map[string]gopter.Gen) {
	gens["EmailAddress"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["Status"] = gen.PtrOf(gen.OneConstOf(ReceiverStatus_STATUS_Disabled, ReceiverStatus_STATUS_Enabled, ReceiverStatus_STATUS_NotSpecified))
	gens["UseCommonAlertSchema"] = gen.PtrOf(gen.Bool())
}

func Test_EventHubReceiver_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 EventHubReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForEventHubReceiver_STATUS, EventHubReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual EventHubReceiver_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 EventHubReceiver_STATUS instances for property testing - lazily instantiated by
// EventHubReceiver_STATUSGenerator()
var eventHubReceiver_STATUSGenerator gopter.Gen

// EventHubReceiver_STATUSGenerator returns a generator of EventHubReceiver_STATUS instances for property testing.
func EventHubReceiver_STATUSGenerator() gopter.Gen {
	if eventHubReceiver_STATUSGenerator != nil {
		return eventHubReceiver_STATUSGenerator
	}

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

	return eventHubReceiver_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForEventHubReceiver_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForEventHubReceiver_STATUS(gens map[string]gopter.Gen) {
	gens["EventHubName"] = gen.PtrOf(gen.AlphaString())
	gens["EventHubNameSpace"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["SubscriptionId"] = gen.PtrOf(gen.AlphaString())
	gens["TenantId"] = gen.PtrOf(gen.AlphaString())
	gens["UseCommonAlertSchema"] = gen.PtrOf(gen.Bool())
}

func Test_ItsmReceiver_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 ItsmReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForItsmReceiver_STATUS, ItsmReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ItsmReceiver_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 ItsmReceiver_STATUS instances for property testing - lazily instantiated by
// ItsmReceiver_STATUSGenerator()
var itsmReceiver_STATUSGenerator gopter.Gen

// ItsmReceiver_STATUSGenerator returns a generator of ItsmReceiver_STATUS instances for property testing.
func ItsmReceiver_STATUSGenerator() gopter.Gen {
	if itsmReceiver_STATUSGenerator != nil {
		return itsmReceiver_STATUSGenerator
	}

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

	return itsmReceiver_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForItsmReceiver_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForItsmReceiver_STATUS(gens map[string]gopter.Gen) {
	gens["ConnectionId"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["Region"] = gen.PtrOf(gen.AlphaString())
	gens["TicketConfiguration"] = gen.PtrOf(gen.AlphaString())
	gens["WorkspaceId"] = gen.PtrOf(gen.AlphaString())
}

func Test_LogicAppReceiver_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 LogicAppReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForLogicAppReceiver_STATUS, LogicAppReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual LogicAppReceiver_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 LogicAppReceiver_STATUS instances for property testing - lazily instantiated by
// LogicAppReceiver_STATUSGenerator()
var logicAppReceiver_STATUSGenerator gopter.Gen

// LogicAppReceiver_STATUSGenerator returns a generator of LogicAppReceiver_STATUS instances for property testing.
func LogicAppReceiver_STATUSGenerator() gopter.Gen {
	if logicAppReceiver_STATUSGenerator != nil {
		return logicAppReceiver_STATUSGenerator
	}

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

	return logicAppReceiver_STATUSGenerator
}

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

func Test_SmsReceiver_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 SmsReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForSmsReceiver_STATUS, SmsReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual SmsReceiver_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 SmsReceiver_STATUS instances for property testing - lazily instantiated by SmsReceiver_STATUSGenerator()
var smsReceiver_STATUSGenerator gopter.Gen

// SmsReceiver_STATUSGenerator returns a generator of SmsReceiver_STATUS instances for property testing.
func SmsReceiver_STATUSGenerator() gopter.Gen {
	if smsReceiver_STATUSGenerator != nil {
		return smsReceiver_STATUSGenerator
	}

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

	return smsReceiver_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForSmsReceiver_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForSmsReceiver_STATUS(gens map[string]gopter.Gen) {
	gens["CountryCode"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["PhoneNumber"] = gen.PtrOf(gen.AlphaString())
	gens["Status"] = gen.PtrOf(gen.OneConstOf(ReceiverStatus_STATUS_Disabled, ReceiverStatus_STATUS_Enabled, ReceiverStatus_STATUS_NotSpecified))
}

func Test_VoiceReceiver_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 VoiceReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForVoiceReceiver_STATUS, VoiceReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual VoiceReceiver_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 VoiceReceiver_STATUS instances for property testing - lazily instantiated by
// VoiceReceiver_STATUSGenerator()
var voiceReceiver_STATUSGenerator gopter.Gen

// VoiceReceiver_STATUSGenerator returns a generator of VoiceReceiver_STATUS instances for property testing.
func VoiceReceiver_STATUSGenerator() gopter.Gen {
	if voiceReceiver_STATUSGenerator != nil {
		return voiceReceiver_STATUSGenerator
	}

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

	return voiceReceiver_STATUSGenerator
}

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

func Test_WebhookReceiver_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 WebhookReceiver_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForWebhookReceiver_STATUS, WebhookReceiver_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual WebhookReceiver_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 WebhookReceiver_STATUS instances for property testing - lazily instantiated by
// WebhookReceiver_STATUSGenerator()
var webhookReceiver_STATUSGenerator gopter.Gen

// WebhookReceiver_STATUSGenerator returns a generator of WebhookReceiver_STATUS instances for property testing.
func WebhookReceiver_STATUSGenerator() gopter.Gen {
	if webhookReceiver_STATUSGenerator != nil {
		return webhookReceiver_STATUSGenerator
	}

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

	return webhookReceiver_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForWebhookReceiver_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForWebhookReceiver_STATUS(gens map[string]gopter.Gen) {
	gens["IdentifierUri"] = gen.PtrOf(gen.AlphaString())
	gens["Name"] = gen.PtrOf(gen.AlphaString())
	gens["ObjectId"] = gen.PtrOf(gen.AlphaString())
	gens["ServiceUri"] = gen.PtrOf(gen.AlphaString())
	gens["TenantId"] = gen.PtrOf(gen.AlphaString())
	gens["UseAadAuth"] = gen.PtrOf(gen.Bool())
	gens["UseCommonAlertSchema"] = gen.PtrOf(gen.Bool())
}
