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)
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)
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)
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)
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)
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))
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)