/// <summary>
        /// Compares two product partition nodes.
        /// </summary>
        /// <param name="leftNode">The left node.</param>
        /// <param name="rightNode">The right node.</param>
        private static void CompareTree(ProductPartitionNode leftNode,
                                        ProductPartitionNode rightNode)
        {
            ProductDimensionEqualityComparer comparer = new ProductDimensionEqualityComparer();

            Assert.True(comparer.Equals(leftNode.Dimension, rightNode.Dimension));

            Assert.AreEqual(leftNode.Children.Count(), rightNode.Children.Count());

            for (int i = 0; i < leftNode.Children.Count(); i++)
            {
                ProductPartitionNode leftChildNode = leftNode.Children.ElementAt(i);
                bool foundMatch = false;
                for (int j = 0; j < rightNode.Children.Count(); j++)
                {
                    ProductPartitionNode rightChildNode = rightNode.Children.ElementAt(j);

                    if (comparer.Equals(leftChildNode.Dimension, rightChildNode.Dimension))
                    {
                        CompareTree(leftChildNode, rightChildNode);
                        foundMatch = true;
                        break;
                    }
                }
                Assert.True(foundMatch, "Matching node not found.");
            }
        }
示例#2
0
        /// <summary>
        /// Gets the operations for node.
        /// </summary>
        /// <param name="partitionNode">The partition node.</param>
        /// <param name="mutateOperations">The list of all mutate operations.</param>
        /// <returns>The list of operations that apply to partitionNode.</returns>
        internal List <AdGroupCriterionOperation> GetOperationsForNode(
            ProductPartitionNode partitionNode, AdGroupCriterionOperation[] mutateOperations)
        {
            ProductDimensionEqualityComparer comparer = new ProductDimensionEqualityComparer();
            List <AdGroupCriterionOperation> retval   = new List <AdGroupCriterionOperation>();

            foreach (AdGroupCriterionOperation operation in mutateOperations)
            {
                switch (operation.@operator)
                {
                case Operator.SET:
                case Operator.REMOVE:
                    if (operation.operand.criterion.id == partitionNode.ProductPartitionId)
                    {
                        retval.Add(operation);
                    }
                    break;

                case Operator.ADD:
                    if (comparer.Equals((operation.operand.criterion as ProductPartition).caseValue,
                                        partitionNode.Dimension))
                    {
                        retval.Add(operation);
                    }
                    break;
                }
            }
            return(retval);
        }
    /// <summary>
    /// Compares two product partition nodes.
    /// </summary>
    /// <param name="leftNode">The left node.</param>
    /// <param name="rightNode">The right node.</param>
    private static void CompareTree(ProductPartitionNode leftNode,
        ProductPartitionNode rightNode) {
      ProductDimensionEqualityComparer comparer = new ProductDimensionEqualityComparer();
      Assert.True(comparer.Equals(leftNode.Dimension, rightNode.Dimension));

      Assert.AreEqual(leftNode.Children.Count(), rightNode.Children.Count());

      for (int i = 0; i < leftNode.Children.Count(); i++) {
        ProductPartitionNode leftChildNode = leftNode.Children.ElementAt(i);
        bool foundMatch = false;
        for (int j = 0; j < rightNode.Children.Count(); j++) {
          ProductPartitionNode rightChildNode = rightNode.Children.ElementAt(j);

          if (comparer.Equals(leftChildNode.Dimension, rightChildNode.Dimension)) {
            CompareTree(leftChildNode, rightChildNode);
            foundMatch = true;
            break;
          }
        }
        Assert.True(foundMatch, "Matching node not found.");
      }
    }
示例#4
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));
        }
        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>
        /// Gets the operations for node.
        /// </summary>
        /// <param name="partitionNode">The partition node.</param>
        /// <param name="mutateOperations">The list of all mutate operations.</param>
        /// <returns>The list of operations that apply to partitionNode.</returns>
        internal List<AdGroupCriterionOperation> GetOperationsForNode(
        ProductPartitionNode partitionNode, AdGroupCriterionOperation[] mutateOperations)
        {
            ProductDimensionEqualityComparer comparer = new ProductDimensionEqualityComparer();
              List<AdGroupCriterionOperation> retval = new List<AdGroupCriterionOperation>();

              foreach (AdGroupCriterionOperation operation in mutateOperations) {
            switch (operation.@operator) {
              case Operator.SET:
              case Operator.REMOVE:
            if (operation.operand.criterion.id == partitionNode.ProductPartitionId) {
              retval.Add(operation);
            }
            break;

              case Operator.ADD:
            if (comparer.Equals((operation.operand.criterion as ProductPartition).caseValue,
                partitionNode.Dimension)) {
              retval.Add(operation);
            }
            break;
            }
              }
              return retval;
        }