def testFloatDivergenceTesterWithTheDefaultRangeRegardingTestedPropertyToleranceBase(
        self, quiet=quiet, run=run_all_test):
    """
    Test Float Divergence Tester with the default range in a real use-case,
    in addition, test a tolerance base configurataion: tested_property.

    The defined behavior checking the divergence in FloatEquivalenceTester:

    1. If nothing is configured, the default epsilon range is used
    2. If not having absolete and having relative, the relative value is used
    3. If having both absolete and relative value, the absolute value is used

    This test checks case 1 and 2
    """
    if not run: return
    sequence_string = TestPackingListMixin.default_sequence + """
          SetPackingListMovementAndSimulationMovement
          ResetDeliveringRule
          SetNewPrice
          Tic
          CheckPackingListIsNotDivergent
          AddDefaultRangePriceDivergenceTester
          CheckPackingListIsDivergent
          SetPreviousPrice
          Tic
          CheckPackingListIsNotDivergent
          SetPreviousPricePlusAValueSmallerThanTheEpsilon
          Tic
          CheckPackingListIsNotDivergent
          SetMinimumRangeIntoPriceDivergenceTesterRegardingTestedPropertyToleranceBase
          Tic
          CheckPackingListIsDivergent
    """
    sequence = Sequence(self)
    sequence(sequence_string, quiet=self.quiet)
Exemple #2
0
 def test_08_localBuild(self):
     sequence = Sequence(context=self)
     sequence("""
   Login
   CreateOrganisation
   CreateOrganisation
   CreateResource
   CreateProject
   CreateRequirement
   CreateSimpleTask
   CreateCurrency
   FillTaskWithData
   SetTaskPriceCurrency
   Tic
   ConfirmTask
   """)
     self.tic(stop_condition=lambda message_list: all(
         m.method_id != '_updateSimulation' for m in message_list))
     rar, = sequence['task'].getCausalityRelatedValueList()
     sm, = rar.objectValues()
     q = self.portal.cmf_activity_sql_connection.manage_test
     q('update message set processing_node=-4'
       ' where method_id="_localBuild" or path=%r' % sm.getPath())
     self.commit()
     self.portal.portal_activities.process_timer(None, None)
     q('update message set processing_node=-1,'
       ' priority=method_id!="_localBuild"')
     sequence("Tic SetTaskReport")
  def testFloatDivergenceTesterAroundTheDefaultRange(
        self, quiet=quiet, run=run_all_test):
    """
     All the ranges of Float Divergence Tester:
      - quantity_range_max,
      - quantity_rang_min,
      - tolerance_range_max,
      - tolerance_range_min
      are None by default. 0.0 is NOT the default value.

      This is partly because FloatEquivalenceTester use None range as a flag
      whether we use absolute_range or tolerance_range.
      The logic uses the fact that 0.0 is not None, but bool(0.0) is False.

      So here checking how it works around the range when they are default value
    """
    if not run: return
    sequence_string = self.confirmed_order_without_packing_list + """
          ResetDeliveringRule
          AddDefaultRangePriceDivergenceTester
          Tic
          CheckFloatDivergenceTesterWithTheDefaultRange
    """
    sequence = Sequence(self)
    sequence(sequence_string, quiet=self.quiet)
Exemple #4
0
 def test_04_CategoryDivergenceTester(self, quiet=quiet, run=run_all_test):
     """
 Test the category divergence tester
 """
     if not run: return
     sequence_string = self.divergence_test_sequence + """
       SetNewAggregate
       CheckPackingListIsNotDivergent
       AddAggregateCategoryDivergenceTester
       CheckPackingListIsDivergent
       SetPreviousAggregate
       CheckPackingListIsNotDivergent
       Tic
 """
     sequence = Sequence(self)
     sequence(sequence_string, quiet=self.quiet)
Exemple #5
0
 def test_03_PropertyDivergenceTester(self, quiet=quiet, run=run_all_test):
     """
 Test the property divergence tester
 """
     if not run: return
     sequence_string = self.divergence_test_sequence + """
       SetNewStartDate
       CheckPackingListIsNotDivergent
       AddStartDateDivergenceTester
       CheckPackingListIsDivergent
       SetPreviousStartDate
       CheckPackingListIsNotDivergent
       Tic
 """
     sequence = Sequence(self)
     sequence(sequence_string, quiet=self.quiet)
Exemple #6
0
    def test_07_taskConstraints(self):
        """Check tasks constraints"""
        self.stepLogin()
        portal = self.getPortal()
        portal_type = portal.portal_types['Task']
        original_property_sheet_list = portal_type.getTypePropertySheetList()
        try:
            sequence = Sequence(context=self)
            if not ('TaskConstraint' in original_property_sheet_list):
                new_property_sheet_list = ['TaskConstraint'
                                           ] + original_property_sheet_list
                portal_type.edit(
                    type_property_sheet_list=new_property_sheet_list)
                self.commit()
            task_module = portal.getDefaultModule(
                portal_type=self.task_portal_type)
            task = task_module.newContent(portal_type=self.task_portal_type)
            doActionFor = self.portal.portal_workflow.doActionFor
            self.assertRaises(ValidationFailed, doActionFor, task,
                              'confirm_action')
            sequence('CreateOrganisation')
            sequence('CreateOrganisation')
            sequence('CreateResource')
            (source, destination) = sequence.get('organisation_list')
            check_result = task.checkConsistency()
            self.assertEqual(len(check_result), 4)
            task.setDestinationValue(destination)
            task.setSourceValue(source)
            check_result = task.checkConsistency()
            self.assertEqual(len(check_result), 2)
            task.setStartDate(DateTime())
            task.setStopDate(DateTime() + 1)
            check_result = task.checkConsistency()
            self.assertEqual(len(check_result), 1)
            resource = sequence.get('resource_list')[0]
            task.edit(
                task_line_resource_value=resource,
                task_line_quantity=self.default_quantity,
                task_line_price=self.default_price,
            )
            check_result = task.checkConsistency()
            self.assertEqual(len(check_result), 0)

        finally:
            portal_type.setTypePropertySheetList(original_property_sheet_list)
Exemple #7
0
    def test_QuantityDivergenceTesterCompareMethod(self):
        # XXX-Leo this test is actually just testing
        # FloatEquivalenceTester, and is incomplete. It should test also
        # with:
        #
        #  * divergence_test_sequence.setProperty('quantity_range_min', ...)
        #  * divergence_test_sequence.setProperty('tolerance_base', ...)
        #    * including all variants like resources, prices and precisions
        sequence = Sequence(self)
        sequence(self.confirmed_order_without_packing_list + '''
      ResetDeliveringRule
      AddQuantityDivergenceTester
    ''')
        divergence_tester = sequence['quantity_divergence_tester']

        decision = sequence['order_line']
        prevision = decision.getDeliveryRelatedValue(
            portal_type=self.simulation_movement_portal_type)

        def divergence_tester_compare(prevision_value, decision_value):
            prevision.setQuantity(prevision_value)
            decision.setQuantity(decision_value)
            return divergence_tester.compare(prevision, decision)

        self.assertFalse(divergence_tester.isDecimalAlignmentEnabled())
        self.assertFalse(divergence_tester_compare(3.0, 3.001))
        self.assertTrue(divergence_tester_compare(3.0, 3.0))

        divergence_tester.setDecimalAlignmentEnabled(True)
        divergence_tester.setDecimalRoundingOption('ROUND_DOWN')
        divergence_tester.setDecimalExponent('0.01')

        self.assertTrue(divergence_tester_compare(3.0, 3.001))
        self.assertTrue(divergence_tester_compare(3.0, 3.0))

        divergence_tester.setDecimalExponent('0.001')
        self.assertFalse(divergence_tester_compare(3.0, 3.001))

        divergence_tester.setDecimalRoundingOption('ROUND_UP')
        divergence_tester.setDecimalExponent('0.01')
        self.assertFalse(divergence_tester_compare(3.0, 3.001))

        divergence_tester.setDecimalRoundingOption('ROUND_HALF_UP')
        divergence_tester.setDecimalExponent('0.01')
        self.assertTrue(divergence_tester_compare(3.0, 3.001))
Exemple #8
0
 def test_01_QuantityDivergenceTester(self, quiet=quiet, run=run_all_test):
     """
 Test the quantity divergence tester
 """
     if not run: return
     sequence_string = self.divergence_test_sequence + """
       SetNewQuantity
       Tic
       CheckPackingListIsNotDivergent
       AddQuantityDivergenceTester
       CheckPackingListIsDivergent
       SetPreviousQuantity
       CheckPackingListIsNotDivergent
       SetPreviousQuantityWithEpsilon
       CheckPackingListIsNotDivergent
       Tic
 """
     sequence = Sequence(self)
     sequence(sequence_string, quiet=self.quiet)
 def playSequence(self, sequence_string, quiet=QUIET) :
   # don't commit between steps
   sequence = Sequence()
   sequence.setSequenceString(sequence_string)
   for step in sequence._step_list:
     step.play(self, sequence, quiet)