public void GetCampaign()
        {
            moq::Mock <CampaignService.CampaignServiceClient> mockGrpcClient = new moq::Mock <CampaignService.CampaignServiceClient>(moq::MockBehavior.Strict);
            GetCampaignRequest request = new GetCampaignRequest
            {
                ResourceNameAsCampaignName = gagvr::CampaignName.FromCustomerCampaign("[CUSTOMER_ID]", "[CAMPAIGN_ID]"),
            };
            gagvr::Campaign expectedResponse = new gagvr::Campaign
            {
                ResourceNameAsCampaignName = gagvr::CampaignName.FromCustomerCampaign("[CUSTOMER_ID]", "[CAMPAIGN_ID]"),
                Status = gagve::CampaignStatusEnum.Types.CampaignStatus.Removed,
                AdServingOptimizationStatus = gagve::AdServingOptimizationStatusEnum.Types.AdServingOptimizationStatus.ConversionOptimize,
                AdvertisingChannelType      = gagve::AdvertisingChannelTypeEnum.Types.AdvertisingChannelType.Unknown,
                AdvertisingChannelSubType   = gagve::AdvertisingChannelSubTypeEnum.Types.AdvertisingChannelSubType.Unknown,
                UrlCustomParameters         =
                {
                    new gagvc::CustomParameter(),
                },
                NetworkSettings         = new gagvr::Campaign.Types.NetworkSettings(),
                ExperimentType          = gagve::CampaignExperimentTypeEnum.Types.CampaignExperimentType.Unknown,
                ServingStatus           = gagve::CampaignServingStatusEnum.Types.CampaignServingStatus.Ended,
                BiddingStrategyType     = gagve::BiddingStrategyTypeEnum.Types.BiddingStrategyType.PercentCpc,
                ManualCpc               = new gagvc::ManualCpc(),
                ManualCpm               = new gagvc::ManualCpm(),
                TargetCpa               = new gagvc::TargetCpa(),
                TargetSpend             = new gagvc::TargetSpend(),
                TargetRoas              = new gagvc::TargetRoas(),
                MaximizeConversions     = new gagvc::MaximizeConversions(),
                MaximizeConversionValue = new gagvc::MaximizeConversionValue(),
                HotelSetting            = new gagvr::Campaign.Types.HotelSettingInfo(),
                DynamicSearchAdsSetting = new gagvr::Campaign.Types.DynamicSearchAdsSetting(),
                PercentCpc              = new gagvc::PercentCpc(),
                ShoppingSetting         = new gagvr::Campaign.Types.ShoppingSetting(),
                ManualCpv               = new gagvc::ManualCpv(),
                RealTimeBiddingSetting  = new gagvc::RealTimeBiddingSetting(),
                FrequencyCaps           =
                {
                    new gagvc::FrequencyCapEntry(),
                },
                TargetCpm = new gagvc::TargetCpm(),
                VideoBrandSafetySuitability = gagve::BrandSafetySuitabilityEnum.Types.BrandSafetySuitability.Unknown,
                TargetingSetting            = new gagvc::TargetingSetting(),
                VanityPharma               = new gagvr::Campaign.Types.VanityPharma(),
                SelectiveOptimization      = new gagvr::Campaign.Types.SelectiveOptimization(),
                TrackingSetting            = new gagvr::Campaign.Types.TrackingSetting(),
                GeoTargetTypeSetting       = new gagvr::Campaign.Types.GeoTargetTypeSetting(),
                TargetImpressionShare      = new gagvc::TargetImpressionShare(),
                Commission                 = new gagvc::Commission(),
                LocalCampaignSetting       = new gagvr::Campaign.Types.LocalCampaignSetting(),
                AppCampaignSetting         = new gagvr::Campaign.Types.AppCampaignSetting(),
                PaymentMode                = gagve::PaymentModeEnum.Types.PaymentMode.Clicks,
                OptimizationGoalSetting    = new gagvr::Campaign.Types.OptimizationGoalSetting(),
                BaseCampaignAsCampaignName = gagvr::CampaignName.FromCustomerCampaign("[CUSTOMER_ID]", "[CAMPAIGN_ID]"),
                CampaignName               = gagvr::CampaignName.FromCustomerCampaign("[CUSTOMER_ID]", "[CAMPAIGN_ID]"),
                Id = -6774108720365892680L,
                TrackingUrlTemplate        = "tracking_url_template157f152a",
                LabelsAsCampaignLabelNames =
                {
                    gagvr::CampaignLabelName.FromCustomerCampaignLabel("[CUSTOMER_ID]", "[CAMPAIGN_ID]", "[LABEL_ID]"),
                },
                CampaignBudgetAsCampaignBudgetName = gagvr::CampaignBudgetName.FromCustomerCampaignBudget("[CUSTOMER_ID]", "[CAMPAIGN_BUDGET_ID]"),
                StartDate         = "start_date11b9dbea",
                EndDate           = "end_date89dae890",
                FinalUrlSuffix    = "final_url_suffix046ed37a",
                OptimizationScore = -4.7741588361660064E+17,
                BiddingStrategyAsBiddingStrategyName = gagvr::BiddingStrategyName.FromCustomerBiddingStrategy("[CUSTOMER_ID]", "[BIDDING_STRATEGY_ID]"),
                ExcludedParentAssetFieldTypes        =
                {
                    gagve::AssetFieldTypeEnum.Types.AssetFieldType.HotelCallout,
                },
                AccessibleBiddingStrategyAsAccessibleBiddingStrategyName = gagvr::AccessibleBiddingStrategyName.FromCustomerBiddingStrategy("[CUSTOMER_ID]", "[BIDDING_STRATEGY_ID]"),
                UrlExpansionOptOut = false,
            };

            mockGrpcClient.Setup(x => x.GetCampaign(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(expectedResponse);
            CampaignServiceClient client   = new CampaignServiceClientImpl(mockGrpcClient.Object, null);
            gagvr::Campaign       response = client.GetCampaign(request.ResourceName);

            Assert.AreEqual(expectedResponse, response);
            mockGrpcClient.VerifyAll();
        }
        public async stt::Task GetCampaignResourceNamesAsync()
        {
            moq::Mock <CampaignService.CampaignServiceClient> mockGrpcClient = new moq::Mock <CampaignService.CampaignServiceClient>(moq::MockBehavior.Strict);
            GetCampaignRequest request = new GetCampaignRequest
            {
                ResourceNameAsCampaignName = gagvr::CampaignName.FromCustomerCampaign("[CUSTOMER]", "[CAMPAIGN]"),
            };
            gagvr::Campaign expectedResponse = new gagvr::Campaign
            {
                ResourceNameAsCampaignName = gagvr::CampaignName.FromCustomerCampaign("[CUSTOMER]", "[CAMPAIGN]"),
                Id           = -6774108720365892680L,
                CampaignName = gagvr::CampaignName.FromCustomerCampaign("[CUSTOMER]", "[CAMPAIGN]"),
                Status       = gagve::CampaignStatusEnum.Types.CampaignStatus.Removed,
                CampaignBudgetAsCampaignBudgetName = gagvr::CampaignBudgetName.FromCustomerCampaignBudget("[CUSTOMER]", "[CAMPAIGN_BUDGET]"),
                AdServingOptimizationStatus        = gagve::AdServingOptimizationStatusEnum.Types.AdServingOptimizationStatus.ConversionOptimize,
                AdvertisingChannelType             = gagve::AdvertisingChannelTypeEnum.Types.AdvertisingChannelType.MultiChannel,
                AdvertisingChannelSubType          = gagve::AdvertisingChannelSubTypeEnum.Types.AdvertisingChannelSubType.SearchMobileApp,
                TrackingUrlTemplate = "tracking_url_template157f152a",
                UrlCustomParameters =
                {
                    new gagvc::CustomParameter(),
                },
                NetworkSettings     = new gagvr::Campaign.Types.NetworkSettings(),
                ExperimentType      = gagve::CampaignExperimentTypeEnum.Types.CampaignExperimentType.Unknown,
                StartDate           = "start_date11b9dbea",
                EndDate             = "end_date89dae890",
                ServingStatus       = gagve::CampaignServingStatusEnum.Types.CampaignServingStatus.Ended,
                BiddingStrategyType = gagve::BiddingStrategyTypeEnum.Types.BiddingStrategyType.TargetCpa,
                BiddingStrategyAsBiddingStrategyName = gagvr::BiddingStrategyName.FromCustomerBiddingStrategy("[CUSTOMER]", "[BIDDING_STRATEGY]"),
                ManualCpc   = new gagvc::ManualCpc(),
                ManualCpm   = new gagvc::ManualCpm(),
                TargetCpa   = new gagvc::TargetCpa(),
                TargetSpend = new gagvc::TargetSpend(),
                BaseCampaignAsCampaignName = gagvr::CampaignName.FromCustomerCampaign("[CUSTOMER]", "[CAMPAIGN]"),
                TargetRoas              = new gagvc::TargetRoas(),
                MaximizeConversions     = new gagvc::MaximizeConversions(),
                MaximizeConversionValue = new gagvc::MaximizeConversionValue(),
                HotelSetting            = new gagvr::Campaign.Types.HotelSettingInfo(),
                DynamicSearchAdsSetting = new gagvr::Campaign.Types.DynamicSearchAdsSetting(),
                PercentCpc              = new gagvc::PercentCpc(),
                ShoppingSetting         = new gagvr::Campaign.Types.ShoppingSetting(),
                ManualCpv              = new gagvc::ManualCpv(),
                FinalUrlSuffix         = "final_url_suffix046ed37a",
                RealTimeBiddingSetting = new gagvc::RealTimeBiddingSetting(),
                FrequencyCaps          =
                {
                    new gagvc::FrequencyCapEntry(),
                },
                TargetCpm = new gagvc::TargetCpm(),
                VideoBrandSafetySuitability = gagve::BrandSafetySuitabilityEnum.Types.BrandSafetySuitability.Unknown,
                TargetingSetting            = new gagvc::TargetingSetting(),
                VanityPharma               = new gagvr::Campaign.Types.VanityPharma(),
                SelectiveOptimization      = new gagvr::Campaign.Types.SelectiveOptimization(),
                TrackingSetting            = new gagvr::Campaign.Types.TrackingSetting(),
                GeoTargetTypeSetting       = new gagvr::Campaign.Types.GeoTargetTypeSetting(),
                TargetImpressionShare      = new gagvc::TargetImpressionShare(),
                Commission                 = new gagvc::Commission(),
                LocalCampaignSetting       = new gagvr::Campaign.Types.LocalCampaignSetting(),
                AppCampaignSetting         = new gagvr::Campaign.Types.AppCampaignSetting(),
                PaymentMode                = gagve::PaymentModeEnum.Types.PaymentMode.Clicks,
                LabelsAsCampaignLabelNames =
                {
                    gagvr::CampaignLabelName.FromCustomerCampaignLabel("[CUSTOMER]", "[CAMPAIGN_LABEL]"),
                },
                OptimizationGoalSetting = new gagvr::Campaign.Types.OptimizationGoalSetting(),
                OptimizationScore       = -4.7741588361660064E+17,
            };

            mockGrpcClient.Setup(x => x.GetCampaignAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <gagvr::Campaign>(stt::Task.FromResult(expectedResponse), null, null, null, null));
            CampaignServiceClient client = new CampaignServiceClientImpl(mockGrpcClient.Object, null);
            gagvr::Campaign       responseCallSettings = await client.GetCampaignAsync(request.ResourceNameAsCampaignName, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None));

            xunit::Assert.Same(expectedResponse, responseCallSettings);
            gagvr::Campaign responseCancellationToken = await client.GetCampaignAsync(request.ResourceNameAsCampaignName, st::CancellationToken.None);

            xunit::Assert.Same(expectedResponse, responseCancellationToken);
            mockGrpcClient.VerifyAll();
        }