Exemple #1
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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));
    }
Exemple #6
0
 /// <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);
 }
Exemple #7
0
 /// <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);
            }
        }