Example #1
0
 def get_track_points(self):
     """
     Returns tuple list with trackpoints e.g. [(50.18564460799098, 9.137571640312672), (50.18564460799098, 9.137571640312672)]
     :return: tuple list with (lat, lon), can be empty
     """
     with open(self._load.file_name, "r") as file:
         utility.log("parsing file", self._load.file_name)
         return TCXParser(self._load.file_name).position_values()
Example #2
0
def read_tcx(file_name):
    """
    Read TCX file grab some data.py
    :param file_name: TCX file name
    :return: instance of a Load
    """
    if not path.exists(file_name):
        exit_on_rc_error("File not found", file_name)

    load = Stage(file_name)

    tcxparser = TCXParser(file_name)
    load.init_by_tcx(tcxparser)

    return load
 def test_single_trackpoint_in_track_is_ok(self):
     "https://github.com/vkurup/python-tcxparser/issues/9"
     xml = """
     <TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2">
       <Activities>
         <Activity>
           <Lap>
             <Track>
               <Trackpoint>
                 <DistanceMeters>5</DistanceMeters>
               </Trackpoint>
             </Track>
           </Lap>
         </Activity>
       </Activities>
     </TrainingCenterDatabase>
     """
     tcx_file = StringIO(xml)
     tcx = TCXParser(tcx_file)
     self.assertEqual(tcx.distance, 5)
 def test_no_error_if_no_position(self):
     "https://github.com/vkurup/python-tcxparser/issues/11"
     xml = """
     <TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2">
       <Activities>
         <Activity>
           <Lap>
             <Track>
               <Trackpoint>
                 <DistanceMeters>5</DistanceMeters>
               </Trackpoint>
             </Track>
           </Lap>
         </Activity>
       </Activities>
     </TrainingCenterDatabase>
     """
     tcx_file = StringIO(xml)
     tcx = TCXParser(tcx_file)
     self.assertEqual(tcx.latitude, None)
     self.assertEqual(tcx.longitude, None)
 def setUp(self):
     tcx_file = "test.tcx"
     self.tcx = TCXParser(tcx_file)
class TestParseTCX(unittest.TestCase):
    def setUp(self):
        tcx_file = "test.tcx"
        self.tcx = TCXParser(tcx_file)

    def test_hr_values_are_correct(self):
        self.assertEquals(self.tcx.hr_values()[0], 62)
        self.assertEquals(self.tcx.hr_values()[-1], 180)

    def test_altitude_points_are_correct(self):
        self.assertEquals(self.tcx.altitude_points()[0], 178.942626953)
        self.assertEquals(self.tcx.altitude_points()[-1], 166.4453125)

    def test_time_values_are_correct(self):
        self.assertEquals(self.tcx.time_values()[0], "2012-12-26T21:29:53Z")
        self.assertEquals(self.tcx.time_values()[-1], "2012-12-26T22:03:05Z")

    def test_latitude_is_correct(self):
        self.assertEquals(self.tcx.latitude, 35.951880198)

    def test_longitude_is_correct(self):
        self.assertEquals(self.tcx.longitude, -79.0931872185)

    def test_activity_type_is_correct(self):
        self.assertEquals(self.tcx.activity_type, "running")

    def test_completion_time_is_correct(self):
        self.assertEquals(self.tcx.completed_at, "2012-12-26T22:03:05Z")

    def test_distance_is_correct(self):
        self.assertEquals(self.tcx.distance, 4686.31103516)

    def test_distance_units_is_correct(self):
        self.assertEquals(self.tcx.distance_units, "meters")

    def test_duration_is_correct(self):
        self.assertEquals(self.tcx.duration, 1992.78)

    def test_calories_is_correct(self):
        self.assertEquals(self.tcx.calories, 379)

    def test_hr_max(self):
        self.assertEquals(self.tcx.hr_max, 189)

    def test_hr_min(self):
        self.assertEquals(self.tcx.hr_min, 60)

    def test_hr_avg(self):
        self.assertEquals(self.tcx.hr_avg, 156)

    def test_pace(self):
        self.assertEquals(self.tcx.pace, "07:05")

    def test_altitude_avg_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_avg, 172.020056184)

    def test_altitude_max_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_max, 215.95324707)

    def test_altitude_min_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_min, 157.793579102)

    def test_ascent_is_correct(self):
        self.assertAlmostEqual(self.tcx.ascent, 153.80981445)

    def test_descent_is_correct(self):
        self.assertAlmostEqual(self.tcx.descent, 166.307128903)
Example #7
0
 def setUp(self):
     tcx_file = 'test.tcx'
     self.tcx = TCXParser(tcx_file)
Example #8
0
class TestParseTCX(unittest.TestCase):
    def setUp(self):
        tcx_file = 'test.tcx'
        self.tcx = TCXParser(tcx_file)

    def test_hr_values_are_correct(self):
        self.assertEquals(self.tcx.hr_values()[0], 62)
        self.assertEquals(self.tcx.hr_values()[-1], 180)

    def test_altitude_points_are_correct(self):
        self.assertEquals(self.tcx.altitude_points()[0], 178.942626953)
        self.assertEquals(self.tcx.altitude_points()[-1], 166.4453125)

    def test_time_values_are_correct(self):
        self.assertEquals(self.tcx.time_values()[0], '2012-12-26T21:29:53Z')
        self.assertEquals(self.tcx.time_values()[-1], '2012-12-26T22:03:05Z')

    def test_latitude_is_correct(self):
        self.assertEquals(self.tcx.latitude, 35.951880198)

    def test_longitude_is_correct(self):
        self.assertEquals(self.tcx.longitude, -79.0931872185)

    def test_activity_type_is_correct(self):
        self.assertEquals(self.tcx.activity_type, 'running')

    def test_completion_time_is_correct(self):
        self.assertEquals(self.tcx.completed_at, '2012-12-26T22:03:05Z')

    def test_distance_is_correct(self):
        self.assertEquals(self.tcx.distance, 4686.31103516)

    def test_distance_units_is_correct(self):
        self.assertEquals(self.tcx.distance_units, 'meters')

    def test_duration_is_correct(self):
        self.assertEquals(self.tcx.duration, 1992.78)

    def test_calories_is_correct(self):
        self.assertEquals(self.tcx.calories, 379)

    def test_hr_max(self):
        self.assertEquals(self.tcx.hr_max, 189)

    def test_hr_min(self):
        self.assertEquals(self.tcx.hr_min, 60)

    def test_hr_avg(self):
        self.assertEquals(self.tcx.hr_avg, 156)

    def test_pace(self):
        self.assertEquals(self.tcx.pace, '07:05')

    def test_altitude_avg_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_avg, 172.020056184)

    def test_altitude_max_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_max, 215.95324707)

    def test_altitude_min_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_min, 157.793579102)

    def test_ascent_is_correct(self):
        self.assertAlmostEqual(self.tcx.ascent, 153.80981445)

    def test_descent_is_correct(self):
        self.assertAlmostEqual(self.tcx.descent, 166.307128903)
 def setUp(self):
     tcx_file = 'test.tcx'
     self.tcx = TCXParser(tcx_file)
 def test_hr_percent_in_zones_no_hr_data(self):
     tcx_file = "no_hr.tcx"
     path = os.path.join(os.path.dirname(__file__), "files", tcx_file)
     tcx = TCXParser(path)
     with self.assertRaises(NoHeartRateDataError):
         tcx.hr_percent_in_zones({})
 def setUp(self):
     tcx_file = "test.tcx"
     path = os.path.join(os.path.dirname(__file__), "files", tcx_file)
     self.tcx = TCXParser(path)
class TestParseTCX(TestCase):
    def setUp(self):
        tcx_file = "test.tcx"
        path = os.path.join(os.path.dirname(__file__), "files", tcx_file)
        self.tcx = TCXParser(path)

    def test_hr_values_are_correct(self):
        self.assertEqual(self.tcx.hr_values()[0], 62)
        self.assertEqual(self.tcx.hr_values()[-1], 180)

    def test_altitude_points_are_correct(self):
        self.assertEqual(self.tcx.altitude_points()[0], 178.942626953)
        self.assertEqual(self.tcx.altitude_points()[-1], 166.4453125)

    def test_time_values_are_correct(self):
        self.assertEqual(self.tcx.time_values()[0], "2012-12-26T21:29:53Z")
        self.assertEqual(self.tcx.time_values()[-1], "2012-12-26T22:03:05Z")

    def test_time_objects_are_correct(self):
        self.assertEqual(
            self.tcx.time_objects()[0],
            datetime(2012, 12, 26, 21, 29, 53, tzinfo=timezone.utc),
        )
        self.assertEqual(
            self.tcx.time_objects()[-1],
            datetime(2012, 12, 26, 22, 3, 5, tzinfo=timezone.utc),
        )

    def test_time_durations_are_correct(self):
        time_durations = self.tcx.time_durations()
        assert len(time_durations) == len(self.tcx.time_values())
        self.assertEqual(time_durations[0], timedelta(microseconds=500000))
        self.assertEqual(time_durations[-1], timedelta(microseconds=500000))

    def test_latitude_is_correct(self):
        self.assertEqual(self.tcx.latitude, 35.951880198)

    def test_longitude_is_correct(self):
        self.assertEqual(self.tcx.longitude, -79.0931872185)

    def test_activity_type_is_correct(self):
        self.assertEqual(self.tcx.activity_type, "running")

    def test_started_at_is_correct(self):
        self.assertEqual(self.tcx.started_at, "2012-12-26T21:29:53Z")

    def test_completion_time_is_correct(self):
        self.assertEqual(self.tcx.completed_at, "2012-12-26T22:03:05Z")

    def test_distance_is_correct(self):
        self.assertEqual(self.tcx.distance, 4686.31103516)

    def test_distance_units_is_correct(self):
        self.assertEqual(self.tcx.distance_units, "meters")

    def test_duration_is_correct(self):
        self.assertEqual(self.tcx.duration, 1992.78)

    def test_calories_is_correct(self):
        self.assertEqual(self.tcx.calories, 379)

    def test_hr_max(self):
        self.assertEqual(self.tcx.hr_max, 189)

    def test_hr_min(self):
        self.assertEqual(self.tcx.hr_min, 60)

    def test_hr_avg(self):
        self.assertEqual(self.tcx.hr_avg, 156)

    def test_pace(self):
        self.assertEqual(self.tcx.pace, "07:05")

    def test_altitude_avg_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_avg, 172.020056184)

    def test_altitude_max_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_max, 215.95324707)

    def test_altitude_min_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_min, 157.793579102)

    def test_ascent_is_correct(self):
        self.assertAlmostEqual(self.tcx.ascent, 153.80981445)

    def test_descent_is_correct(self):
        self.assertAlmostEqual(self.tcx.descent, 166.307128903)

    def test_activity_notes_is_correct(self):
        self.assertEqual(self.tcx.activity_notes, "Aerobics")

    def test_position_values_are_correct(self):
        values = self.tcx.position_values()
        self.assertAlmostEqual(values[-1][0], 35.9519544616)
        self.assertAlmostEqual(values[-1][1], -79.0930143837)

    def test_distance_values_are_correct(self):
        self.assertAlmostEqual(self.tcx.distance_values()[0], 0.0)
        self.assertAlmostEqual(self.tcx.distance_values()[-1], 4686.31103516)

    def test_hr_percent_in_zones(self):
        zones = {
            "Z0": (0, 99),
            "Z1": (100, 129),
            "Z2": (130, 149),
            "Z3": (150, 169),
            "Z4": (170, 184),
            "Z5": (185, 199),
            "Z6": (200, 220),
        }
        self.assertEqual(
            self.tcx.hr_percent_in_zones(zones),
            {
                "Z0": 14,
                "Z1": 1,
                "Z2": 1,
                "Z3": 46,
                "Z4": 33,
                "Z5": 5,
                "Z6": 0
            },
        )

    def test_hr_time_in_zones(self):
        zones = {
            "Z0": (0, 99),
            "Z1": (100, 129),
            "Z2": (130, 149),
            "Z3": (150, 169),
            "Z4": (170, 184),
            "Z5": (185, 199),
            "Z6": (200, 220),
        }
        self.assertEqual(
            self.tcx.hr_time_in_zones(zones),
            {
                "Z0": timedelta(seconds=217, microseconds=500000),
                "Z1": timedelta(seconds=3, microseconds=500000),
                "Z2": timedelta(seconds=4, microseconds=500000),
                "Z3": timedelta(seconds=969),
                "Z4": timedelta(seconds=676, microseconds=500000),
                "Z5": timedelta(seconds=120, microseconds=500000),
                "Z6": timedelta(0),
            },
        )
 def setUp(self):
     tcx_file = 'test.tcx'
     path = os.path.join(os.path.dirname(__file__), 'files', tcx_file)
     self.tcx = TCXParser(path)
Example #14
0
 def setUp(self):
     tcx_file = 'test.tcx'
     path = os.path.join(os.path.dirname(__file__), 'files', tcx_file)
     self.tcx = TCXParser(path)
Example #15
0
class TestParseTCX(TestCase):

    def setUp(self):
        tcx_file = 'test.tcx'
        path = os.path.join(os.path.dirname(__file__), 'files', tcx_file)
        self.tcx = TCXParser(path)

    def test_hr_values_are_correct(self):
        self.assertEqual(self.tcx.hr_values()[0], 62)
        self.assertEqual(self.tcx.hr_values()[-1], 180)

    def test_altitude_points_are_correct(self):
        self.assertEqual(self.tcx.altitude_points()[0], 178.942626953)
        self.assertEqual(self.tcx.altitude_points()[-1], 166.4453125)

    def test_time_values_are_correct(self):
        self.assertEqual(self.tcx.time_values()[0], '2012-12-26T21:29:53Z')
        self.assertEqual(self.tcx.time_values()[-1], '2012-12-26T22:03:05Z')

    def test_latitude_is_correct(self):
        self.assertEqual(self.tcx.latitude, 35.951880198)

    def test_longitude_is_correct(self):
        self.assertEqual(self.tcx.longitude, -79.0931872185)

    def test_activity_type_is_correct(self):
        self.assertEqual(self.tcx.activity_type, 'running')

    def test_completion_time_is_correct(self):
        self.assertEqual(self.tcx.completed_at, '2012-12-26T22:03:05Z')

    def test_distance_is_correct(self):
        self.assertEqual(self.tcx.distance, 4686.31103516)

    def test_distance_units_is_correct(self):
        self.assertEqual(self.tcx.distance_units, 'meters')

    def test_duration_is_correct(self):
        self.assertEqual(self.tcx.duration, 1992.78)

    def test_calories_is_correct(self):
        self.assertEqual(self.tcx.calories, 379)

    def test_hr_max(self):
        self.assertEqual(self.tcx.hr_max, 189)

    def test_hr_min(self):
        self.assertEqual(self.tcx.hr_min, 60)

    def test_hr_avg(self):
        self.assertEqual(self.tcx.hr_avg, 156)

    def test_pace(self):
        self.assertEqual(self.tcx.pace, '07:05')

    def test_altitude_avg_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_avg, 172.020056184)

    def test_altitude_max_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_max, 215.95324707)

    def test_altitude_min_is_correct(self):
        self.assertAlmostEqual(self.tcx.altitude_min, 157.793579102)

    def test_ascent_is_correct(self):
        self.assertAlmostEqual(self.tcx.ascent, 153.80981445)

    def test_descent_is_correct(self):
        self.assertAlmostEqual(self.tcx.descent, 166.307128903)

    def test_activity_notes_is_correct(self):
        self.assertEqual(self.tcx.activity_notes, 'Aerobics')