Exemple #1
0
    def test_parse_unknown_column(self):
        header_line = self.common_headers + ",aaaaaa\r\n"
        p = DailyParser(header_line, self.production_types, self.zones)
        adsm_iteration_output = "1,1,3,2,1,1"
        results = p.parse_daily_strings(adsm_iteration_output, create_version_entry=True)

        self.assertEqual(len(results), 1)
        self.assertEqual(len(p.failures), 1)
        self.assertEqual(p.failures, {'aaaaaa'})
Exemple #2
0
    def test_parse_single_field_in_daily_by_zone_and_production_type(self):
        header_line = self.common_headers + ",unitsInZoneMediumRiskCattle\r\n"
        p = DailyParser(header_line, self.production_types, self.zones)
        adsm_iteration_output = "1,1,3,2,1,1"

        results = p.parse_daily_strings(adsm_iteration_output, create_version_entry=True)

        self.assertEqual(len(results), 2)
        self.assertIsInstance(results[1], DailyByZoneAndProductionType)
        self.assertEqual(results[1].unitsInZone, 1)
Exemple #3
0
    def test_parse_single_field_in_controls(self):
        header_line = self.common_headers + ",outbreakDuration\r\n"
        p = DailyParser(header_line, self.production_types, self.zones)

        adsm_iteration_output = "1,1,3,2,1,1"
        results = p.parse_daily_strings(adsm_iteration_output, create_version_entry=True)

        self.assertEqual(len(results), 2)
        self.assertIsInstance(results[1], DailyControls)
        self.assertEqual(results[1].outbreakDuration, 1)
Exemple #4
0
def process_result(queue):
    from Results.output_parser import DailyParser
    adsm_result = queue.get()
    p = DailyParser(adsm_result['headers'], adsm_result['lines'][0][0])
    results = []
    for index, line in enumerate(adsm_result['lines']):
        results.extend(p.parse_daily_strings(line, index + 1 == len(adsm_result['lines'])))

    with transaction.atomic(using='scenario_db'):
        for result in results:
            result.save()
Exemple #5
0
    def test_parse_unknown_column(self):
        header_line = "Run,Day,aaaaaa\r\n"
        p = DailyParser(header_line)

        adsm_iteration_output = ["1,1,1"]

        results = p.parse_daily_strings(adsm_iteration_output)

        self.assertEqual(len(results), 0)
        self.assertEqual(len(p.failures), 1)
        self.assertEqual(p.failures, {'aaaaaa'})
Exemple #6
0
    def test_parse_single_field_in_controls(self):
        header_line = "Run,Day,outbreakDuration\r\n"
        p = DailyParser(header_line)

        adsm_iteration_output = ["1,1,1"]

        results = p.parse_daily_strings(adsm_iteration_output)

        self.assertEqual(len(results), 1)
        self.assertIsInstance(results[0], DailyControls)
        self.assertEqual(results[0].outbreakDuration, 1)
Exemple #7
0
    def test_parser_only_outputs_needed_objects(self):
        """
            the results parser should not output an object if all
            fields of that object are None
        """
        header_line = self.common_headers + ",outbreakDuration\r\n"
        p = DailyParser(header_line, self.production_types, self.zones)
        adsm_iteration_output = "1,1,3,2,19,1"
        results = p.parse_daily_strings(adsm_iteration_output, create_version_entry=True)

        self.assertEqual(len(results), 2)
        self.assertIsInstance(results[1], DailyControls)
Exemple #8
0
    def test_parse_single_field_in_daily_by_production_type(self):
        cows, created = ProductionType.objects.get_or_create(name="Cattle")
        header_line = "Run,Day,firstDetectionCattle\r\n"
        p = DailyParser(header_line)

        adsm_iteration_output = ["1,1,1"]

        results = p.parse_daily_strings(adsm_iteration_output)

        self.assertEqual(len(results), 1)
        self.assertIsInstance(results[0], DailyByProductionType)
        self.assertEqual(results[0].firstDetection, 1)
Exemple #9
0
    def test_parse_single_field_in_daily_by_zone_and_production_type(self):
        cattle = ProductionType.objects.create(name="Cattle")
        medium_risk = Zone.objects.create(name="Medium Risk", radius=5.0)
        header_line = "Run,Day,unitsInZoneMediumRiskCattle\r\n"
        p = DailyParser(header_line)

        adsm_iteration_output = ["1,1,1"]

        results = p.parse_daily_strings(adsm_iteration_output)

        self.assertEqual(len(results), 1)
        self.assertIsInstance(results[0], DailyByZoneAndProductionType)
        self.assertEqual(results[0].unitsInZone, 1)
Exemple #10
0
    def test_parse_single_field_background_zone(self):
        """
            the background zone is used if no other zone is specified
            it will not exist in the ScenarioCreator Zone table so it will
            not have a foreign key in the Results DailyByZone table
        """
        header_line = self.common_headers + ",zoneAreaBackground\r\n"
        p = DailyParser(header_line, self.production_types, self.zones)
        adsm_iteration_output = "1,1,3,2,1,1"
        results = p.parse_daily_strings(adsm_iteration_output, create_version_entry=True)

        self.assertEqual(len(results), 2)
        self.assertIsInstance(results[1], DailyByZone)
        self.assertEqual(results[1].zone, None)
        self.assertEqual(results[1].zoneArea, 1)
Exemple #11
0
    def test_parse_multiple_fields_in_different_tables(self):
        header_line = self.common_headers + ",firstDetectionCattle,animalDaysInZoneMediumRiskCattle\r\n"
        p = DailyParser(header_line, self.production_types, self.zones)
        adsm_iteration_output = "1,1,3,2,1,1,2"
        results = p.parse_daily_strings(adsm_iteration_output, create_version_entry=True)

        self.assertEqual(len(results), 3)

        result = [result for result in results if type(result) == DailyByProductionType]
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].firstDetection, 1)

        result = [result for result in results if type(result) == DailyByZoneAndProductionType]
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].animalDaysInZone, 2)
Exemple #12
0
    def test_parser_only_outputs_needed_objects(self):
        """
            the results parser should not output an object if all
            fields of that object are None
        """
        # cattle = ProductionType.objects.create(name="Cattle")

        header_line = "Run,Day,outbreakDuration\r\n"
        p = DailyParser(header_line)

        adsm_iteration_output = ["1,1,1"]

        results = p.parse_daily_strings(adsm_iteration_output)

        self.assertEqual(len(results), 1)
        self.assertIsInstance(results[0], DailyControls)
Exemple #13
0
    def test_parse_single_field_background_zone(self):
        """
            the background zone is used if no other zone is specified
            it will not exist in the ScenarioCreator Zone table so it will
            not have a foreign key in the Results DailyByZone table
        """
        header_line = "Run,Day,zoneAreaBackground\r\n"
        p = DailyParser(header_line)

        adsm_iteration_output = ["1,1,1"]

        results = p.parse_daily_strings(adsm_iteration_output)

        self.assertEqual(len(results), 1)
        self.assertIsInstance(results[0], DailyByZone)
        self.assertEqual(results[0].zone, None)
        self.assertEqual(results[0].zoneArea, 1)
Exemple #14
0
    def test_parse_multiple_fields_in_different_tables(self):
        cattle = ProductionType.objects.create(name="Cattle")
        medium_risk = Zone.objects.create(name="Medium Risk", radius=5.0)
        header_line = "Run,Day,firstDetectionCattle,animalDaysInZoneMediumRiskCattle\r\n"
        p = DailyParser(header_line)

        adsm_iteration_output = ["1,1,1,2"]

        results = p.parse_daily_strings(adsm_iteration_output)

        self.assertEqual(len(results), 2)

        result = [result for result in results if type(result) == DailyByProductionType]
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].firstDetection, 1)

        result = [result for result in results if type(result) == DailyByZoneAndProductionType]
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].animalDaysInZone, 2)