// Code generated by smithy-go-codegen DO NOT EDIT.

//go:build response_snapshot

package applicationautoscaling

import (
	"bufio"
	"bytes"
	"context"
	"errors"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/service/applicationautoscaling/types"
	smithyendpoints "github.com/aws/smithy-go/endpoints"
	"github.com/aws/smithy-go/middleware"
	"github.com/aws/smithy-go/ptr"
	smithytesting "github.com/aws/smithy-go/testing"
	smithyhttp "github.com/aws/smithy-go/transport/http"
	"io"
	"io/fs"
	"net/http"
	"net/url"
	"os"
	"strconv"
	"strings"
	"testing"
	"time"
)

const serdeRespSSPrefix = "response_snapshot"

func serdeRespSSPath(op string) string {
	return fmt.Sprintf("%s/%s.snap", serdeRespSSPrefix, op)
}

// serdeRespReadSnapshot parses a frozen wire response fixture: a status-code
// line, HTTP headers, a blank line, then the raw body.
func serdeRespReadSnapshot(op string) (int, http.Header, []byte, error) {
	raw, err := os.ReadFile(serdeRespSSPath(op))
	if err != nil {
		return 0, nil, nil, err
	}

	r := bufio.NewReader(bytes.NewReader(raw))
	statusLine, err := r.ReadString('\n')
	if err != nil {
		return 0, nil, nil, fmt.Errorf("read status line: %w", err)
	}
	status, err := strconv.Atoi(strings.TrimSpace(statusLine))
	if err != nil {
		return 0, nil, nil, fmt.Errorf("parse status: %w", err)
	}

	header := http.Header{}
	for {
		line, err := r.ReadString('\n')
		if err != nil && err != io.EOF {
			return 0, nil, nil, err
		}
		trimmed := strings.TrimRight(line, "\r\n")
		if trimmed == "" {
			break
		}
		k, v, ok := strings.Cut(trimmed, ": ")
		if !ok {
			return 0, nil, nil, fmt.Errorf("malformed header %q", trimmed)
		}
		header.Add(k, v)
		if err == io.EOF {
			break
		}
	}

	body, err := io.ReadAll(r)
	if err != nil {
		return 0, nil, nil, err
	}
	return status, header, body, nil
}

type serdeRespEndpointResolver struct{}

func (*serdeRespEndpointResolver) ResolveEndpoint(ctx context.Context, params EndpointParameters) (smithyendpoints.Endpoint, error) {
	return smithyendpoints.Endpoint{URI: url.URL{Scheme: "https", Host: "test.example.com"}}, nil
}

func serdeRespClient(status int, header http.Header, body []byte) *Client {
	return New(Options{
		Region: "us-east-1",
		HTTPClient: smithyhttp.ClientDoFunc(func(req *http.Request) (*http.Response, error) {
			resp := &http.Response{StatusCode: status, Header: header, Request: req}
			if len(body) > 0 {
				resp.ContentLength = int64(len(body))
				resp.Body = io.NopCloser(bytes.NewReader(body))
			} else {
				resp.Body = http.NoBody
			}
			return resp, nil
		}),
		EndpointResolverV2: &serdeRespEndpointResolver{},
		APIOptions: []func(*middleware.Stack) error{
			func(s *middleware.Stack) error {
				s.Finalize.Clear()
				s.Initialize.Remove("OperationInputValidation")
				return nil
			},
		},
	})
}
func TestCheckResponseSnapshot_DeleteScalingPolicy(t *testing.T) {
	want := &DeleteScalingPolicyOutput{}
	status, header, body, err := serdeRespReadSnapshot("DeleteScalingPolicy.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.DeleteScalingPolicy(context.Background(), &DeleteScalingPolicyInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "DeleteScalingPolicy.response", err)
	}
}

func TestCheckResponseSnapshot_DeleteScheduledAction(t *testing.T) {
	want := &DeleteScheduledActionOutput{}
	status, header, body, err := serdeRespReadSnapshot("DeleteScheduledAction.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.DeleteScheduledAction(context.Background(), &DeleteScheduledActionInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "DeleteScheduledAction.response", err)
	}
}

func TestCheckResponseSnapshot_DeregisterScalableTarget(t *testing.T) {
	want := &DeregisterScalableTargetOutput{}
	status, header, body, err := serdeRespReadSnapshot("DeregisterScalableTarget.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.DeregisterScalableTarget(context.Background(), &DeregisterScalableTargetInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "DeregisterScalableTarget.response", err)
	}
}

func TestCheckResponseSnapshot_DescribeScalableTargets(t *testing.T) {
	want := &DescribeScalableTargetsOutput{
		ScalableTargets: []types.ScalableTarget{
			{
				ServiceNamespace:  types.ServiceNamespace("ecs"),
				ResourceId:        ptr.String("__ResourceId__"),
				ScalableDimension: types.ScalableDimension("ecs:service:DesiredCount"),
				MinCapacity:       ptr.Int32(1),
				MaxCapacity:       ptr.Int32(1),
				PredictedCapacity: ptr.Int32(1),
				RoleARN:           ptr.String("__RoleARN__"),
				CreationTime:      ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				SuspendedState: &types.SuspendedState{
					DynamicScalingInSuspended:  ptr.Bool(true),
					DynamicScalingOutSuspended: ptr.Bool(true),
					ScheduledScalingSuspended:  ptr.Bool(true),
				},
				ScalableTargetARN: ptr.String("__ScalableTargetARN__"),
			},
			{
				ServiceNamespace:  types.ServiceNamespace("ecs"),
				ResourceId:        ptr.String("__ResourceId__"),
				ScalableDimension: types.ScalableDimension("ecs:service:DesiredCount"),
				MinCapacity:       ptr.Int32(1),
				MaxCapacity:       ptr.Int32(1),
				PredictedCapacity: ptr.Int32(1),
				RoleARN:           ptr.String("__RoleARN__"),
				CreationTime:      ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				SuspendedState: &types.SuspendedState{
					DynamicScalingInSuspended:  ptr.Bool(true),
					DynamicScalingOutSuspended: ptr.Bool(true),
					ScheduledScalingSuspended:  ptr.Bool(true),
				},
				ScalableTargetARN: ptr.String("__ScalableTargetARN__"),
			},
		},
		NextToken: ptr.String("__NextToken__"),
	}
	status, header, body, err := serdeRespReadSnapshot("DescribeScalableTargets.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.DescribeScalableTargets(context.Background(), &DescribeScalableTargetsInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "DescribeScalableTargets.response", err)
	}
}

func TestCheckResponseSnapshot_DescribeScalingActivities(t *testing.T) {
	want := &DescribeScalingActivitiesOutput{
		ScalingActivities: []types.ScalingActivity{
			{
				ActivityId:        ptr.String("__ActivityId__"),
				ServiceNamespace:  types.ServiceNamespace("ecs"),
				ResourceId:        ptr.String("__ResourceId__"),
				ScalableDimension: types.ScalableDimension("ecs:service:DesiredCount"),
				Description:       ptr.String("__Description__"),
				Cause:             ptr.String("__Cause__"),
				StartTime:         ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				EndTime:           ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				StatusCode:        types.ScalingActivityStatusCode("Pending"),
				StatusMessage:     ptr.String("__StatusMessage__"),
				Details:           ptr.String("__Details__"),
				NotScaledReasons: []types.NotScaledReason{
					{
						Code:            ptr.String("__Code__"),
						MaxCapacity:     ptr.Int32(1),
						MinCapacity:     ptr.Int32(1),
						CurrentCapacity: ptr.Int32(1),
					},
					{
						Code:            ptr.String("__Code__"),
						MaxCapacity:     ptr.Int32(1),
						MinCapacity:     ptr.Int32(1),
						CurrentCapacity: ptr.Int32(1),
					},
				},
			},
			{
				ActivityId:        ptr.String("__ActivityId__"),
				ServiceNamespace:  types.ServiceNamespace("ecs"),
				ResourceId:        ptr.String("__ResourceId__"),
				ScalableDimension: types.ScalableDimension("ecs:service:DesiredCount"),
				Description:       ptr.String("__Description__"),
				Cause:             ptr.String("__Cause__"),
				StartTime:         ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				EndTime:           ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				StatusCode:        types.ScalingActivityStatusCode("Pending"),
				StatusMessage:     ptr.String("__StatusMessage__"),
				Details:           ptr.String("__Details__"),
				NotScaledReasons: []types.NotScaledReason{
					{
						Code:            ptr.String("__Code__"),
						MaxCapacity:     ptr.Int32(1),
						MinCapacity:     ptr.Int32(1),
						CurrentCapacity: ptr.Int32(1),
					},
					{
						Code:            ptr.String("__Code__"),
						MaxCapacity:     ptr.Int32(1),
						MinCapacity:     ptr.Int32(1),
						CurrentCapacity: ptr.Int32(1),
					},
				},
			},
		},
		NextToken: ptr.String("__NextToken__"),
	}
	status, header, body, err := serdeRespReadSnapshot("DescribeScalingActivities.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.DescribeScalingActivities(context.Background(), &DescribeScalingActivitiesInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "DescribeScalingActivities.response", err)
	}
}

func TestCheckResponseSnapshot_DescribeScalingPolicies(t *testing.T) {
	want := &DescribeScalingPoliciesOutput{
		ScalingPolicies: []types.ScalingPolicy{
			{
				PolicyARN:         ptr.String("__PolicyARN__"),
				PolicyName:        ptr.String("__PolicyName__"),
				ServiceNamespace:  types.ServiceNamespace("ecs"),
				ResourceId:        ptr.String("__ResourceId__"),
				ScalableDimension: types.ScalableDimension("ecs:service:DesiredCount"),
				PolicyType:        types.PolicyType("StepScaling"),
				StepScalingPolicyConfiguration: &types.StepScalingPolicyConfiguration{
					AdjustmentType: types.AdjustmentType("ChangeInCapacity"),
					StepAdjustments: []types.StepAdjustment{
						{
							MetricIntervalLowerBound: ptr.Float64(1.0),
							MetricIntervalUpperBound: ptr.Float64(1.0),
							ScalingAdjustment:        ptr.Int32(1),
						},
						{
							MetricIntervalLowerBound: ptr.Float64(1.0),
							MetricIntervalUpperBound: ptr.Float64(1.0),
							ScalingAdjustment:        ptr.Int32(1),
						},
					},
					MinAdjustmentMagnitude: ptr.Int32(1),
					Cooldown:               ptr.Int32(1),
					MetricAggregationType:  types.MetricAggregationType("Average"),
				},
				TargetTrackingScalingPolicyConfiguration: &types.TargetTrackingScalingPolicyConfiguration{
					TargetValue: ptr.Float64(1.0),
					PredefinedMetricSpecification: &types.PredefinedMetricSpecification{
						PredefinedMetricType: types.MetricType("DynamoDBReadCapacityUtilization"),
						ResourceLabel:        ptr.String("__ResourceLabel__"),
					},
					CustomizedMetricSpecification: &types.CustomizedMetricSpecification{
						MetricName: ptr.String("__MetricName__"),
						Namespace:  ptr.String("__Namespace__"),
						Dimensions: []types.MetricDimension{
							{
								Name:  ptr.String("__Name__"),
								Value: ptr.String("__Value__"),
							},
							{
								Name:  ptr.String("__Name__"),
								Value: ptr.String("__Value__"),
							},
						},
						Statistic: types.MetricStatistic("Average"),
						Unit:      ptr.String("__Unit__"),
						Metrics: []types.TargetTrackingMetricDataQuery{
							{
								Expression: ptr.String("__Expression__"),
								Id:         ptr.String("__Id__"),
								Label:      ptr.String("__Label__"),
								MetricStat: &types.TargetTrackingMetricStat{
									Metric: &types.TargetTrackingMetric{
										Dimensions: []types.TargetTrackingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								ReturnData: ptr.Bool(true),
							},
							{
								Expression: ptr.String("__Expression__"),
								Id:         ptr.String("__Id__"),
								Label:      ptr.String("__Label__"),
								MetricStat: &types.TargetTrackingMetricStat{
									Metric: &types.TargetTrackingMetric{
										Dimensions: []types.TargetTrackingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								ReturnData: ptr.Bool(true),
							},
						},
					},
					ScaleOutCooldown: ptr.Int32(1),
					ScaleInCooldown:  ptr.Int32(1),
					DisableScaleIn:   ptr.Bool(true),
				},
				PredictiveScalingPolicyConfiguration: &types.PredictiveScalingPolicyConfiguration{
					MetricSpecifications: []types.PredictiveScalingMetricSpecification{
						{
							TargetValue: ptr.Float64(1.0),
							PredefinedMetricPairSpecification: &types.PredictiveScalingPredefinedMetricPairSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							PredefinedScalingMetricSpecification: &types.PredictiveScalingPredefinedScalingMetricSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							PredefinedLoadMetricSpecification: &types.PredictiveScalingPredefinedLoadMetricSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							CustomizedScalingMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
							CustomizedLoadMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
							CustomizedCapacityMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
						},
						{
							TargetValue: ptr.Float64(1.0),
							PredefinedMetricPairSpecification: &types.PredictiveScalingPredefinedMetricPairSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							PredefinedScalingMetricSpecification: &types.PredictiveScalingPredefinedScalingMetricSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							PredefinedLoadMetricSpecification: &types.PredictiveScalingPredefinedLoadMetricSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							CustomizedScalingMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
							CustomizedLoadMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
							CustomizedCapacityMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
						},
					},
					Mode:                      types.PredictiveScalingMode("ForecastOnly"),
					SchedulingBufferTime:      ptr.Int32(1),
					MaxCapacityBreachBehavior: types.PredictiveScalingMaxCapacityBreachBehavior("HonorMaxCapacity"),
					MaxCapacityBuffer:         ptr.Int32(1),
				},
				Alarms: []types.Alarm{
					{
						AlarmName: ptr.String("__AlarmName__"),
						AlarmARN:  ptr.String("__AlarmARN__"),
					},
					{
						AlarmName: ptr.String("__AlarmName__"),
						AlarmARN:  ptr.String("__AlarmARN__"),
					},
				},
				CreationTime: ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
			},
			{
				PolicyARN:         ptr.String("__PolicyARN__"),
				PolicyName:        ptr.String("__PolicyName__"),
				ServiceNamespace:  types.ServiceNamespace("ecs"),
				ResourceId:        ptr.String("__ResourceId__"),
				ScalableDimension: types.ScalableDimension("ecs:service:DesiredCount"),
				PolicyType:        types.PolicyType("StepScaling"),
				StepScalingPolicyConfiguration: &types.StepScalingPolicyConfiguration{
					AdjustmentType: types.AdjustmentType("ChangeInCapacity"),
					StepAdjustments: []types.StepAdjustment{
						{
							MetricIntervalLowerBound: ptr.Float64(1.0),
							MetricIntervalUpperBound: ptr.Float64(1.0),
							ScalingAdjustment:        ptr.Int32(1),
						},
						{
							MetricIntervalLowerBound: ptr.Float64(1.0),
							MetricIntervalUpperBound: ptr.Float64(1.0),
							ScalingAdjustment:        ptr.Int32(1),
						},
					},
					MinAdjustmentMagnitude: ptr.Int32(1),
					Cooldown:               ptr.Int32(1),
					MetricAggregationType:  types.MetricAggregationType("Average"),
				},
				TargetTrackingScalingPolicyConfiguration: &types.TargetTrackingScalingPolicyConfiguration{
					TargetValue: ptr.Float64(1.0),
					PredefinedMetricSpecification: &types.PredefinedMetricSpecification{
						PredefinedMetricType: types.MetricType("DynamoDBReadCapacityUtilization"),
						ResourceLabel:        ptr.String("__ResourceLabel__"),
					},
					CustomizedMetricSpecification: &types.CustomizedMetricSpecification{
						MetricName: ptr.String("__MetricName__"),
						Namespace:  ptr.String("__Namespace__"),
						Dimensions: []types.MetricDimension{
							{
								Name:  ptr.String("__Name__"),
								Value: ptr.String("__Value__"),
							},
							{
								Name:  ptr.String("__Name__"),
								Value: ptr.String("__Value__"),
							},
						},
						Statistic: types.MetricStatistic("Average"),
						Unit:      ptr.String("__Unit__"),
						Metrics: []types.TargetTrackingMetricDataQuery{
							{
								Expression: ptr.String("__Expression__"),
								Id:         ptr.String("__Id__"),
								Label:      ptr.String("__Label__"),
								MetricStat: &types.TargetTrackingMetricStat{
									Metric: &types.TargetTrackingMetric{
										Dimensions: []types.TargetTrackingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								ReturnData: ptr.Bool(true),
							},
							{
								Expression: ptr.String("__Expression__"),
								Id:         ptr.String("__Id__"),
								Label:      ptr.String("__Label__"),
								MetricStat: &types.TargetTrackingMetricStat{
									Metric: &types.TargetTrackingMetric{
										Dimensions: []types.TargetTrackingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								ReturnData: ptr.Bool(true),
							},
						},
					},
					ScaleOutCooldown: ptr.Int32(1),
					ScaleInCooldown:  ptr.Int32(1),
					DisableScaleIn:   ptr.Bool(true),
				},
				PredictiveScalingPolicyConfiguration: &types.PredictiveScalingPolicyConfiguration{
					MetricSpecifications: []types.PredictiveScalingMetricSpecification{
						{
							TargetValue: ptr.Float64(1.0),
							PredefinedMetricPairSpecification: &types.PredictiveScalingPredefinedMetricPairSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							PredefinedScalingMetricSpecification: &types.PredictiveScalingPredefinedScalingMetricSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							PredefinedLoadMetricSpecification: &types.PredictiveScalingPredefinedLoadMetricSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							CustomizedScalingMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
							CustomizedLoadMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
							CustomizedCapacityMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
						},
						{
							TargetValue: ptr.Float64(1.0),
							PredefinedMetricPairSpecification: &types.PredictiveScalingPredefinedMetricPairSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							PredefinedScalingMetricSpecification: &types.PredictiveScalingPredefinedScalingMetricSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							PredefinedLoadMetricSpecification: &types.PredictiveScalingPredefinedLoadMetricSpecification{
								PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
								ResourceLabel:        ptr.String("__ResourceLabel__"),
							},
							CustomizedScalingMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
							CustomizedLoadMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
							CustomizedCapacityMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
								MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
									{
										Id:         ptr.String("__Id__"),
										Expression: ptr.String("__Expression__"),
										MetricStat: &types.PredictiveScalingMetricStat{
											Metric: &types.PredictiveScalingMetric{
												Dimensions: []types.PredictiveScalingMetricDimension{
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
													{
														Name:  ptr.String("__Name__"),
														Value: ptr.String("__Value__"),
													},
												},
												MetricName: ptr.String("__MetricName__"),
												Namespace:  ptr.String("__Namespace__"),
											},
											Stat: ptr.String("__Stat__"),
											Unit: ptr.String("__Unit__"),
										},
										Label:      ptr.String("__Label__"),
										ReturnData: ptr.Bool(true),
									},
								},
							},
						},
					},
					Mode:                      types.PredictiveScalingMode("ForecastOnly"),
					SchedulingBufferTime:      ptr.Int32(1),
					MaxCapacityBreachBehavior: types.PredictiveScalingMaxCapacityBreachBehavior("HonorMaxCapacity"),
					MaxCapacityBuffer:         ptr.Int32(1),
				},
				Alarms: []types.Alarm{
					{
						AlarmName: ptr.String("__AlarmName__"),
						AlarmARN:  ptr.String("__AlarmARN__"),
					},
					{
						AlarmName: ptr.String("__AlarmName__"),
						AlarmARN:  ptr.String("__AlarmARN__"),
					},
				},
				CreationTime: ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
			},
		},
		NextToken: ptr.String("__NextToken__"),
	}
	status, header, body, err := serdeRespReadSnapshot("DescribeScalingPolicies.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.DescribeScalingPolicies(context.Background(), &DescribeScalingPoliciesInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "DescribeScalingPolicies.response", err)
	}
}

func TestCheckResponseSnapshot_DescribeScheduledActions(t *testing.T) {
	want := &DescribeScheduledActionsOutput{
		ScheduledActions: []types.ScheduledAction{
			{
				ScheduledActionName: ptr.String("__ScheduledActionName__"),
				ScheduledActionARN:  ptr.String("__ScheduledActionARN__"),
				ServiceNamespace:    types.ServiceNamespace("ecs"),
				Schedule:            ptr.String("__Schedule__"),
				Timezone:            ptr.String("__Timezone__"),
				ResourceId:          ptr.String("__ResourceId__"),
				ScalableDimension:   types.ScalableDimension("ecs:service:DesiredCount"),
				StartTime:           ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				EndTime:             ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				ScalableTargetAction: &types.ScalableTargetAction{
					MinCapacity: ptr.Int32(1),
					MaxCapacity: ptr.Int32(1),
				},
				CreationTime: ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
			},
			{
				ScheduledActionName: ptr.String("__ScheduledActionName__"),
				ScheduledActionARN:  ptr.String("__ScheduledActionARN__"),
				ServiceNamespace:    types.ServiceNamespace("ecs"),
				Schedule:            ptr.String("__Schedule__"),
				Timezone:            ptr.String("__Timezone__"),
				ResourceId:          ptr.String("__ResourceId__"),
				ScalableDimension:   types.ScalableDimension("ecs:service:DesiredCount"),
				StartTime:           ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				EndTime:             ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
				ScalableTargetAction: &types.ScalableTargetAction{
					MinCapacity: ptr.Int32(1),
					MaxCapacity: ptr.Int32(1),
				},
				CreationTime: ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
			},
		},
		NextToken: ptr.String("__NextToken__"),
	}
	status, header, body, err := serdeRespReadSnapshot("DescribeScheduledActions.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.DescribeScheduledActions(context.Background(), &DescribeScheduledActionsInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "DescribeScheduledActions.response", err)
	}
}

func TestCheckResponseSnapshot_GetPredictiveScalingForecast(t *testing.T) {
	want := &GetPredictiveScalingForecastOutput{
		LoadForecast: []types.LoadForecast{
			{
				Timestamps: []time.Time{
					time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC),
					time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC),
				},
				Values: []float64{
					1.0,
					1.0,
				},
				MetricSpecification: &types.PredictiveScalingMetricSpecification{
					TargetValue: ptr.Float64(1.0),
					PredefinedMetricPairSpecification: &types.PredictiveScalingPredefinedMetricPairSpecification{
						PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
						ResourceLabel:        ptr.String("__ResourceLabel__"),
					},
					PredefinedScalingMetricSpecification: &types.PredictiveScalingPredefinedScalingMetricSpecification{
						PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
						ResourceLabel:        ptr.String("__ResourceLabel__"),
					},
					PredefinedLoadMetricSpecification: &types.PredictiveScalingPredefinedLoadMetricSpecification{
						PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
						ResourceLabel:        ptr.String("__ResourceLabel__"),
					},
					CustomizedScalingMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
						MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
						},
					},
					CustomizedLoadMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
						MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
						},
					},
					CustomizedCapacityMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
						MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
						},
					},
				},
			},
			{
				Timestamps: []time.Time{
					time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC),
					time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC),
				},
				Values: []float64{
					1.0,
					1.0,
				},
				MetricSpecification: &types.PredictiveScalingMetricSpecification{
					TargetValue: ptr.Float64(1.0),
					PredefinedMetricPairSpecification: &types.PredictiveScalingPredefinedMetricPairSpecification{
						PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
						ResourceLabel:        ptr.String("__ResourceLabel__"),
					},
					PredefinedScalingMetricSpecification: &types.PredictiveScalingPredefinedScalingMetricSpecification{
						PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
						ResourceLabel:        ptr.String("__ResourceLabel__"),
					},
					PredefinedLoadMetricSpecification: &types.PredictiveScalingPredefinedLoadMetricSpecification{
						PredefinedMetricType: ptr.String("__PredefinedMetricType__"),
						ResourceLabel:        ptr.String("__ResourceLabel__"),
					},
					CustomizedScalingMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
						MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
						},
					},
					CustomizedLoadMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
						MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
						},
					},
					CustomizedCapacityMetricSpecification: &types.PredictiveScalingCustomizedMetricSpecification{
						MetricDataQueries: []types.PredictiveScalingMetricDataQuery{
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
							{
								Id:         ptr.String("__Id__"),
								Expression: ptr.String("__Expression__"),
								MetricStat: &types.PredictiveScalingMetricStat{
									Metric: &types.PredictiveScalingMetric{
										Dimensions: []types.PredictiveScalingMetricDimension{
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
											{
												Name:  ptr.String("__Name__"),
												Value: ptr.String("__Value__"),
											},
										},
										MetricName: ptr.String("__MetricName__"),
										Namespace:  ptr.String("__Namespace__"),
									},
									Stat: ptr.String("__Stat__"),
									Unit: ptr.String("__Unit__"),
								},
								Label:      ptr.String("__Label__"),
								ReturnData: ptr.Bool(true),
							},
						},
					},
				},
			},
		},
		CapacityForecast: &types.CapacityForecast{
			Timestamps: []time.Time{
				time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC),
				time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC),
			},
			Values: []float64{
				1.0,
				1.0,
			},
		},
		UpdateTime: ptr.Time(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)),
	}
	status, header, body, err := serdeRespReadSnapshot("GetPredictiveScalingForecast.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.GetPredictiveScalingForecast(context.Background(), &GetPredictiveScalingForecastInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "GetPredictiveScalingForecast.response", err)
	}
}

func TestCheckResponseSnapshot_ListTagsForResource(t *testing.T) {
	want := &ListTagsForResourceOutput{
		Tags: map[string]string{
			"key0": "__Value__",
		},
	}
	status, header, body, err := serdeRespReadSnapshot("ListTagsForResource.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.ListTagsForResource(context.Background(), &ListTagsForResourceInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "ListTagsForResource.response", err)
	}
}

func TestCheckResponseSnapshot_PutScalingPolicy(t *testing.T) {
	want := &PutScalingPolicyOutput{
		PolicyARN: ptr.String("__PolicyARN__"),
		Alarms: []types.Alarm{
			{
				AlarmName: ptr.String("__AlarmName__"),
				AlarmARN:  ptr.String("__AlarmARN__"),
			},
			{
				AlarmName: ptr.String("__AlarmName__"),
				AlarmARN:  ptr.String("__AlarmARN__"),
			},
		},
	}
	status, header, body, err := serdeRespReadSnapshot("PutScalingPolicy.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.PutScalingPolicy(context.Background(), &PutScalingPolicyInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "PutScalingPolicy.response", err)
	}
}

func TestCheckResponseSnapshot_PutScheduledAction(t *testing.T) {
	want := &PutScheduledActionOutput{}
	status, header, body, err := serdeRespReadSnapshot("PutScheduledAction.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.PutScheduledAction(context.Background(), &PutScheduledActionInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "PutScheduledAction.response", err)
	}
}

func TestCheckResponseSnapshot_RegisterScalableTarget(t *testing.T) {
	want := &RegisterScalableTargetOutput{
		ScalableTargetARN: ptr.String("__ScalableTargetARN__"),
	}
	status, header, body, err := serdeRespReadSnapshot("RegisterScalableTarget.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.RegisterScalableTarget(context.Background(), &RegisterScalableTargetInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "RegisterScalableTarget.response", err)
	}
}

func TestCheckResponseSnapshot_TagResource(t *testing.T) {
	want := &TagResourceOutput{}
	status, header, body, err := serdeRespReadSnapshot("TagResource.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.TagResource(context.Background(), &TagResourceInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "TagResource.response", err)
	}
}

func TestCheckResponseSnapshot_UntagResource(t *testing.T) {
	want := &UntagResourceOutput{}
	status, header, body, err := serdeRespReadSnapshot("UntagResource.response")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	got, err := svc.UntagResource(context.Background(), &UntagResourceInput{})
	if err != nil {
		t.Fatal(err)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("response snapshot mismatch for %s: %v", "UntagResource.response", err)
	}
}

func TestCheckResponseSnapshot_Error_ConcurrentUpdateException(t *testing.T) {
	want := &types.ConcurrentUpdateException{
		Message: ptr.String("__Message__"),
	}
	status, header, body, err := serdeRespReadSnapshot("ConcurrentUpdateException.error")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	_, opErr := svc.DeleteScalingPolicy(context.Background(), &DeleteScalingPolicyInput{})
	if opErr == nil {
		t.Fatal("expected error, got nil")
	}
	var got *types.ConcurrentUpdateException
	if !errors.As(opErr, &got) {
		t.Fatalf("expected types.ConcurrentUpdateException, got %v", opErr)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("error response snapshot mismatch for %s: %v", "ConcurrentUpdateException.error", err)
	}
}

func TestCheckResponseSnapshot_Error_FailedResourceAccessException(t *testing.T) {
	want := &types.FailedResourceAccessException{
		Message: ptr.String("__Message__"),
	}
	status, header, body, err := serdeRespReadSnapshot("FailedResourceAccessException.error")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	_, opErr := svc.DescribeScalingPolicies(context.Background(), &DescribeScalingPoliciesInput{})
	if opErr == nil {
		t.Fatal("expected error, got nil")
	}
	var got *types.FailedResourceAccessException
	if !errors.As(opErr, &got) {
		t.Fatalf("expected types.FailedResourceAccessException, got %v", opErr)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("error response snapshot mismatch for %s: %v", "FailedResourceAccessException.error", err)
	}
}

func TestCheckResponseSnapshot_Error_InternalServiceException(t *testing.T) {
	want := &types.InternalServiceException{
		Message: ptr.String("__Message__"),
	}
	status, header, body, err := serdeRespReadSnapshot("InternalServiceException.error")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	_, opErr := svc.DeleteScalingPolicy(context.Background(), &DeleteScalingPolicyInput{})
	if opErr == nil {
		t.Fatal("expected error, got nil")
	}
	var got *types.InternalServiceException
	if !errors.As(opErr, &got) {
		t.Fatalf("expected types.InternalServiceException, got %v", opErr)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("error response snapshot mismatch for %s: %v", "InternalServiceException.error", err)
	}
}

func TestCheckResponseSnapshot_Error_InvalidNextTokenException(t *testing.T) {
	want := &types.InvalidNextTokenException{
		Message: ptr.String("__Message__"),
	}
	status, header, body, err := serdeRespReadSnapshot("InvalidNextTokenException.error")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	_, opErr := svc.DescribeScalableTargets(context.Background(), &DescribeScalableTargetsInput{})
	if opErr == nil {
		t.Fatal("expected error, got nil")
	}
	var got *types.InvalidNextTokenException
	if !errors.As(opErr, &got) {
		t.Fatalf("expected types.InvalidNextTokenException, got %v", opErr)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("error response snapshot mismatch for %s: %v", "InvalidNextTokenException.error", err)
	}
}

func TestCheckResponseSnapshot_Error_LimitExceededException(t *testing.T) {
	want := &types.LimitExceededException{
		Message: ptr.String("__Message__"),
	}
	status, header, body, err := serdeRespReadSnapshot("LimitExceededException.error")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	_, opErr := svc.PutScalingPolicy(context.Background(), &PutScalingPolicyInput{})
	if opErr == nil {
		t.Fatal("expected error, got nil")
	}
	var got *types.LimitExceededException
	if !errors.As(opErr, &got) {
		t.Fatalf("expected types.LimitExceededException, got %v", opErr)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("error response snapshot mismatch for %s: %v", "LimitExceededException.error", err)
	}
}

func TestCheckResponseSnapshot_Error_ObjectNotFoundException(t *testing.T) {
	want := &types.ObjectNotFoundException{
		Message: ptr.String("__Message__"),
	}
	status, header, body, err := serdeRespReadSnapshot("ObjectNotFoundException.error")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	_, opErr := svc.DeleteScalingPolicy(context.Background(), &DeleteScalingPolicyInput{})
	if opErr == nil {
		t.Fatal("expected error, got nil")
	}
	var got *types.ObjectNotFoundException
	if !errors.As(opErr, &got) {
		t.Fatalf("expected types.ObjectNotFoundException, got %v", opErr)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("error response snapshot mismatch for %s: %v", "ObjectNotFoundException.error", err)
	}
}

func TestCheckResponseSnapshot_Error_ResourceNotFoundException(t *testing.T) {
	want := &types.ResourceNotFoundException{
		Message:      ptr.String("__Message__"),
		ResourceName: ptr.String("__ResourceName__"),
	}
	status, header, body, err := serdeRespReadSnapshot("ResourceNotFoundException.error")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	_, opErr := svc.ListTagsForResource(context.Background(), &ListTagsForResourceInput{})
	if opErr == nil {
		t.Fatal("expected error, got nil")
	}
	var got *types.ResourceNotFoundException
	if !errors.As(opErr, &got) {
		t.Fatalf("expected types.ResourceNotFoundException, got %v", opErr)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("error response snapshot mismatch for %s: %v", "ResourceNotFoundException.error", err)
	}
}

func TestCheckResponseSnapshot_Error_TooManyTagsException(t *testing.T) {
	want := &types.TooManyTagsException{
		Message:      ptr.String("__Message__"),
		ResourceName: ptr.String("__ResourceName__"),
	}
	status, header, body, err := serdeRespReadSnapshot("TooManyTagsException.error")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	_, opErr := svc.TagResource(context.Background(), &TagResourceInput{})
	if opErr == nil {
		t.Fatal("expected error, got nil")
	}
	var got *types.TooManyTagsException
	if !errors.As(opErr, &got) {
		t.Fatalf("expected types.TooManyTagsException, got %v", opErr)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("error response snapshot mismatch for %s: %v", "TooManyTagsException.error", err)
	}
}

func TestCheckResponseSnapshot_Error_ValidationException(t *testing.T) {
	want := &types.ValidationException{
		Message: ptr.String("__Message__"),
	}
	status, header, body, err := serdeRespReadSnapshot("ValidationException.error")
	if errors.Is(err, fs.ErrNotExist) {
		t.Skip("no response snapshot fixture")
	}
	if err != nil {
		t.Fatal(err)
	}
	svc := serdeRespClient(status, header, body)
	_, opErr := svc.DeleteScalingPolicy(context.Background(), &DeleteScalingPolicyInput{})
	if opErr == nil {
		t.Fatal("expected error, got nil")
	}
	var got *types.ValidationException
	if !errors.As(opErr, &got) {
		t.Fatalf("expected types.ValidationException, got %v", opErr)
	}
	if err := smithytesting.CompareValues(want, got); err != nil {
		t.Errorf("error response snapshot mismatch for %s: %v", "ValidationException.error", err)
	}
}
