// 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_AdmCredentialProperties_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 AdmCredentialProperties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForAdmCredentialProperties_STATUS, AdmCredentialProperties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual AdmCredentialProperties_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 AdmCredentialProperties_STATUS instances for property testing - lazily instantiated by
// AdmCredentialProperties_STATUSGenerator()
var admCredentialProperties_STATUSGenerator gopter.Gen

// AdmCredentialProperties_STATUSGenerator returns a generator of AdmCredentialProperties_STATUS instances for property testing.
func AdmCredentialProperties_STATUSGenerator() gopter.Gen {
	if admCredentialProperties_STATUSGenerator != nil {
		return admCredentialProperties_STATUSGenerator
	}

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

	return admCredentialProperties_STATUSGenerator
}

func Test_AdmCredential_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 AdmCredential_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForAdmCredential_STATUS, AdmCredential_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual AdmCredential_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 AdmCredential_STATUS instances for property testing - lazily instantiated by
// AdmCredential_STATUSGenerator()
var admCredential_STATUSGenerator gopter.Gen

// AdmCredential_STATUSGenerator returns a generator of AdmCredential_STATUS instances for property testing.
func AdmCredential_STATUSGenerator() gopter.Gen {
	if admCredential_STATUSGenerator != nil {
		return admCredential_STATUSGenerator
	}

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

	return admCredential_STATUSGenerator
}

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

func Test_ApnsCredentialProperties_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 ApnsCredentialProperties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApnsCredentialProperties_STATUS, ApnsCredentialProperties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ApnsCredentialProperties_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 ApnsCredentialProperties_STATUS instances for property testing - lazily instantiated by
// ApnsCredentialProperties_STATUSGenerator()
var apnsCredentialProperties_STATUSGenerator gopter.Gen

// ApnsCredentialProperties_STATUSGenerator returns a generator of ApnsCredentialProperties_STATUS instances for property testing.
func ApnsCredentialProperties_STATUSGenerator() gopter.Gen {
	if apnsCredentialProperties_STATUSGenerator != nil {
		return apnsCredentialProperties_STATUSGenerator
	}

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

	return apnsCredentialProperties_STATUSGenerator
}

func Test_ApnsCredential_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 ApnsCredential_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForApnsCredential_STATUS, ApnsCredential_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual ApnsCredential_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 ApnsCredential_STATUS instances for property testing - lazily instantiated by
// ApnsCredential_STATUSGenerator()
var apnsCredential_STATUSGenerator gopter.Gen

// ApnsCredential_STATUSGenerator returns a generator of ApnsCredential_STATUS instances for property testing.
func ApnsCredential_STATUSGenerator() gopter.Gen {
	if apnsCredential_STATUSGenerator != nil {
		return apnsCredential_STATUSGenerator
	}

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

	return apnsCredential_STATUSGenerator
}

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

func Test_BaiduCredentialProperties_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 BaiduCredentialProperties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForBaiduCredentialProperties_STATUS, BaiduCredentialProperties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual BaiduCredentialProperties_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 BaiduCredentialProperties_STATUS instances for property testing - lazily instantiated by
// BaiduCredentialProperties_STATUSGenerator()
var baiduCredentialProperties_STATUSGenerator gopter.Gen

// BaiduCredentialProperties_STATUSGenerator returns a generator of BaiduCredentialProperties_STATUS instances for property testing.
func BaiduCredentialProperties_STATUSGenerator() gopter.Gen {
	if baiduCredentialProperties_STATUSGenerator != nil {
		return baiduCredentialProperties_STATUSGenerator
	}

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

	return baiduCredentialProperties_STATUSGenerator
}

func Test_BaiduCredential_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 BaiduCredential_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForBaiduCredential_STATUS, BaiduCredential_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual BaiduCredential_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 BaiduCredential_STATUS instances for property testing - lazily instantiated by
// BaiduCredential_STATUSGenerator()
var baiduCredential_STATUSGenerator gopter.Gen

// BaiduCredential_STATUSGenerator returns a generator of BaiduCredential_STATUS instances for property testing.
func BaiduCredential_STATUSGenerator() gopter.Gen {
	if baiduCredential_STATUSGenerator != nil {
		return baiduCredential_STATUSGenerator
	}

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

	return baiduCredential_STATUSGenerator
}

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

func Test_BrowserCredentialProperties_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 BrowserCredentialProperties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForBrowserCredentialProperties_STATUS, BrowserCredentialProperties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual BrowserCredentialProperties_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 BrowserCredentialProperties_STATUS instances for property testing - lazily instantiated by
// BrowserCredentialProperties_STATUSGenerator()
var browserCredentialProperties_STATUSGenerator gopter.Gen

// BrowserCredentialProperties_STATUSGenerator returns a generator of BrowserCredentialProperties_STATUS instances for property testing.
func BrowserCredentialProperties_STATUSGenerator() gopter.Gen {
	if browserCredentialProperties_STATUSGenerator != nil {
		return browserCredentialProperties_STATUSGenerator
	}

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

	return browserCredentialProperties_STATUSGenerator
}

func Test_BrowserCredential_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 BrowserCredential_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForBrowserCredential_STATUS, BrowserCredential_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual BrowserCredential_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 BrowserCredential_STATUS instances for property testing - lazily instantiated by
// BrowserCredential_STATUSGenerator()
var browserCredential_STATUSGenerator gopter.Gen

// BrowserCredential_STATUSGenerator returns a generator of BrowserCredential_STATUS instances for property testing.
func BrowserCredential_STATUSGenerator() gopter.Gen {
	if browserCredential_STATUSGenerator != nil {
		return browserCredential_STATUSGenerator
	}

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

	return browserCredential_STATUSGenerator
}

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

func Test_GcmCredentialProperties_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 GcmCredentialProperties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForGcmCredentialProperties_STATUS, GcmCredentialProperties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual GcmCredentialProperties_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 GcmCredentialProperties_STATUS instances for property testing - lazily instantiated by
// GcmCredentialProperties_STATUSGenerator()
var gcmCredentialProperties_STATUSGenerator gopter.Gen

// GcmCredentialProperties_STATUSGenerator returns a generator of GcmCredentialProperties_STATUS instances for property testing.
func GcmCredentialProperties_STATUSGenerator() gopter.Gen {
	if gcmCredentialProperties_STATUSGenerator != nil {
		return gcmCredentialProperties_STATUSGenerator
	}

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

	return gcmCredentialProperties_STATUSGenerator
}

func Test_GcmCredential_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 GcmCredential_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForGcmCredential_STATUS, GcmCredential_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual GcmCredential_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 GcmCredential_STATUS instances for property testing - lazily instantiated by
// GcmCredential_STATUSGenerator()
var gcmCredential_STATUSGenerator gopter.Gen

// GcmCredential_STATUSGenerator returns a generator of GcmCredential_STATUS instances for property testing.
func GcmCredential_STATUSGenerator() gopter.Gen {
	if gcmCredential_STATUSGenerator != nil {
		return gcmCredential_STATUSGenerator
	}

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

	return gcmCredential_STATUSGenerator
}

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

func Test_MpnsCredentialProperties_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 MpnsCredentialProperties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForMpnsCredentialProperties_STATUS, MpnsCredentialProperties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual MpnsCredentialProperties_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 MpnsCredentialProperties_STATUS instances for property testing - lazily instantiated by
// MpnsCredentialProperties_STATUSGenerator()
var mpnsCredentialProperties_STATUSGenerator gopter.Gen

// MpnsCredentialProperties_STATUSGenerator returns a generator of MpnsCredentialProperties_STATUS instances for property testing.
func MpnsCredentialProperties_STATUSGenerator() gopter.Gen {
	if mpnsCredentialProperties_STATUSGenerator != nil {
		return mpnsCredentialProperties_STATUSGenerator
	}

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

	return mpnsCredentialProperties_STATUSGenerator
}

func Test_MpnsCredential_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 MpnsCredential_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForMpnsCredential_STATUS, MpnsCredential_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual MpnsCredential_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 MpnsCredential_STATUS instances for property testing - lazily instantiated by
// MpnsCredential_STATUSGenerator()
var mpnsCredential_STATUSGenerator gopter.Gen

// MpnsCredential_STATUSGenerator returns a generator of MpnsCredential_STATUS instances for property testing.
func MpnsCredential_STATUSGenerator() gopter.Gen {
	if mpnsCredential_STATUSGenerator != nil {
		return mpnsCredential_STATUSGenerator
	}

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

	return mpnsCredential_STATUSGenerator
}

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

func Test_NotificationHubProperties_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 NotificationHubProperties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForNotificationHubProperties_STATUS, NotificationHubProperties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual NotificationHubProperties_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 NotificationHubProperties_STATUS instances for property testing - lazily instantiated by
// NotificationHubProperties_STATUSGenerator()
var notificationHubProperties_STATUSGenerator gopter.Gen

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

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForNotificationHubProperties_STATUS(generators)
	AddRelatedPropertyGeneratorsForNotificationHubProperties_STATUS(generators)
	notificationHubProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(NotificationHubProperties_STATUS{}), generators)

	return notificationHubProperties_STATUSGenerator
}

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

// AddRelatedPropertyGeneratorsForNotificationHubProperties_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForNotificationHubProperties_STATUS(gens map[string]gopter.Gen) {
	gens["AdmCredential"] = gen.PtrOf(AdmCredential_STATUSGenerator())
	gens["ApnsCredential"] = gen.PtrOf(ApnsCredential_STATUSGenerator())
	gens["AuthorizationRules"] = gen.SliceOf(SharedAccessAuthorizationRuleProperties_STATUSGenerator())
	gens["BaiduCredential"] = gen.PtrOf(BaiduCredential_STATUSGenerator())
	gens["BrowserCredential"] = gen.PtrOf(BrowserCredential_STATUSGenerator())
	gens["GcmCredential"] = gen.PtrOf(GcmCredential_STATUSGenerator())
	gens["MpnsCredential"] = gen.PtrOf(MpnsCredential_STATUSGenerator())
	gens["WnsCredential"] = gen.PtrOf(WnsCredential_STATUSGenerator())
	gens["XiaomiCredential"] = gen.PtrOf(XiaomiCredential_STATUSGenerator())
}

func Test_NotificationHub_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 NotificationHub_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForNotificationHub_STATUS, NotificationHub_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual NotificationHub_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 NotificationHub_STATUS instances for property testing - lazily instantiated by
// NotificationHub_STATUSGenerator()
var notificationHub_STATUSGenerator gopter.Gen

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

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

	// The above call to gen.Struct() captures the map, so create a new one
	generators = make(map[string]gopter.Gen)
	AddIndependentPropertyGeneratorsForNotificationHub_STATUS(generators)
	AddRelatedPropertyGeneratorsForNotificationHub_STATUS(generators)
	notificationHub_STATUSGenerator = gen.Struct(reflect.TypeOf(NotificationHub_STATUS{}), generators)

	return notificationHub_STATUSGenerator
}

// AddIndependentPropertyGeneratorsForNotificationHub_STATUS is a factory method for creating gopter generators
func AddIndependentPropertyGeneratorsForNotificationHub_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())
}

// AddRelatedPropertyGeneratorsForNotificationHub_STATUS is a factory method for creating gopter generators
func AddRelatedPropertyGeneratorsForNotificationHub_STATUS(gens map[string]gopter.Gen) {
	gens["Properties"] = gen.PtrOf(NotificationHubProperties_STATUSGenerator())
	gens["Sku"] = gen.PtrOf(Sku_STATUSGenerator())
	gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator())
}

func Test_WnsCredentialProperties_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 WnsCredentialProperties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForWnsCredentialProperties_STATUS, WnsCredentialProperties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual WnsCredentialProperties_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 WnsCredentialProperties_STATUS instances for property testing - lazily instantiated by
// WnsCredentialProperties_STATUSGenerator()
var wnsCredentialProperties_STATUSGenerator gopter.Gen

// WnsCredentialProperties_STATUSGenerator returns a generator of WnsCredentialProperties_STATUS instances for property testing.
func WnsCredentialProperties_STATUSGenerator() gopter.Gen {
	if wnsCredentialProperties_STATUSGenerator != nil {
		return wnsCredentialProperties_STATUSGenerator
	}

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

	return wnsCredentialProperties_STATUSGenerator
}

func Test_WnsCredential_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 WnsCredential_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForWnsCredential_STATUS, WnsCredential_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual WnsCredential_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 WnsCredential_STATUS instances for property testing - lazily instantiated by
// WnsCredential_STATUSGenerator()
var wnsCredential_STATUSGenerator gopter.Gen

// WnsCredential_STATUSGenerator returns a generator of WnsCredential_STATUS instances for property testing.
func WnsCredential_STATUSGenerator() gopter.Gen {
	if wnsCredential_STATUSGenerator != nil {
		return wnsCredential_STATUSGenerator
	}

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

	return wnsCredential_STATUSGenerator
}

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

func Test_XiaomiCredentialProperties_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 XiaomiCredentialProperties_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForXiaomiCredentialProperties_STATUS, XiaomiCredentialProperties_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual XiaomiCredentialProperties_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 XiaomiCredentialProperties_STATUS instances for property testing - lazily instantiated by
// XiaomiCredentialProperties_STATUSGenerator()
var xiaomiCredentialProperties_STATUSGenerator gopter.Gen

// XiaomiCredentialProperties_STATUSGenerator returns a generator of XiaomiCredentialProperties_STATUS instances for property testing.
func XiaomiCredentialProperties_STATUSGenerator() gopter.Gen {
	if xiaomiCredentialProperties_STATUSGenerator != nil {
		return xiaomiCredentialProperties_STATUSGenerator
	}

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

	return xiaomiCredentialProperties_STATUSGenerator
}

func Test_XiaomiCredential_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 XiaomiCredential_STATUS via JSON returns original",
		prop.ForAll(RunJSONSerializationTestForXiaomiCredential_STATUS, XiaomiCredential_STATUSGenerator()))
	properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout))
}

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

	// Deserialize back into memory
	var actual XiaomiCredential_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 XiaomiCredential_STATUS instances for property testing - lazily instantiated by
// XiaomiCredential_STATUSGenerator()
var xiaomiCredential_STATUSGenerator gopter.Gen

// XiaomiCredential_STATUSGenerator returns a generator of XiaomiCredential_STATUS instances for property testing.
func XiaomiCredential_STATUSGenerator() gopter.Gen {
	if xiaomiCredential_STATUSGenerator != nil {
		return xiaomiCredential_STATUSGenerator
	}

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

	return xiaomiCredential_STATUSGenerator
}

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