public void TestProductBiddingCategoryGetHashcode() { ProductBiddingCategory categoryA = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, value = 2L }; ProductBiddingCategory categoryB = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, value = 2L }; ProductBiddingCategory categoryC = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L2, value = 2L }; ProductBiddingCategory categoryD = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, value = 5L }; Assert.AreEqual(comparer.GetHashCode(categoryA), comparer.GetHashCode(categoryB)); Assert.AreNotEqual(comparer.GetHashCode(categoryA), comparer.GetHashCode(categoryC)); Assert.AreNotEqual(comparer.GetHashCode(categoryA), comparer.GetHashCode(categoryD)); }
/// <summary> /// Creates a new ProductBiddingCategory. /// </summary> /// <param name="productDimensionType">Type of the product dimension.</param> /// <param name="biddingCategoryId">The bidding category ID.</param> /// <returns>The product bidding category criterion.</returns> public static ProductBiddingCategory CreateBiddingCategory( ProductDimensionType productDimensionType, long biddingCategoryId) { ProductBiddingCategory retval = CreateBiddingCategory(productDimensionType); retval.value = biddingCategoryId; return(retval); }
public void TestNullEquals() { ProductDimension dimension = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, value = 2L }; Assert.False(comparer.Equals(dimension, null)); Assert.False(comparer.Equals(null, dimension)); Assert.True(comparer.Equals(null, null)); }
public void TestProductBiddingCategoryEquals() { ProductBiddingCategory categoryA = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, value = 2L }; ProductBiddingCategory categoryB = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, value = 2L }; ProductBiddingCategory categoryC = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L2, value = 2L }; ProductBiddingCategory categoryD = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, value = 5L }; ProductBiddingCategory categoryE = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, }; ProductBiddingCategory categoryF = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, }; ProductBiddingCategory categoryG = new ProductBiddingCategory(); ProductBiddingCategory categoryH = new ProductBiddingCategory(); Assert.True(comparer.Equals(categoryA, categoryB)); Assert.False(comparer.Equals(categoryA, categoryC)); Assert.False(comparer.Equals(categoryA, categoryD)); // Null value is handled gracefully. Assert.False(comparer.Equals(categoryA, categoryD)); Assert.False(comparer.Equals(categoryA, categoryE)); Assert.True(comparer.Equals(categoryE, categoryF)); Assert.True(comparer.Equals(categoryG, categoryH)); }
public void TestCreateBiddingCategory() { ProductBiddingCategory categoryA = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, value = 2L }; ProductBiddingCategory categoryB = ProductDimensions.CreateBiddingCategory( ProductDimensionType.BIDDING_CATEGORY_L1, 2L); Assert.True(comparer.Equals(categoryA, categoryB)); ProductBiddingCategory categoryC = new ProductBiddingCategory() { type = ProductDimensionType.BIDDING_CATEGORY_L1, }; ProductBiddingCategory categoryD = ProductDimensions.CreateBiddingCategory( ProductDimensionType.BIDDING_CATEGORY_L1); Assert.True(comparer.Equals(categoryC, categoryD)); }
/// <summary> /// Determines whether the specified <see cref="ProductBiddingCategory"/> objects /// are equal. /// </summary> /// <param name="x">The first object to compare.</param> /// <param name="y">The second object to compare.</param> /// <returns> /// True if the specified objects are equal; otherwise, false. /// </returns> private bool Equals(ProductBiddingCategory x, ProductBiddingCategory y) { return(x.typeSpecified == y.typeSpecified && x.type == y.type && x.value == y.value); }
/// <summary> /// Gets the hash code for a <see cref="ProductBiddingCategory"/>. /// </summary> /// <param name="obj">The object to calculate hash code for.</param> /// <returns>The hash code.</returns> private int GetHashCodeInternal(ProductBiddingCategory obj) { return(Tuple .Create <bool, ProductDimensionType, long>(obj.typeSpecified, obj.type, obj.value) .GetHashCode()); }
/// <summary> /// Runs the code example. /// </summary> /// <param name="user">The AdWords user.</param> /// <param name="campaignId">The campaign id to add product scope.</param> public void Run(AdWordsUser user, long campaignId) { // Get the CampaignCriterionService. CampaignCriterionService campaignCriterionService = (CampaignCriterionService)user.GetService( AdWordsService.v201609.CampaignCriterionService); ProductScope productScope = new ProductScope(); // This set of dimensions is for demonstration purposes only. It would be // extremely unlikely that you want to include so many dimensions in your // product scope. ProductBrand nexusBrand = new ProductBrand(); nexusBrand.value = "Nexus"; ProductCanonicalCondition newProducts = new ProductCanonicalCondition(); newProducts.condition = ProductCanonicalConditionCondition.NEW; ProductCustomAttribute customAttribute = new ProductCustomAttribute(); customAttribute.type = ProductDimensionType.CUSTOM_ATTRIBUTE_0; customAttribute.value = "my attribute value"; ProductOfferId bookOffer = new ProductOfferId(); bookOffer.value = "book1"; ProductType mediaProducts = new ProductType(); mediaProducts.type = ProductDimensionType.PRODUCT_TYPE_L1; mediaProducts.value = "Media"; ProductType bookProducts = new ProductType(); bookProducts.type = ProductDimensionType.PRODUCT_TYPE_L2; bookProducts.value = "Books"; // The value for the bidding category is a fixed ID for the // 'Luggage & Bags' category. You can retrieve IDs for categories from // the ConstantDataService. See the 'GetProductCategoryTaxonomy' example // for more details. ProductBiddingCategory luggageBiddingCategory = new ProductBiddingCategory(); luggageBiddingCategory.type = ProductDimensionType.BIDDING_CATEGORY_L1; luggageBiddingCategory.value = -5914235892932915235; productScope.dimensions = new ProductDimension[] { nexusBrand, newProducts, bookOffer, mediaProducts, luggageBiddingCategory }; CampaignCriterion campaignCriterion = new CampaignCriterion(); campaignCriterion.campaignId = campaignId; campaignCriterion.criterion = productScope; // Create operation. CampaignCriterionOperation operation = new CampaignCriterionOperation(); operation.operand = campaignCriterion; operation.@operator = Operator.ADD; try { // Make the mutate request. CampaignCriterionReturnValue result = campaignCriterionService.mutate( new CampaignCriterionOperation[] { operation }); Console.WriteLine("Created a ProductScope criterion with ID '{0}'", result.value[0].criterion.id); } catch (Exception e) { throw new System.ApplicationException("Failed to set shopping product scope.", e); } }
/// <summary> /// Runs the code example. /// </summary> /// <param name="user">The AdWords user.</param> /// <param name="adGroupId">The ad group to which product partition is /// added.</param> public void Run(AdWordsUser user, long adGroupId) { // Get the AdGroupCriterionService. AdGroupCriterionService adGroupCriterionService = (AdGroupCriterionService)user.GetService( AdWordsService.v201506.AdGroupCriterionService); ProductPartitionHelper helper = new ProductPartitionHelper(adGroupId); // The most trivial partition tree has only a unit node as the root: // helper.createUnit(null, null, 100000); ProductPartition root = helper.CreateSubdivision(null, null); ProductCanonicalCondition newCondition = new ProductCanonicalCondition(); newCondition.condition = ProductCanonicalConditionCondition.NEW; ProductPartition newPartition = helper.CreateUnit(root, newCondition, 200000, false); ProductCanonicalCondition usedCondition = new ProductCanonicalCondition(); usedCondition.condition = ProductCanonicalConditionCondition.USED; ProductPartition usedPartition = helper.CreateUnit(root, usedCondition, 100000, false); ProductPartition otherCondition = helper.CreateSubdivision(root, new ProductCanonicalCondition()); ProductBrand coolBrand = new ProductBrand(); coolBrand.value = "CoolBrand"; helper.CreateUnit(otherCondition, coolBrand, 900000, false); ProductBrand cheapBrand = new ProductBrand(); cheapBrand.value = "CheapBrand"; helper.CreateUnit(otherCondition, cheapBrand, 10000, false); ProductPartition otherBrand = helper.CreateSubdivision(otherCondition, new ProductBrand()); // The value for the bidding category is a fixed ID for the 'Luggage & Bags' // category. You can retrieve IDs for categories from the ConstantDataService. // See the 'GetProductCategoryTaxonomy' example for more details. ProductBiddingCategory luggageAndBags = new ProductBiddingCategory(); luggageAndBags.type = ProductDimensionType.BIDDING_CATEGORY_L1; luggageAndBags.value = -5914235892932915235; helper.CreateUnit(otherBrand, luggageAndBags, 750000, false); ProductBiddingCategory everythingElse = new ProductBiddingCategory(); everythingElse.type = ProductDimensionType.BIDDING_CATEGORY_L1; helper.CreateUnit(otherBrand, everythingElse, 110000, false); try { // Make the mutate request. AdGroupCriterionReturnValue retval = adGroupCriterionService.mutate(helper.Operations); Dictionary <long, List <ProductPartition> > children = new Dictionary <long, List <ProductPartition> >(); ProductPartition rootNode = null; // For each criterion, make an array containing each of its children // We always create the parent before the child, so we can rely on that here. foreach (AdGroupCriterion adGroupCriterion in retval.value) { ProductPartition newCriterion = (ProductPartition)adGroupCriterion.criterion; children[newCriterion.id] = new List <ProductPartition>(); if (newCriterion.parentCriterionIdSpecified) { children[newCriterion.parentCriterionId].Add(newCriterion); } else { rootNode = (ProductPartition)adGroupCriterion.criterion; } } // Show the tree StringWriter writer = new StringWriter(); DisplayTree(rootNode, children, 0, writer); Console.WriteLine(writer.ToString()); } catch (Exception ex) { throw new System.ApplicationException("Failed to set shopping product partition.", ex); } }