Merge branch 'develop' into feature/opaqueid
This commit is contained in:
@@ -18,4 +18,4 @@ pkg_mox = None
|
||||
# pkg_mox.VerifyAll()
|
||||
# pkg_mox.UnsetStubs()
|
||||
|
||||
from tests import *
|
||||
#from tests import *
|
||||
|
||||
@@ -113,7 +113,50 @@ def mocked_read_df_sql(id):
|
||||
|
||||
return df
|
||||
|
||||
|
||||
|
||||
def mocked_getsmallrowdata_db(*args, **kwargs):
|
||||
df = pd.read_csv('rowers/tests/testdata/colsfromdb.csv')
|
||||
|
||||
return df
|
||||
|
||||
def mocked_getpowerdata_db(*args, **kwargs):
|
||||
df = pd.read_csv('rowers/tests/testdata/fake_powerdata.csv')
|
||||
|
||||
return df
|
||||
|
||||
def mocked_getempowerdata_db(*args, **kwargs):
|
||||
df = pd.read_csv('rowers/tests/testdata/fake_empowerdata.csv')
|
||||
|
||||
return df
|
||||
|
||||
def mocked_read_df_cols_sql(ids, columns, convertnewtons=True):
|
||||
df = pd.read_csv('rowers/tests/testdata/fake_strokedata.csv')
|
||||
extracols = []
|
||||
|
||||
return df, extracols
|
||||
|
||||
def mocked_read_df_cols_sql_multi(ids, columns, convertnewtons=True):
|
||||
df = pd.read_csv('rowers/tests/testdata/fake_strokedata2.csv')
|
||||
extracols = []
|
||||
|
||||
return df, extracols
|
||||
|
||||
def mocked_stravaexport(f2,workoutname,stravatoken,description='',
|
||||
activity_type='Rowing'):
|
||||
print "this is mocked strava export"
|
||||
return 1,'success'
|
||||
|
||||
def StravaActivity():
|
||||
def wait(*args, **kwargs):
|
||||
return 1
|
||||
|
||||
class MockStravalibClient():
|
||||
def upload_activity(*args, **kwargs):
|
||||
return StravaActivity()
|
||||
|
||||
def update_activity(*args, **kwargs):
|
||||
return StravaActivity()
|
||||
|
||||
|
||||
class mocked_rowingdata(rowingdata):
|
||||
def __init__(self, *args, **kwargs):
|
||||
@@ -261,6 +304,7 @@ def mocked_requests(*args, **kwargs):
|
||||
|
||||
return MockResponse(json_data,200)
|
||||
|
||||
|
||||
if not args:
|
||||
return MockSession()
|
||||
|
||||
|
||||
122
rowers/tests/test_empower.py
Normal file
122
rowers/tests/test_empower.py
Normal file
@@ -0,0 +1,122 @@
|
||||
#from __future__ import print_function
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
from nose_parameterized import parameterized
|
||||
from django.test import TestCase, Client,override_settings, RequestFactory
|
||||
|
||||
from django.core.management import call_command
|
||||
from django.utils.six import StringIO
|
||||
from django.test.client import RequestFactory
|
||||
from rowers.views import checkworkoutuser,c2_open, multi_compare_view
|
||||
|
||||
from rowers.forms import (
|
||||
DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail,
|
||||
ChartParamChoiceForm,WorkoutMultipleCompareForm,
|
||||
BoxPlotChoiceForm)
|
||||
import rowers.plots as plots
|
||||
import rowers.interactiveplots as iplots
|
||||
import datetime
|
||||
from rowingdata import rowingdata as rdata
|
||||
from rowingdata import rower as rrower
|
||||
from django.utils import timezone
|
||||
from rowers.rows import handle_uploaded_file
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from time import strftime,strptime,mktime,time,daylight
|
||||
import os
|
||||
from rowers.tasks import handle_makeplot
|
||||
from rowers.utils import serialize_list,deserialize_list
|
||||
from rowers.utils import NoTokenError
|
||||
from rowers.plannedsessions import get_dates_timeperiod
|
||||
from shutil import copyfile
|
||||
from nose.tools import assert_true
|
||||
from mock import Mock, patch
|
||||
from minimocktest import MockTestCase
|
||||
import pandas as pd
|
||||
import rowers.c2stuff as c2stuff
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import (
|
||||
error500_view,error404_view,error400_view,error403_view
|
||||
)
|
||||
|
||||
from rowers.dataprep import delete_strokedata
|
||||
from django.contrib.sessions.middleware import SessionMiddleware
|
||||
|
||||
from django.conf import settings
|
||||
from importlib import import_module
|
||||
|
||||
from redis import StrictRedis
|
||||
redis_connection = StrictRedis()
|
||||
|
||||
from django_mailbox.models import Mailbox,MessageAttachment,Message
|
||||
|
||||
from rowers.tests.mocks import *
|
||||
|
||||
from rowers.models import *
|
||||
from rowers.tests.mocks import *
|
||||
|
||||
class EmpowerTest(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot',
|
||||
)
|
||||
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True,
|
||||
gdproptindate=timezone.now())
|
||||
self.c = Client()
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
otwfilename = 'rowers/tests/testdata/empower.csv'
|
||||
self.wotw = Workout.objects.create(name='testworkout',
|
||||
workouttype='water',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
self.wote = Workout.objects.create(name='testworkout',
|
||||
workouttype='Indoor Rower',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=otwfilename)
|
||||
|
||||
powerperc = 100*np.array([r.pw_ut2,
|
||||
r.pw_ut1,
|
||||
r.pw_at,
|
||||
r.pw_tr,r.pw_an])/r.ftp
|
||||
|
||||
|
||||
self.hrdata = {
|
||||
'hrmax':r.max,
|
||||
'hrut2':r.ut2,
|
||||
'hrut1':r.ut1,
|
||||
'hrat':r.at,
|
||||
'hrtr':r.tr,
|
||||
'hran':r.an,
|
||||
'ftp':r.ftp,
|
||||
'powerperc':serialize_list(powerperc),
|
||||
'powerzones':serialize_list(r.powerzones),
|
||||
}
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_workflow_map_view(self, mocked_sqlalchemy):
|
||||
login = self.c.login(username='john',password='koeinsloot')
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/workout/{id}/workflow/'.format(
|
||||
id = self.wote.id
|
||||
)
|
||||
|
||||
response = self.c.get(url)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
63
rowers/tests/test_errorpages.py
Normal file
63
rowers/tests/test_errorpages.py
Normal file
@@ -0,0 +1,63 @@
|
||||
#from __future__ import print_function
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
from nose_parameterized import parameterized
|
||||
from django.test import TestCase, Client,override_settings
|
||||
from django.core.management import call_command
|
||||
from django.utils.six import StringIO
|
||||
from django.test.client import RequestFactory
|
||||
from rowers.views import checkworkoutuser,c2_open
|
||||
from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage
|
||||
from rowers.forms import DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail
|
||||
import rowers.plots as plots
|
||||
import rowers.interactiveplots as iplots
|
||||
import datetime
|
||||
from rowingdata import rowingdata as rdata
|
||||
from rowingdata import rower as rrower
|
||||
from django.utils import timezone
|
||||
from rowers.rows import handle_uploaded_file
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from time import strftime,strptime,mktime,time,daylight
|
||||
import os
|
||||
from rowers.tasks import handle_makeplot
|
||||
from rowers.utils import serialize_list,deserialize_list
|
||||
from rowers.utils import NoTokenError
|
||||
from shutil import copyfile
|
||||
from nose.tools import assert_true
|
||||
from mock import Mock, patch
|
||||
from minimocktest import MockTestCase
|
||||
import pandas as pd
|
||||
import rowers.c2stuff as c2stuff
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import error500_view,error404_view,error400_view,error403_view
|
||||
|
||||
from rowers.dataprep import delete_strokedata
|
||||
|
||||
from redis import StrictRedis
|
||||
redis_connection = StrictRedis()
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class TestErrorPages(TestCase):
|
||||
def test_error_handlers(self):
|
||||
|
||||
self.assertTrue(urls.handler404.endswith('.error404_view'))
|
||||
self.assertTrue(urls.handler500.endswith('.error500_view'))
|
||||
factory = RequestFactory()
|
||||
request = factory.get('/')
|
||||
response = error404_view(request)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertIn('404 Page not found', unicode(response))
|
||||
response = error500_view(request)
|
||||
self.assertEqual(response.status_code, 500)
|
||||
self.assertIn('500 Internal Server Error', unicode(response))
|
||||
|
||||
@@ -6,7 +6,7 @@ pytestmark = pytest.mark.django_db
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
from nose_parameterized import parameterized
|
||||
from django.test import TestCase, Client,override_settings
|
||||
from django.test import TestCase, Client,override_settings, modify_settings
|
||||
from django.core.management import call_command
|
||||
from django.utils.six import StringIO
|
||||
from django.test.client import RequestFactory
|
||||
@@ -39,6 +39,8 @@ encoded2 = str(encoder.encode_hex(2))
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
import rowers
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import (
|
||||
error500_view,error404_view,error400_view,error403_view
|
||||
@@ -129,10 +131,10 @@ class C2Objects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/c2uploadw/')
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit',
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit')
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit/')
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
|
||||
@@ -149,7 +151,7 @@ class C2Objects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/c2import/12/',follow=True)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/workout/'+encoded2+'/edit',
|
||||
expected_url='/rowers/workout/'+encoded2+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -281,9 +283,58 @@ class StravaObjects(DjangoTestCase):
|
||||
)
|
||||
|
||||
self.r.stravatoken = '12'
|
||||
self.r.stravarefreshtoken = '123'
|
||||
|
||||
self.r.save()
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
rr = rrower(hrmax=self.r.max,hrut2=self.r.ut2,
|
||||
hrut1=self.r.ut1,hrat=self.r.at,
|
||||
hrtr=self.r.tr,hran=self.r.an,ftp=self.r.ftp)
|
||||
row = rdata(filename,rower=rr)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
tenths = int(10*(totaltime - 3600.*hours - 60.*minutes - seconds))
|
||||
|
||||
duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths)
|
||||
|
||||
|
||||
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
|
||||
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
|
||||
|
||||
self.w = Workout.objects.create(
|
||||
name='testworkout',workouttype='water',
|
||||
user=self.r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=workoutstarttime,
|
||||
startdatetime=row.rowdatetime,
|
||||
duration=duration,distance=totaldist,
|
||||
csvfilename=filename
|
||||
)
|
||||
|
||||
|
||||
# @patch('rowers.stravastuff.requests.post', side_effect=mocked_requests)
|
||||
# @patch('rowers.views.stravastuff.handle_stravaexport')
|
||||
#@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
#def test_strava_upload(self, mock_post,MockStravalibClient,
|
||||
# mocked_getsmallrowdata_db):
|
||||
# def test_strava_upload(self,mock_post, mocked_stravaexport):
|
||||
# response = self.c.get('/rowers/workout/1/stravauploadw/')
|
||||
|
||||
# self.assertRedirects(response,
|
||||
# expected_url = '/rowers/workout/1/edit/',
|
||||
# status_code=302,target_status_code=200)
|
||||
|
||||
# self.assertEqual(response.url, '/rowers/workout/1/edit/')
|
||||
# self.assertEqual(response.status_code, 302)
|
||||
|
||||
@patch('rowers.stravastuff.requests.post', side_effect=mocked_requests)
|
||||
def test_strava_list(self, mock_get):
|
||||
@@ -292,16 +343,28 @@ class StravaObjects(DjangoTestCase):
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@patch('rowers.utils.requests.get', side_effect=mocked_requests)
|
||||
def test_strava_import(self, mock_get):
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_strava_import(self, mock_get,
|
||||
mocked_getsmallrowdata_db):
|
||||
|
||||
response = self.c.get('/rowers/workout/stravaimport/12',follow=True)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=301,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@patch('rowers.stravastuff.requests.post', side_effect=mocked_requests)
|
||||
def test_strava_callback(self, mock_post):
|
||||
response = self.c.get('/stravacall_back?code=absdef23',follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@patch('rowers.stravastuff.requests.post', side_effect=mocked_requests)
|
||||
def test_strava_token_refresh(self, mock_post):
|
||||
result = rowers.stravastuff.rower_strava_token_refresh(self.u)
|
||||
self.assertEqual(result,"987654321234567898765432123456789")
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
@@ -381,10 +444,10 @@ class STObjects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/sporttracksuploadw/')
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit',
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit')
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit/')
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
@patch('rowers.sporttracksstuff.requests.get', side_effect=mocked_requests)
|
||||
@@ -399,7 +462,7 @@ class STObjects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/sporttracksimport/12/',follow=True)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/workout/'+encoded2+'/edit',
|
||||
expected_url='/rowers/workout/'+encoded2+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -491,10 +554,10 @@ class RunKeeperObjects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/runkeeperuploadw/')
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit',
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit')
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit/')
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
@patch('rowers.runkeeperstuff.requests.get', side_effect=mocked_requests)
|
||||
@@ -509,7 +572,7 @@ class RunKeeperObjects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/runkeeperimport/12/',follow=True)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/workout/'+encoded2+'/edit',
|
||||
expected_url='/rowers/workout/'+encoded2+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -593,10 +656,10 @@ class UAObjects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/underarmouruploadw/')
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit',
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit')
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit/')
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
@patch('rowers.underarmourstuff.requests.get', side_effect=mocked_requests)
|
||||
@@ -612,7 +675,7 @@ class UAObjects(DjangoTestCase):
|
||||
response = self.c.get('/rowers/workout/underarmourimport/12/',follow=True)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/workout/'+encoded2+'/edit',
|
||||
expected_url='/rowers/workout/'+encoded2+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -697,10 +760,10 @@ class TPObjects(DjangoTestCase):
|
||||
response = self.c.get(url)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit',
|
||||
expected_url = '/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit')
|
||||
self.assertEqual(response.url, '/rowers/workout/'+encoded1+'/edit/')
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
|
||||
|
||||
163
rowers/tests/test_interactivecharts.py
Normal file
163
rowers/tests/test_interactivecharts.py
Normal file
@@ -0,0 +1,163 @@
|
||||
#from __future__ import print_function
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
from nose_parameterized import parameterized
|
||||
from django.test import TestCase, Client,override_settings
|
||||
from django.core.management import call_command
|
||||
from django.utils.six import StringIO
|
||||
from django.test.client import RequestFactory
|
||||
from rowers.views import checkworkoutuser,c2_open
|
||||
from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage
|
||||
from rowers.forms import DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail
|
||||
import rowers.plots as plots
|
||||
import rowers.interactiveplots as iplots
|
||||
import datetime
|
||||
from rowingdata import rowingdata as rdata
|
||||
from rowingdata import rower as rrower
|
||||
from django.utils import timezone
|
||||
from rowers.rows import handle_uploaded_file
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from time import strftime,strptime,mktime,time,daylight
|
||||
import os
|
||||
from rowers.tasks import handle_makeplot
|
||||
from rowers.utils import serialize_list,deserialize_list
|
||||
from rowers.utils import NoTokenError
|
||||
from shutil import copyfile
|
||||
from nose.tools import assert_true
|
||||
from mock import Mock, patch
|
||||
from minimocktest import MockTestCase
|
||||
import pandas as pd
|
||||
import rowers.c2stuff as c2stuff
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import error500_view,error404_view,error400_view,error403_view
|
||||
|
||||
from rowers.dataprep import delete_strokedata
|
||||
from rowers.tests.mocks import *
|
||||
|
||||
from redis import StrictRedis
|
||||
redis_connection = StrictRedis()
|
||||
|
||||
|
||||
class InteractiveChartTest(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
self.filename = 'rowers/tests/testdata/testdata.csv'
|
||||
self.wotw = Workout.objects.create(name='testworkout',
|
||||
workouttype='water',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=self.filename)
|
||||
|
||||
self.wote = Workout.objects.create(name='testworkout',
|
||||
workouttype='Indoor Rower',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=self.filename)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_painsled(self, mocked_sqlalchemy, mocked_read_df_sql):
|
||||
u = User.objects.get(username='john')
|
||||
r = Rower.objects.get(user=u)
|
||||
|
||||
rr = rrower(hrmax=r.max,hrut2=r.ut2,
|
||||
hrut1=r.ut1,hrat=r.at,
|
||||
hrtr=r.tr,hran=r.an,ftp=r.ftp)
|
||||
row = rdata(self.filename,rower=rr)
|
||||
|
||||
fig1 = plots.mkplot(row,'test')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart1(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_chart(self.wote.id)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart2(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_chart(self.wote.id,promember=1)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart3(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_bar_chart(self.wote.id)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart4(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_bar_chart(self.wote.id,promember=1)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart5(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,promember=0,
|
||||
xparam='time',
|
||||
yparam1='pace',yparam2='hr')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart6(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=0,xparam='distance',
|
||||
yparam1='pace',yparam2='hr')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart7(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,promember=0,
|
||||
xparam='time',
|
||||
yparam1='pace',yparam2='spm')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart8(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=0,xparam='distance',
|
||||
yparam1='pace',yparam2='spm')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart9(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=1,xparam='time',
|
||||
yparam1='pace',yparam2='hr')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart10(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=1,xparam='distance',
|
||||
yparam1='pace',yparam2='hr')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart11(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=1,xparam='time',
|
||||
yparam1='pace',yparam2='spm')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart12(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,promember=1,
|
||||
xparam='distance',
|
||||
yparam1='pace',yparam2='spm')
|
||||
|
||||
|
||||
119
rowers/tests/test_misc.py
Normal file
119
rowers/tests/test_misc.py
Normal file
@@ -0,0 +1,119 @@
|
||||
#from __future__ import print_function
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
from nose_parameterized import parameterized
|
||||
from django.test import TestCase, Client,override_settings
|
||||
from django.core.management import call_command
|
||||
from django.utils.six import StringIO
|
||||
from django.test.client import RequestFactory
|
||||
from rowers.views import checkworkoutuser,c2_open
|
||||
from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage
|
||||
from rowers.forms import DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail
|
||||
import rowers.plots as plots
|
||||
import rowers.interactiveplots as iplots
|
||||
import datetime
|
||||
from rowingdata import rowingdata as rdata
|
||||
from rowingdata import rower as rrower
|
||||
from django.utils import timezone
|
||||
from rowers.rows import handle_uploaded_file
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from time import strftime,strptime,mktime,time,daylight
|
||||
import os
|
||||
from rowers.tasks import handle_makeplot
|
||||
from rowers.utils import serialize_list,deserialize_list
|
||||
from rowers.utils import NoTokenError
|
||||
from shutil import copyfile
|
||||
from nose.tools import assert_true
|
||||
from mock import Mock, patch
|
||||
from minimocktest import MockTestCase
|
||||
import pandas as pd
|
||||
import rowers.c2stuff as c2stuff
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import error500_view,error404_view,error400_view,error403_view
|
||||
|
||||
from rowers.dataprep import delete_strokedata
|
||||
|
||||
from redis import StrictRedis
|
||||
redis_connection = StrictRedis()
|
||||
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class WorkoutTests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
nu = datetime.datetime.now()
|
||||
self.w = Workout.objects.create(name='testworkout',
|
||||
workouttype='water',
|
||||
user=self.r,date=nu.strftime('%Y-%m-%d'),
|
||||
starttime=nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000)
|
||||
|
||||
def test_checkworkoutuser(self):
|
||||
self.assertEqual(checkworkoutuser(self.u,self.w),True)
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class C2Tests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
self.nu = datetime.datetime.now()
|
||||
self.w = Workout.objects.create(name='testworkout',workouttype='water',
|
||||
user=r,date=nu.strftime('%Y-%m-%d'),
|
||||
starttime=nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000)
|
||||
|
||||
def c2_notokentest(self):
|
||||
thetoken = c2_open(self.u)
|
||||
# should raise NoTokenError
|
||||
self.assertRaises(NoTokenError)
|
||||
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class subroutinetests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u)
|
||||
nu = datetime.datetime.now()
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
self.w = Workout.objects.create(name='testworkout',
|
||||
workouttype='water',
|
||||
user=r,date=nu.strftime('%Y-%m-%d'),
|
||||
starttime=nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
|
||||
def c2stuff(self):
|
||||
data = c2stuff.createc2workoutdata(self.w)
|
||||
jsond = json.dumps(data)
|
||||
data = c2stuff.createc2workoutdata_as_splits(w)
|
||||
jsond = json.dumps(data)
|
||||
|
||||
|
||||
|
||||
@@ -1,48 +1,456 @@
|
||||
from django.test import TestCase
|
||||
#from __future__ import print_function
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
from nose_parameterized import parameterized
|
||||
from django.test import TestCase, Client,override_settings, RequestFactory
|
||||
|
||||
from django.core.management import call_command
|
||||
from django.utils.six import StringIO
|
||||
from django.test.client import RequestFactory
|
||||
from rowers.views import checkworkoutuser,c2_open, multi_compare_view
|
||||
|
||||
from rowers.forms import (
|
||||
DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail,
|
||||
ChartParamChoiceForm,WorkoutMultipleCompareForm,
|
||||
BoxPlotChoiceForm)
|
||||
import rowers.plots as plots
|
||||
import rowers.interactiveplots as iplots
|
||||
import datetime
|
||||
from rowingdata import rowingdata as rdata
|
||||
from rowingdata import rower as rrower
|
||||
from django.utils import timezone
|
||||
from rowers.rows import handle_uploaded_file
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from time import strftime,strptime,mktime,time,daylight
|
||||
import os
|
||||
from rowers.tasks import handle_makeplot
|
||||
from rowers.utils import serialize_list,deserialize_list
|
||||
from rowers.utils import NoTokenError
|
||||
from rowers.plannedsessions import get_dates_timeperiod
|
||||
from shutil import copyfile
|
||||
from nose.tools import assert_true
|
||||
from mock import Mock, patch
|
||||
from minimocktest import MockTestCase
|
||||
import pandas as pd
|
||||
import rowers.c2stuff as c2stuff
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import (
|
||||
error500_view,error404_view,error400_view,error403_view
|
||||
)
|
||||
|
||||
from rowers.dataprep import delete_strokedata
|
||||
from django.contrib.sessions.middleware import SessionMiddleware
|
||||
|
||||
from django.conf import settings
|
||||
from importlib import import_module
|
||||
|
||||
from redis import StrictRedis
|
||||
redis_connection = StrictRedis()
|
||||
|
||||
from django_mailbox.models import Mailbox,MessageAttachment,Message
|
||||
|
||||
from rowers.tests.mocks import *
|
||||
|
||||
from rowers.models import *
|
||||
from rowers.tests.mocks import *
|
||||
import factory
|
||||
from faker import Factory
|
||||
|
||||
class FormTests(TestCase):
|
||||
faker = Factory.create()
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
|
||||
row = rdata(filename)
|
||||
totaldist = row.df['cum_dist'].max()
|
||||
totaltime = row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
|
||||
totaltime = totaltime+row.df.ix[0,' ElapsedTime (sec)']
|
||||
|
||||
|
||||
hours = int(totaltime/3600.)
|
||||
minutes = int((totaltime - 3600.*hours)/60.)
|
||||
seconds = int(totaltime - 3600.*hours - 60.*minutes)
|
||||
tenths = int(10*(totaltime - 3600.*hours - 60.*minutes - seconds))
|
||||
|
||||
duration = "%s:%s:%s.%s" % (hours,minutes,seconds,tenths)
|
||||
duration = datetime.time(hour=hours,minute=minutes,second=seconds)
|
||||
|
||||
workoutdate = row.rowdatetime.strftime('%Y-%m-%d')
|
||||
workoutstarttime = row.rowdatetime.strftime('%H:%M:%S')
|
||||
|
||||
nu = datetime.datetime.now()
|
||||
|
||||
class UserFactory(factory.DjangoModelFactory):
|
||||
class Meta:
|
||||
model = User
|
||||
|
||||
email = faker.email()
|
||||
username = faker.profile()['username']
|
||||
|
||||
first_name = faker.name().split(' ')[0]
|
||||
last_name = faker.name().split(' ')[0]
|
||||
|
||||
class WorkoutFactory(factory.DjangoModelFactory):
|
||||
class Meta:
|
||||
model = Workout
|
||||
|
||||
name = factory.LazyAttribute(lambda _: faker.word())
|
||||
notes = faker.text()
|
||||
startdatetime = row.rowdatetime
|
||||
starttime = workoutstarttime
|
||||
workouttype='water'
|
||||
date=timezone.now().date()
|
||||
duration=duration
|
||||
distance=totaldist
|
||||
csvfilename=filename
|
||||
|
||||
class SessionFactory(factory.DjangoModelFactory):
|
||||
class Meta:
|
||||
model = PlannedSession
|
||||
|
||||
name = factory.LazyAttribute(lambda _: faker.word())
|
||||
comment = faker.text()
|
||||
|
||||
|
||||
class WorkoutCompareTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.u = UserFactory()
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
r = Rower.objects.create(user=self.u)
|
||||
|
||||
|
||||
def test_form(self):
|
||||
form = TeamInviteForm()
|
||||
|
||||
|
||||
class ModelTests(TestCase):
|
||||
def setUp(self):
|
||||
self.u = User.objects.create_user('john',
|
||||
'Sander@ds.ds',
|
||||
'koeinsloot')
|
||||
|
||||
self.u.first_name = 'Sander'
|
||||
self.u.last_name = 'Roosendaal'
|
||||
self.c = Client()
|
||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||
self.factory = RequestFactory()
|
||||
self.password = faker.word()
|
||||
self.u.set_password(self.password)
|
||||
self.u.save()
|
||||
|
||||
self.r = Rower.objects.create(user=self.u)
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_workouts_compare(self, mocked_sqlalchemy,
|
||||
mocked_getsmallrowdata_db):
|
||||
|
||||
def create_team(self):
|
||||
return Team.objects.create(
|
||||
name = 'test team',
|
||||
manager = self.u,
|
||||
)
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/team-compare-select/workout/1/team/0/user/1/'
|
||||
|
||||
def create_paidplan(self):
|
||||
return PaidPlan.objects.create(
|
||||
name = 'test plan',
|
||||
shortname = 'pro',
|
||||
price = 15.0,
|
||||
)
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
def test_models(self):
|
||||
pp = self.create_paidplan()
|
||||
team = self.create_team()
|
||||
self.assertEqual(u'%s' % pp,u'test plan - pro at 15.00 EURO (single payment)')
|
||||
self.assertEqual(u'%s' % self.r, u'Sander Roosendaal')
|
||||
self.assertEqual('%s' % self.r, 'Sander Roosendaal')
|
||||
self.assertEqual(self.r.clean_email(),'sander@ds.ds')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_workouts_compare_submit(self, mocked_sqlalchemy,
|
||||
mocked_getsmallrowdata_db):
|
||||
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
form_data = {
|
||||
'chartform':'Compare',
|
||||
'plottype':'scatter',
|
||||
'teamid':0,
|
||||
'workouts':['1','2','3'],
|
||||
'xparam':'distance',
|
||||
'yparam':'hr',
|
||||
}
|
||||
|
||||
form = WorkoutMultipleCompareForm(form_data)
|
||||
chartform = ChartParamChoiceForm(form_data)
|
||||
self.assertTrue(form.is_valid)
|
||||
self.assertTrue(chartform.is_valid)
|
||||
|
||||
response = self.c.post('/rowers/multi-compare/',form_data)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
class BoxPlotTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
self.c = Client()
|
||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||
|
||||
self.factory = RequestFactory()
|
||||
self.password = faker.word()
|
||||
self.u.set_password(self.password)
|
||||
self.u.save()
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_workouts_boxplot(self, mocked_sqlalchemy,
|
||||
mocked_getsmallrowdata_db):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/user-boxplot-select/'
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multi)
|
||||
def test_workouts_boxplot_submit(self, mocked_sqlalchemy,
|
||||
mocked_getsmallrowdata_db,
|
||||
mocked_df):
|
||||
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
form_data = {
|
||||
'workouts':['1','2','3'],
|
||||
'includereststrokes':False,
|
||||
'spmmax':55.0,
|
||||
'spmmin':15.0,
|
||||
'workmax':1500.0,
|
||||
'workmin':0.0,
|
||||
'yparam':'spm',
|
||||
}
|
||||
|
||||
form = WorkoutMultipleCompareForm(form_data)
|
||||
chartform = BoxPlotChoiceForm(form_data)
|
||||
|
||||
self.assertTrue(form.is_valid)
|
||||
self.assertTrue(chartform.is_valid)
|
||||
|
||||
response = self.c.get('/rowers/user-boxplot/',follow=True)
|
||||
self.assertEqual(response.status_code,200)
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/user-boxplot-select/user/1/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
response = self.c.post('/rowers/user-boxplot/',form_data)
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
options = {}
|
||||
options['spmmin'] = 15
|
||||
options['spmmax'] = 55
|
||||
options['workmin'] = 0
|
||||
options['workmax'] = 5500
|
||||
options['ids'] = [1,2,3]
|
||||
options['userid'] = 1
|
||||
options['plotfield'] = 'spm'
|
||||
options['rankingonly'] = False
|
||||
|
||||
self.c.session['options'] = options
|
||||
self.c.session.save()
|
||||
|
||||
sessionoptions = self.c.session['options']
|
||||
self.assertEqual(sessionoptions['ids'],[1,2,3])
|
||||
|
||||
response = self.c.get('/rowers/user-boxplot-data/')
|
||||
|
||||
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
class ListWorkoutTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
self.c = Client()
|
||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||
self.factory = RequestFactory()
|
||||
self.password = faker.word()
|
||||
self.u.set_password(self.password)
|
||||
self.u.save()
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_list_workouts(self, mocked_sqlalchemy,
|
||||
mocked_getsmallrowdata_db):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date()
|
||||
enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date()
|
||||
|
||||
form_data = {
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
}
|
||||
|
||||
workouts = Workout.objects.filter(startdatetime__gte=startdate,
|
||||
startdatetime__lte=enddate)
|
||||
|
||||
url = '/rowers/list-workouts/'
|
||||
|
||||
response = self.c.post(url, form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
class PlannedSessionTests(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
self.c = Client()
|
||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||
self.factory = RequestFactory()
|
||||
self.password = faker.word()
|
||||
self.u.set_password(self.password)
|
||||
self.u.save()
|
||||
self.user_sessions = SessionFactory.create_batch(
|
||||
5,
|
||||
manager=self.u)
|
||||
|
||||
for session in self.user_sessions:
|
||||
session.rower.add(self.r)
|
||||
session.save()
|
||||
|
||||
def test_ics_download(self):
|
||||
login = self.c.login(username=self.u.username,password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
response = self.c.get('/rowers/sessions/sendcalendar/')
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
startdate, enddate = get_dates_timeperiod(response.wsgi_request)
|
||||
|
||||
filename = 'training_plan_{u}_{d1}_{d2}.ics'.format(
|
||||
u = self.u.username,
|
||||
d1 = startdate.strftime("%Y%m%d"),
|
||||
d2 = enddate.strftime("%Y%m%d"),
|
||||
)
|
||||
self.assertEquals(
|
||||
response.get('Content-Disposition'),
|
||||
'attachment; filename="{name}"'.format(name=filename)
|
||||
)
|
||||
|
||||
|
||||
class ForcecurveTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
self.c = Client()
|
||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||
|
||||
self.factory = RequestFactory()
|
||||
self.password = faker.word()
|
||||
self.u.set_password(self.password)
|
||||
self.u.save()
|
||||
|
||||
@patch('rowers.dataprep.getsmallrowdata_db',side_effect = mocked_getempowerdata_db)
|
||||
def test_forcecurve_plot(self, mocked_getsmallrowdata_db):
|
||||
login = self.c.login(username=self.u.username, password = self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
url = '/rowers/workout/1/forcecurve/'
|
||||
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
class HistoTest(TestCase):
|
||||
def setUp(self):
|
||||
self.u = UserFactory()
|
||||
|
||||
self.r = Rower.objects.create(user=self.u,
|
||||
birthdate=faker.profile()['birthdate'],
|
||||
gdproptin=True,
|
||||
gdproptindate=timezone.now(),
|
||||
rowerplan='coach')
|
||||
|
||||
self.c = Client()
|
||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||
self.factory = RequestFactory()
|
||||
self.password = faker.word()
|
||||
self.u.set_password(self.password)
|
||||
self.u.save()
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db', side_effect=mocked_getpowerdata_db)
|
||||
def test_histo_workouts(self, mocked_sqlalchemy,
|
||||
mocked_getsmallrowdata_db):
|
||||
|
||||
login = self.c.login(username=self.u.username, password=self.password)
|
||||
self.assertTrue(login)
|
||||
|
||||
startdate = (self.user_workouts[0].startdatetime-datetime.timedelta(days=3)).date()
|
||||
enddate = (self.user_workouts[0].startdatetime+datetime.timedelta(days=3)).date()
|
||||
|
||||
waterboattype = [u'1x',
|
||||
u'2x',
|
||||
u'2x+',
|
||||
u'2-',
|
||||
u'2+',
|
||||
u'3x+',
|
||||
u'3x-',
|
||||
u'4x',
|
||||
u'4x+',
|
||||
u'4-',
|
||||
u'4+',
|
||||
u'8+',
|
||||
u'8x+']
|
||||
|
||||
form_data = {
|
||||
'startdate':startdate,
|
||||
'enddate':enddate,
|
||||
'modality':u'all',
|
||||
'waterboattype': waterboattype
|
||||
}
|
||||
|
||||
url = '/rowers/histo/'
|
||||
response = self.c.get(url)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
response = self.c.post(url, form_data)
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
|
||||
options = {
|
||||
'includereststrokes':False,
|
||||
'rankingonly':False,
|
||||
'modality':'all',
|
||||
'waterboattype':waterboattype,
|
||||
'theuser':0,
|
||||
'enddatestring':enddate.strftime("%Y-%m-%d"),
|
||||
'startdatestring':startdate.strftime("%Y-%m-%d"),
|
||||
}
|
||||
|
||||
|
||||
self.c.session['options'] = options
|
||||
self.c.session.save()
|
||||
|
||||
sessionoptions = self.c.session['options']
|
||||
|
||||
response = self.c.get('/rowers/histodata/')
|
||||
self.assertEqual(response.status_code,200)
|
||||
|
||||
77
rowers/tests/test_newusers.py
Normal file
77
rowers/tests/test_newusers.py
Normal file
@@ -0,0 +1,77 @@
|
||||
#from __future__ import print_function
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
from nose_parameterized import parameterized
|
||||
from django.test import TestCase, Client,override_settings
|
||||
from django.core.management import call_command
|
||||
from django.utils.six import StringIO
|
||||
from django.test.client import RequestFactory
|
||||
from rowers.views import checkworkoutuser,c2_open
|
||||
from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage
|
||||
from rowers.forms import DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail
|
||||
import rowers.plots as plots
|
||||
import rowers.interactiveplots as iplots
|
||||
import datetime
|
||||
from rowingdata import rowingdata as rdata
|
||||
from rowingdata import rower as rrower
|
||||
from django.utils import timezone
|
||||
from rowers.rows import handle_uploaded_file
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from time import strftime,strptime,mktime,time,daylight
|
||||
import os
|
||||
from rowers.tasks import handle_makeplot
|
||||
from rowers.utils import serialize_list,deserialize_list
|
||||
from rowers.utils import NoTokenError
|
||||
from shutil import copyfile
|
||||
from nose.tools import assert_true
|
||||
from mock import Mock, patch
|
||||
from minimocktest import MockTestCase
|
||||
import pandas as pd
|
||||
import rowers.c2stuff as c2stuff
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import error500_view,error404_view,error400_view,error403_view
|
||||
|
||||
from rowers.dataprep import delete_strokedata
|
||||
|
||||
from redis import StrictRedis
|
||||
redis_connection = StrictRedis()
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class NewUserRegistrationTest(TestCase):
|
||||
def setUp(self):
|
||||
self.c = Client()
|
||||
redis_connection.publish('tasks','KILL')
|
||||
|
||||
def test_newuser(self):
|
||||
form_data = {
|
||||
'first_name':'Jan',
|
||||
'last_name':'Roeiert',
|
||||
'email':'jan@loop.nl',
|
||||
'username':'janderoeiert',
|
||||
'password1':'aapindewei2',
|
||||
'password2':'aapindewei2',
|
||||
'tos':True,
|
||||
'weightcategory':'hwt',
|
||||
'adaptiveclass': 'None',
|
||||
'sex':'male',
|
||||
'next':'/rowers/list-workouts',
|
||||
'birthdate':datetime.datetime(year=1970,month=4,day=2)
|
||||
}
|
||||
|
||||
form = RegistrationFormUniqueEmail(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.c.post('/rowers/register/', form_data, follow=True)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/me/gdpr-optin/?next=/rowers/list-workouts/',
|
||||
status_code=302,target_status_code=200)
|
||||
177
rowers/tests/test_settings.py
Normal file
177
rowers/tests/test_settings.py
Normal file
@@ -0,0 +1,177 @@
|
||||
#from __future__ import print_function
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
from nose_parameterized import parameterized
|
||||
from django.test import TestCase, Client,override_settings
|
||||
from django.core.management import call_command
|
||||
from django.utils.six import StringIO
|
||||
from django.test.client import RequestFactory
|
||||
from rowers.views import checkworkoutuser,c2_open
|
||||
from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage
|
||||
from rowers.forms import DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail
|
||||
import rowers.plots as plots
|
||||
import rowers.interactiveplots as iplots
|
||||
import datetime
|
||||
from rowingdata import rowingdata as rdata
|
||||
from rowingdata import rower as rrower
|
||||
from django.utils import timezone
|
||||
from rowers.rows import handle_uploaded_file
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from time import strftime,strptime,mktime,time,daylight
|
||||
import os
|
||||
from rowers.tasks import handle_makeplot
|
||||
from rowers.utils import serialize_list,deserialize_list
|
||||
from rowers.utils import NoTokenError
|
||||
from shutil import copyfile
|
||||
from nose.tools import assert_true
|
||||
from mock import Mock, patch
|
||||
from minimocktest import MockTestCase
|
||||
import pandas as pd
|
||||
import rowers.c2stuff as c2stuff
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import error500_view,error404_view,error400_view,error403_view
|
||||
|
||||
from rowers.dataprep import delete_strokedata
|
||||
|
||||
from redis import StrictRedis
|
||||
redis_connection = StrictRedis()
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class DataTest(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
|
||||
def test_workoutform(self):
|
||||
form_data = {
|
||||
'name':'test',
|
||||
'date':'2016-05-01',
|
||||
'starttime':'07:53:00',
|
||||
'timezone':'UTC',
|
||||
'duration':'0:55:00.1',
|
||||
'distance':8000,
|
||||
'notes':'Aap noot \n mies',
|
||||
'weightcategory':'lwt',
|
||||
'adaptiveclass': 'PR1',
|
||||
'workouttype':'water',
|
||||
'boattype':'1x',
|
||||
'private':False,
|
||||
}
|
||||
form = WorkoutForm(data=form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
def test_rower_form_withvalidnumbers(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':48,
|
||||
'ut2':105,
|
||||
'ut1':148,
|
||||
'at':160,
|
||||
'tr':167,
|
||||
'an':180,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
|
||||
def test_rower_form_twoequalvalues(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':48,
|
||||
'ut2':105,
|
||||
'ut1':105,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_rower_form_abovemaxallowed(self):
|
||||
form_data = {
|
||||
'max':300,
|
||||
'rest':48,
|
||||
'ut2':105,
|
||||
'ut1':148,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_rower_form_wrongorder(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':48,
|
||||
'ut2':20,
|
||||
'ut1':148,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_rower_form_belowminalloed(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':2,
|
||||
'ut2':105,
|
||||
'ut1':148,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_rower_form_wrongorder2(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':48,
|
||||
'ut2':105,
|
||||
'ut1':170,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_painsled_form(self):
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': SimpleUploadedFile(f.name, f.read())}
|
||||
form_data = {
|
||||
'title':'test',
|
||||
'workouttype':'water',
|
||||
'boattype':'1x',
|
||||
'notes':'aap noot mies',
|
||||
}
|
||||
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
f.close()
|
||||
382
rowers/tests/test_staticcharts.py
Normal file
382
rowers/tests/test_staticcharts.py
Normal file
@@ -0,0 +1,382 @@
|
||||
#from __future__ import print_function
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
import re
|
||||
from nose_parameterized import parameterized
|
||||
from django.test import TestCase, Client,override_settings
|
||||
from django.core.management import call_command
|
||||
from django.utils.six import StringIO
|
||||
from django.test.client import RequestFactory
|
||||
from rowers.views import checkworkoutuser,c2_open
|
||||
from rowers.models import Workout, User, Rower, WorkoutForm,RowerForm,GraphImage
|
||||
from rowers.forms import DocumentsForm,CNsummaryForm,RegistrationFormUniqueEmail
|
||||
import rowers.plots as plots
|
||||
import rowers.interactiveplots as iplots
|
||||
import datetime
|
||||
from rowingdata import rowingdata as rdata
|
||||
from rowingdata import rower as rrower
|
||||
from django.utils import timezone
|
||||
from rowers.rows import handle_uploaded_file
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from time import strftime,strptime,mktime,time,daylight
|
||||
import os
|
||||
from rowers.tasks import handle_makeplot
|
||||
from rowers.utils import serialize_list,deserialize_list
|
||||
from rowers.utils import NoTokenError
|
||||
from shutil import copyfile
|
||||
from nose.tools import assert_true
|
||||
from mock import Mock, patch
|
||||
from minimocktest import MockTestCase
|
||||
import pandas as pd
|
||||
import rowers.c2stuff as c2stuff
|
||||
|
||||
import json
|
||||
import numpy as np
|
||||
|
||||
from rowers import urls
|
||||
from rowers.views import error500_view,error404_view,error400_view,error403_view
|
||||
|
||||
from rowers.dataprep import delete_strokedata
|
||||
|
||||
from redis import StrictRedis
|
||||
redis_connection = StrictRedis()
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class PlotTests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u)
|
||||
self.nu = datetime.datetime.now()
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
self.wotw = Workout.objects.create(name='testworkout',
|
||||
workouttype='water',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
self.wote = Workout.objects.create(name='testworkout',
|
||||
workouttype='Indoor Rower',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
# timestr = strftime("%Y%m%d-%H%M%S")
|
||||
# imagename = f1+timestr+'.png'
|
||||
# fullpathimagename = 'static/plots/'+imagename
|
||||
powerperc = 100*np.array([r.pw_ut2,
|
||||
r.pw_ut1,
|
||||
r.pw_at,
|
||||
r.pw_tr,r.pw_an])/r.ftp
|
||||
|
||||
|
||||
self.hrdata = {
|
||||
'hrmax':r.max,
|
||||
'hrut2':r.ut2,
|
||||
'hrut1':r.ut1,
|
||||
'hrat':r.at,
|
||||
'hrtr':r.tr,
|
||||
'hran':r.an,
|
||||
'ftp':r.ftp,
|
||||
'powerperc':serialize_list(powerperc),
|
||||
'powerzones':serialize_list(r.powerzones),
|
||||
}
|
||||
|
||||
@patch('rowers.tasks.rdata')
|
||||
@patch('rowers.tasks.FigureCanvas')
|
||||
def test_ote_plots(self, mocked_rowingdata, mocked_canvas):
|
||||
w = self.wote
|
||||
f1 = 'testdata.csv'[:-4]
|
||||
timestr = strftime("%Y%m%d-%H%M%S")
|
||||
imagename = f1+timestr+'.png'
|
||||
fullpathimagename = 'static/plots/'+imagename
|
||||
# make plot - asynchronous task
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 2
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 3
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 4
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 5
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 6
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 7
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 8
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 13
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
@patch('rowers.tasks.rdata')
|
||||
@patch('rowers.tasks.FigureCanvas')
|
||||
def test_otw_plots(self, mocked_rowingdata, mocked_canvas):
|
||||
w = self.wotw
|
||||
f1 = 'testdata.csv'[:-4]
|
||||
timestr = strftime("%Y%m%d-%H%M%S")
|
||||
imagename = f1+timestr+'.png'
|
||||
fullpathimagename = 'static/plots/'+imagename
|
||||
# make plot - asynchronous task
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 2
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 3
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 4
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 5
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 6
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 7
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 8
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 9
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 13
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
@@ -48,343 +48,7 @@ encoded1 = str(encoder.encode_hex(1))
|
||||
from redis import StrictRedis
|
||||
redis_connection = StrictRedis()
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class TestErrorPages(TestCase):
|
||||
def test_error_handlers(self):
|
||||
|
||||
self.assertTrue(urls.handler404.endswith('.error404_view'))
|
||||
self.assertTrue(urls.handler500.endswith('.error500_view'))
|
||||
factory = RequestFactory()
|
||||
request = factory.get('/')
|
||||
response = error404_view(request)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
self.assertIn('404 Page not found', unicode(response))
|
||||
response = error500_view(request)
|
||||
self.assertEqual(response.status_code, 500)
|
||||
self.assertIn('500 Internal Server Error', unicode(response))
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class NewUserRegistrationTest(TestCase):
|
||||
def setUp(self):
|
||||
self.c = Client()
|
||||
redis_connection.publish('tasks','KILL')
|
||||
|
||||
def test_newuser(self):
|
||||
form_data = {
|
||||
'first_name':'Jan',
|
||||
'last_name':'Roeiert',
|
||||
'email':'jan@loop.nl',
|
||||
'username':'janderoeiert',
|
||||
'password1':'aapindewei2',
|
||||
'password2':'aapindewei2',
|
||||
'tos':True,
|
||||
'weightcategory':'hwt',
|
||||
'adaptiveclass': 'None',
|
||||
'sex':'male',
|
||||
'next':'/rowers/list-workouts',
|
||||
'birthdate':datetime.datetime(year=1970,month=4,day=2)
|
||||
}
|
||||
|
||||
form = RegistrationFormUniqueEmail(form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
response = self.c.post('/rowers/register', form_data, follow=True)
|
||||
|
||||
self.assertRedirects(response,
|
||||
expected_url='/rowers/me/gdpr-optin/?next=/rowers/list-workouts/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class WorkoutTests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
nu = datetime.datetime.now()
|
||||
self.w = Workout.objects.create(name='testworkout',
|
||||
workouttype='water',
|
||||
user=self.r,date=nu.strftime('%Y-%m-%d'),
|
||||
starttime=nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000)
|
||||
|
||||
def test_checkworkoutuser(self):
|
||||
self.assertEqual(checkworkoutuser(self.u,self.w),True)
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class C2Tests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
self.u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
self.r = Rower.objects.create(user=self.u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
self.nu = datetime.datetime.now()
|
||||
self.w = Workout.objects.create(name='testworkout',workouttype='water',
|
||||
user=r,date=nu.strftime('%Y-%m-%d'),
|
||||
starttime=nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000)
|
||||
|
||||
def c2_notokentest(self):
|
||||
thetoken = c2_open(self.u)
|
||||
# should raise NoTokenError
|
||||
self.assertRaises(NoTokenError)
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class DataTest(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
|
||||
def test_workoutform(self):
|
||||
form_data = {
|
||||
'name':'test',
|
||||
'date':'2016-05-01',
|
||||
'starttime':'07:53:00',
|
||||
'timezone':'UTC',
|
||||
'duration':'0:55:00.1',
|
||||
'distance':8000,
|
||||
'notes':'Aap noot \n mies',
|
||||
'weightcategory':'lwt',
|
||||
'adaptiveclass': 'PR1',
|
||||
'workouttype':'water',
|
||||
'boattype':'1x',
|
||||
'private':False,
|
||||
}
|
||||
form = WorkoutForm(data=form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
def test_rower_form_withvalidnumbers(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':48,
|
||||
'ut2':105,
|
||||
'ut1':148,
|
||||
'at':160,
|
||||
'tr':167,
|
||||
'an':180,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
|
||||
def test_rower_form_twoequalvalues(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':48,
|
||||
'ut2':105,
|
||||
'ut1':105,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_rower_form_abovemaxallowed(self):
|
||||
form_data = {
|
||||
'max':300,
|
||||
'rest':48,
|
||||
'ut2':105,
|
||||
'ut1':148,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_rower_form_wrongorder(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':48,
|
||||
'ut2':20,
|
||||
'ut1':148,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_rower_form_belowminalloed(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':2,
|
||||
'ut2':105,
|
||||
'ut1':148,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_rower_form_wrongorder2(self):
|
||||
form_data = {
|
||||
'max':192,
|
||||
'rest':48,
|
||||
'ut2':105,
|
||||
'ut1':170,
|
||||
'at':160,
|
||||
'an':180,
|
||||
'tr':167,
|
||||
'weightcategory':'lwt',
|
||||
}
|
||||
form = RowerForm(data=form_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_painsled_form(self):
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
f = open(filename,'rb')
|
||||
file_data = {'file': SimpleUploadedFile(f.name, f.read())}
|
||||
form_data = {
|
||||
'title':'test',
|
||||
'workouttype':'water',
|
||||
'boattype':'1x',
|
||||
'notes':'aap noot mies',
|
||||
}
|
||||
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
f.close()
|
||||
|
||||
class InteractiveChartTest(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u,gdproptin=True,
|
||||
gdproptindate=timezone.now()
|
||||
)
|
||||
self.nu = datetime.datetime.now()
|
||||
|
||||
self.filename = 'rowers/tests/testdata/testdata.csv'
|
||||
self.wotw = Workout.objects.create(name='testworkout',
|
||||
workouttype='water',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=self.filename)
|
||||
|
||||
self.wote = Workout.objects.create(name='testworkout',
|
||||
workouttype='Indoor Rower',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=self.filename)
|
||||
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_painsled(self, mocked_sqlalchemy, mocked_read_df_sql):
|
||||
u = User.objects.get(username='john')
|
||||
r = Rower.objects.get(user=u)
|
||||
|
||||
rr = rrower(hrmax=r.max,hrut2=r.ut2,
|
||||
hrut1=r.ut1,hrat=r.at,
|
||||
hrtr=r.tr,hran=r.an,ftp=r.ftp)
|
||||
row = rdata(self.filename,rower=rr)
|
||||
|
||||
fig1 = plots.mkplot(row,'test')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart1(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_chart(self.wote.id)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart2(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_chart(self.wote.id,promember=1)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart3(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_bar_chart(self.wote.id)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart4(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_bar_chart(self.wote.id,promember=1)
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart5(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,promember=0,
|
||||
xparam='time',
|
||||
yparam1='pace',yparam2='hr')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart6(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=0,xparam='distance',
|
||||
yparam1='pace',yparam2='hr')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart7(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,promember=0,
|
||||
xparam='time',
|
||||
yparam1='pace',yparam2='spm')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart8(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=0,xparam='distance',
|
||||
yparam1='pace',yparam2='spm')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart9(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=1,xparam='time',
|
||||
yparam1='pace',yparam2='hr')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart10(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=1,xparam='distance',
|
||||
yparam1='pace',yparam2='hr')
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart11(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,
|
||||
promember=1,xparam='time',
|
||||
yparam1='pace',yparam2='spm')
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
def test_interactive_chart12(self, mocked_sqlalchemy,mocked_read_df_sql):
|
||||
res = iplots.interactive_flex_chart2(self.wote.id,promember=1,
|
||||
xparam='distance',
|
||||
yparam1='pace',yparam2='spm')
|
||||
|
||||
|
||||
from rowers.tests.mocks import *
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
@@ -412,7 +76,8 @@ class ViewTest(TestCase):
|
||||
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
def test_upload_view_sled(self, mocked_sqlalchemy):
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
login = self.c.login(username='john',password='koeinsloot')
|
||||
self.assertTrue(login)
|
||||
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
f = open(filename,'rb')
|
||||
@@ -433,7 +98,7 @@ class ViewTest(TestCase):
|
||||
|
||||
f.close()
|
||||
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -441,14 +106,14 @@ class ViewTest(TestCase):
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/', form_data, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/edit', form_data, follow=True)
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/edit/', form_data, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/histo', form_data, follow=True)
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/histo/', form_data, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/workflow',
|
||||
response = self.c.get('/rowers/workout/'+encoded1+'/workflow/',
|
||||
follow=True)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -469,7 +134,7 @@ class ViewTest(TestCase):
|
||||
}
|
||||
form = WorkoutForm(data=form_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
response = self.c.post('/rowers/workout/'+encoded1+'/edit', form_data, follow=True)
|
||||
response = self.c.post('/rowers/workout/'+encoded1+'/edit/', form_data, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
@@ -522,7 +187,7 @@ class ViewTest(TestCase):
|
||||
|
||||
f.close()
|
||||
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -564,7 +229,7 @@ class ViewTest(TestCase):
|
||||
|
||||
f.close()
|
||||
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -633,7 +298,7 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
f.close()
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -683,7 +348,7 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
f.close()
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -720,7 +385,7 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
f.close()
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -759,7 +424,7 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
f.close()
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -795,7 +460,7 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
f.close()
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -832,7 +497,7 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
f.close()
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -871,7 +536,7 @@ class ViewTest(TestCase):
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
f.close()
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
@@ -907,7 +572,7 @@ class ViewTest(TestCase):
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -940,7 +605,7 @@ class ViewTest(TestCase):
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -973,7 +638,7 @@ class ViewTest(TestCase):
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -1006,7 +671,7 @@ class ViewTest(TestCase):
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -1040,7 +705,7 @@ class ViewTest(TestCase):
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -1072,7 +737,7 @@ class ViewTest(TestCase):
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -1104,7 +769,7 @@ class ViewTest(TestCase):
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -1136,7 +801,7 @@ class ViewTest(TestCase):
|
||||
form = DocumentsForm(form_data,file_data)
|
||||
|
||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||
status_code=302,target_status_code=200)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -1147,400 +812,3 @@ class ViewTest(TestCase):
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
|
||||
# def test_upload_view_FIT_SpeedCoach2a(self):
|
||||
# self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
# filename = 'rowers/tests/testdata/3x250m.fit'
|
||||
# with open(filename,'rb') as f:
|
||||
|
||||
# file_data = {'file': f}
|
||||
|
||||
# form_data = {
|
||||
# 'title':'test',
|
||||
# 'workouttype':'water',
|
||||
# 'boattype':'1x',
|
||||
# 'notes':'aap noot mies',
|
||||
# 'make_plot':False,
|
||||
# 'upload_to_c2':False,
|
||||
# 'plottype':'timeplot',
|
||||
# 'file': f,
|
||||
# }
|
||||
|
||||
# form = DocumentsForm(form_data,file_data)
|
||||
|
||||
# response = self.c.post('/rowers/workout/upload/',
|
||||
# form_data, follow=True,
|
||||
# format='multipart')
|
||||
# f.close()
|
||||
# self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit',
|
||||
# status_code=302,target_status_code=200)
|
||||
|
||||
# self.assertEqual(response.status_code, 200)
|
||||
|
||||
# w = Workout.objects.get(id=1)
|
||||
# f_to_be_deleted = w.csvfilename
|
||||
# os.remove(f_to_be_deleted+'.gz')
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class subroutinetests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u)
|
||||
nu = datetime.datetime.now()
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
self.w = Workout.objects.create(name='testworkout',
|
||||
workouttype='water',
|
||||
user=r,date=nu.strftime('%Y-%m-%d'),
|
||||
starttime=nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
|
||||
def c2stuff(self):
|
||||
data = c2stuff.createc2workoutdata(self.w)
|
||||
jsond = json.dumps(data)
|
||||
data = c2stuff.createc2workoutdata_as_splits(w)
|
||||
jsond = json.dumps(data)
|
||||
|
||||
|
||||
|
||||
#@pytest.mark.django_db
|
||||
class PlotTests(TestCase):
|
||||
def setUp(self):
|
||||
redis_connection.publish('tasks','KILL')
|
||||
u = User.objects.create_user('john',
|
||||
'sander@ds.ds',
|
||||
'koeinsloot')
|
||||
r = Rower.objects.create(user=u)
|
||||
self.nu = datetime.datetime.now()
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
self.wotw = Workout.objects.create(name='testworkout',
|
||||
workouttype='water',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
self.wote = Workout.objects.create(name='testworkout',
|
||||
workouttype='Indoor Rower',
|
||||
user=r,date=self.nu.strftime('%Y-%m-%d'),
|
||||
starttime=self.nu.strftime('%H:%M:%S'),
|
||||
duration="0:55:00",distance=8000,
|
||||
csvfilename=filename)
|
||||
|
||||
# timestr = strftime("%Y%m%d-%H%M%S")
|
||||
# imagename = f1+timestr+'.png'
|
||||
# fullpathimagename = 'static/plots/'+imagename
|
||||
powerperc = 100*np.array([r.pw_ut2,
|
||||
r.pw_ut1,
|
||||
r.pw_at,
|
||||
r.pw_tr,r.pw_an])/r.ftp
|
||||
|
||||
|
||||
self.hrdata = {
|
||||
'hrmax':r.max,
|
||||
'hrut2':r.ut2,
|
||||
'hrut1':r.ut1,
|
||||
'hrat':r.at,
|
||||
'hrtr':r.tr,
|
||||
'hran':r.an,
|
||||
'ftp':r.ftp,
|
||||
'powerperc':serialize_list(powerperc),
|
||||
'powerzones':serialize_list(r.powerzones),
|
||||
}
|
||||
|
||||
@patch('rowers.tasks.rdata')
|
||||
@patch('rowers.tasks.FigureCanvas')
|
||||
def test_ote_plots(self, mocked_rowingdata, mocked_canvas):
|
||||
w = self.wote
|
||||
f1 = 'testdata.csv'[:-4]
|
||||
timestr = strftime("%Y%m%d-%H%M%S")
|
||||
imagename = f1+timestr+'.png'
|
||||
fullpathimagename = 'static/plots/'+imagename
|
||||
# make plot - asynchronous task
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 2
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 3
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 4
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 5
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 6
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 7
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 8
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 13
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
@patch('rowers.tasks.rdata')
|
||||
@patch('rowers.tasks.FigureCanvas')
|
||||
def test_otw_plots(self, mocked_rowingdata, mocked_canvas):
|
||||
w = self.wotw
|
||||
f1 = 'testdata.csv'[:-4]
|
||||
timestr = strftime("%Y%m%d-%H%M%S")
|
||||
imagename = f1+timestr+'.png'
|
||||
fullpathimagename = 'static/plots/'+imagename
|
||||
# make plot - asynchronous task
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 1
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 2
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 3
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 4
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 5
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 6
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 7
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 8
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 9
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
|
||||
plotnr = 13
|
||||
if (w.workouttype=='water'):
|
||||
plotnr = plotnr+3
|
||||
|
||||
res = handle_makeplot(f1,w.csvfilename,
|
||||
w.name,self.hrdata,plotnr,imagename)
|
||||
i = GraphImage(workout=w,creationdatetime=self.nu,
|
||||
filename=fullpathimagename)
|
||||
try:
|
||||
os.remove(fullpathimagename)
|
||||
except WindowsError:
|
||||
pass
|
||||
@@ -56,9 +56,9 @@ class URLTests(TestCase):
|
||||
'sander@ds.ds',
|
||||
'koeinsloot',
|
||||
)
|
||||
r = Rower.objects.create(user=u,rowerplan='coach')
|
||||
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True,
|
||||
gdproptindate=timezone.now())
|
||||
self.c = Client()
|
||||
self.c.login(username='john',password='koeinsloot')
|
||||
|
||||
self.nu = datetime.datetime.now()
|
||||
filename = 'rowers/tests/testdata/testdata.csv'
|
||||
@@ -101,100 +101,100 @@ class URLTests(TestCase):
|
||||
'/rowers/500/',
|
||||
'/rowers/502/',
|
||||
'/rowers/1/list-workouts/',
|
||||
'/rowers/1/list-workouts/2016-01-01/2016-12-31',
|
||||
'/rowers/1/list-workouts/2016-01-01/2016-12-31/',
|
||||
'/rowers/1/ote-bests/',
|
||||
'/rowers/1/ote-bests2/2016-01-01/2016-12-31',
|
||||
'/rowers/about',
|
||||
'/rowers/addmanual/',
|
||||
'/rowers/agegroupcp/30',
|
||||
'/rowers/agegroupcp/30/1',
|
||||
'/rowers/agegrouprecords/male/hwt',
|
||||
'/rowers/agegrouprecords/male/hwt/2000m',
|
||||
'/rowers/agegrouprecords/male/hwt/2000min',
|
||||
'/rowers/ajax_agegroup/45/hwt/male/1',
|
||||
'/rowers/1/ote-bests2/2016-01-01/2016-12-31/',
|
||||
'/rowers/about/',
|
||||
'/rowers/workout/addmanual/',
|
||||
'/rowers/agegroupcp/30/',
|
||||
'/rowers/agegroupcp/30/1/',
|
||||
'/rowers/agegrouprecords/male/hwt/',
|
||||
'/rowers/agegrouprecords/male/hwt/2000m/',
|
||||
'/rowers/agegrouprecords/male/hwt/2000min/',
|
||||
'/rowers/ajax_agegroup/45/hwt/male/1/',
|
||||
'/rowers/analysis/',
|
||||
'/rowers/analysis/user/1',
|
||||
'/rowers/brochure',
|
||||
'/rowers/courses/upload',
|
||||
'/rowers/analysis/user/1/',
|
||||
'/rowers/brochure/',
|
||||
'/rowers/courses/upload/',
|
||||
'/rowers/createplan/',
|
||||
'/rowers/createplan/user/1/',
|
||||
'/rowers/cumstats/',
|
||||
'/rowers/cumstats/2016-01-01/2016-12-31',
|
||||
'/rowers/cumstats/user/1',
|
||||
'/rowers/cumstats/user/1/2016-01-01/2016-12-31',
|
||||
'/rowers/developers',
|
||||
'/rowers/cumstats/2016-01-01/2016-12-31/',
|
||||
'/rowers/cumstats/user/1/',
|
||||
'/rowers/cumstats/user/1/2016-01-01/2016-12-31/',
|
||||
'/rowers/developers/',
|
||||
'/rowers/email/',
|
||||
'/rowers/email/thankyou/',
|
||||
'/rowers/fitness-progress/',
|
||||
'/rowers/fitness-progress/user/1',
|
||||
'/rowers/fitness-progress/user/1/rower',
|
||||
'/rowers/fitness-progress/user/1/',
|
||||
'/rowers/fitness-progress/user/1/rower/',
|
||||
'/rowers/flexall/',
|
||||
'/rowers/flexall/spm/hr/None/',
|
||||
'/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/',
|
||||
'/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/user/1',
|
||||
'/rowers/flexall/spm/hr/None/2016-01-01/2016-12-31/user/1/',
|
||||
'/rowers/flexall/user/1/',
|
||||
'/rowers/flexalldata/',
|
||||
'/rowers/help',
|
||||
'/rowers/help/',
|
||||
'/rowers/histo/',
|
||||
'/rowers/histo/user/1',
|
||||
'/rowers/histo/user/1/2016-01-01/2016-12-31',
|
||||
'/rowers/histodata',
|
||||
'/rowers/job-kill/1',
|
||||
'/rowers/histo/user/1/',
|
||||
'/rowers/histo/user/1/2016-01-01/2016-12-31/',
|
||||
'/rowers/histodata/',
|
||||
'/rowers/job-kill/1/',
|
||||
'/rowers/jobs-status/',
|
||||
'/rowers/laboratory/',
|
||||
'/rowers/laboratory/user/1',
|
||||
'/rowers/legal',
|
||||
'/rowers/laboratory/user/1/',
|
||||
'/rowers/legal/',
|
||||
'/rowers/list-courses/',
|
||||
'/rowers/list-graphs/',
|
||||
'/rowers/list-jobs/',
|
||||
'/rowers/list-workouts/',
|
||||
'/rowers/list-workouts/2016-01-01/2016-12-31',
|
||||
'/rowers/list-workouts/2016-01-01/2016-12-31/',
|
||||
'/rowers/list-workouts/2016-01-01/2016-12-31/user/1/',
|
||||
'/rowers/list-workouts/ranking',
|
||||
'/rowers/list-workouts/ranking/',
|
||||
'/rowers/list-workouts/user/1/',
|
||||
'/rowers/me/calcdps/',
|
||||
'/rowers/me/edit/',
|
||||
'/rowers/me/edit/user/1',
|
||||
'/rowers/me/edit/user/1/',
|
||||
'/rowers/me/exportsettings/',
|
||||
'/rowers/me/exportsettings/user/1',
|
||||
'/rowers/me/exportsettings/user/1/',
|
||||
'/rowers/me/favoritecharts/',
|
||||
'/rowers/me/favoritecharts/user/1',
|
||||
'/rowers/me/favoritecharts/user/1/',
|
||||
'/rowers/me/invitation/',
|
||||
'/rowers/me/preferences/',
|
||||
'/rowers/me/preferences/user/1',
|
||||
'/rowers/me/preferences/user/1/',
|
||||
'/rowers/me/request/',
|
||||
'/rowers/me/teams/',
|
||||
'/rowers/me/workflowconfig2/',
|
||||
'/rowers/me/workflowconfig2/user/1',
|
||||
'/rowers/me/workflowdefault',
|
||||
'/rowers/multi-compare',
|
||||
'/rowers/me/workflowconfig2/user/1/',
|
||||
'/rowers/me/workflowdefault/',
|
||||
# '/rowers/multi-compare/',
|
||||
'/rowers/ote-bests/',
|
||||
'/rowers/ote-bests/2016-01-01/2016-12-31',
|
||||
'/rowers/ote-bests/user/1',
|
||||
'/rowers/ote-bests/user/1/2016-01-01/2016-12-31',
|
||||
'/rowers/ote-bests/2016-01-01/2016-12-31/',
|
||||
'/rowers/ote-bests/user/1/',
|
||||
'/rowers/ote-bests/user/1/2016-01-01/2016-12-31/',
|
||||
'/rowers/ote-bests2/',
|
||||
'/rowers/ote-bests2/2016-01-01/2016-12-31',
|
||||
'/rowers/ote-bests2/user/1',
|
||||
'/rowers/ote-bests2/2016-01-01/2016-12-31/',
|
||||
'/rowers/ote-bests2/user/1/',
|
||||
'/rowers/ote-ranking/',
|
||||
'/rowers/ote-ranking/2016-01-01/2016-12-31',
|
||||
'/rowers/ote-ranking/2016-01-01/2016-12-31/',
|
||||
'/rowers/ote-ranking/user/1/',
|
||||
'/rowers/ote-ranking/user/1/2016-01-01/2016-12-31',
|
||||
'/rowers/ote-ranking/user/1/2016-01-01/2016-12-31/',
|
||||
'/rowers/otw-bests/',
|
||||
'/rowers/otw-bests/2016-01-01/2016-12-31',
|
||||
'/rowers/otw-bests/user/1/2016-01-01/2016-12-31',
|
||||
'/rowers/partners',
|
||||
'/rowers/physics',
|
||||
'/rowers/planrequired',
|
||||
'/rowers/promembership',
|
||||
'/rowers/register',
|
||||
'/rowers/otw-bests/2016-01-01/2016-12-31/',
|
||||
'/rowers/otw-bests/user/1/2016-01-01/2016-12-31/',
|
||||
'/rowers/partners/',
|
||||
'/rowers/physics/',
|
||||
'/rowers/planrequired/',
|
||||
'/rowers/promembership/',
|
||||
'/rowers/register/',
|
||||
'/rowers/register/thankyou/',
|
||||
'/rowers/sessions/',
|
||||
'/rowers/sessions/2016-01-01/2016-12-31',
|
||||
'/rowers/sessions/2016-01-01/2016-12-31/user/1',
|
||||
'/rowers/sessions/2016-01-01/2016-12-31/',
|
||||
'/rowers/sessions/2016-01-01/2016-12-31/user/1/',
|
||||
'/rowers/sessions/coach/',
|
||||
'/rowers/sessions/coach/user/1/',
|
||||
'/rowers/sessions/create/',
|
||||
'/rowers/sessions/create/user/1',
|
||||
'/rowers/sessions/create/user/1/',
|
||||
'/rowers/sessions/manage/',
|
||||
'/rowers/sessions/manage/user/1/',
|
||||
'/rowers/sessions/multiclone/',
|
||||
@@ -202,83 +202,82 @@ class URLTests(TestCase):
|
||||
'/rowers/sessions/multicreate/',
|
||||
'/rowers/sessions/multicreate/user/1/',
|
||||
'/rowers/sessions/print/',
|
||||
'/rowers/sessions/print/user/1',
|
||||
'/rowers/sessions/print/user/1/',
|
||||
'/rowers/sessions/teamcreate/',
|
||||
'/rowers/sessions/user/1',
|
||||
'/rowers/sessions/user/1/',
|
||||
'/rowers/team-compare-select/',
|
||||
'/rowers/team-compare-select/workout/1',
|
||||
'/rowers/team-compare-select/2016-01-01/2016-12-31',
|
||||
'/rowers/test-job/2',
|
||||
'/rowers/test-job2/2',
|
||||
'/rowers/test_callback',
|
||||
'/rowers/updatefitness',
|
||||
'/rowers/updatefitness/rower',
|
||||
'/rowers/updatefitness/rower/50',
|
||||
'/rowers/user-boxplot',
|
||||
'/rowers/user-boxplot-data',
|
||||
'/rowers/user-boxplot-select/',
|
||||
'/rowers/user-boxplot-select/user/1/',
|
||||
'/rowers/user-boxplot/user/1',
|
||||
'/rowers/user-multiflex-data',
|
||||
'/rowers/user-multiflex-select/',
|
||||
'/rowers/user-multiflex-select/2016-01-01/2016-12-31',
|
||||
'/rowers/user-multiflex-select/user/1/',
|
||||
'/rowers/user-multiflex-select/user/1/2016-01-01/2016-12-31',
|
||||
'/rowers/user-multiflex/',
|
||||
'/rowers/user-multiflex/user/1',
|
||||
'/rowers/workout/'+encoded1+'/',
|
||||
'/rowers/workout/'+encoded1+'/adddistanceplot',
|
||||
'/rowers/workout/'+encoded1+'/adddistanceplot2',
|
||||
'/rowers/workout/'+encoded1+'/addotwpowerplot',
|
||||
'/rowers/workout/'+encoded1+'/addpiechart',
|
||||
'/rowers/workout/'+encoded1+'/addpowerpiechart',
|
||||
'/rowers/workout/'+encoded1+'/addstatic',
|
||||
'/rowers/workout/'+encoded1+'/addstatic/3',
|
||||
'/rowers/workout/'+encoded1+'/addtimeplot',
|
||||
'/rowers/workout/'+encoded1+'/addtimeplot2',
|
||||
'/rowers/workout/'+encoded1+'/comment',
|
||||
'/rowers/workout/'+encoded1+'/darkskywind',
|
||||
'/rowers/workout/'+encoded1+'/data',
|
||||
'/rowers/workout/'+encoded1+'/edit',
|
||||
'/rowers/workout/'+encoded1+'/editintervals',
|
||||
'/rowers/workout/'+encoded1+'/flexchart',
|
||||
'/rowers/workout/'+encoded1+'/flexchart/spm/hr/None',
|
||||
'/rowers/workout/'+encoded1+'/flexchart/spm/hr/None/scatter',
|
||||
'/rowers/workout/'+encoded1+'/flexchart/spm/hr/None/scatter/',
|
||||
'/rowers/workout/'+encoded1+'/forcecurve',
|
||||
'/rowers/workout/'+encoded1+'/get-testscript',
|
||||
'/rowers/workout/'+encoded1+'/get-thumbnails',
|
||||
'/rowers/workout/'+encoded1+'/histo',
|
||||
'/rowers/workout/'+encoded1+'/image',
|
||||
'/rowers/workout/'+encoded1+'/instroke',
|
||||
'/rowers/workout/'+encoded1+'/interactiveotwplot',
|
||||
'/rowers/workout/'+encoded1+'/map',
|
||||
'/rowers/workout/'+encoded1+'/otwsetpower',
|
||||
'/rowers/workout/'+encoded1+'/recalcsummary/',
|
||||
'/rowers/workout/'+encoded1+'/restore',
|
||||
'/rowers/workout/'+encoded1+'/smoothenpace',
|
||||
'/rowers/workout/'+encoded1+'/split',
|
||||
'/rowers/workout/'+encoded1+'/stats',
|
||||
'/rowers/workout/'+encoded1+'/stream',
|
||||
'/rowers/workout/'+encoded1+'/task',
|
||||
'/rowers/workout/'+encoded1+'/test_strokedata',
|
||||
'/rowers/workout/'+encoded1+'/toggle-ranking',
|
||||
'/rowers/workout/'+encoded1+'/undosmoothenpace',
|
||||
'/rowers/workout/'+encoded1+'/unsubscribe',
|
||||
'/rowers/workout/'+encoded1+'/updatecp',
|
||||
'/rowers/workout/'+encoded1+'/view',
|
||||
'/rowers/workout/'+encoded1+'/wind',
|
||||
'/rowers/workout/'+encoded1+'/workflow',
|
||||
'/rowers/workout/compare/'+encoded1+'/2016-01-01/2016-12-31',
|
||||
'/rowers/workout/fusion/'+encoded1+'/',
|
||||
'/rowers/workout/fusion/'+encoded1+'/2016-01-01/2016-12-31',
|
||||
'/rowers/team-compare-select/workout/1/',
|
||||
'/rowers/team-compare-select/2016-01-01/2016-12-31/',
|
||||
'/rowers/test-job/2/',
|
||||
'/rowers/test-job2/2/',
|
||||
# '/rowers/test_callback/',
|
||||
# '/rowers/updatefitness/',
|
||||
# '/rowers/updatefitness/rower/',
|
||||
# '/rowers/updatefitness/rower/50/',
|
||||
# '/rowers/user-boxplot/',
|
||||
# '/rowers/user-boxplot-data/',
|
||||
# '/rowers/user-boxplot-select//',
|
||||
# '/rowers/user-boxplot-select/user/1//',
|
||||
# '/rowers/user-boxplot/user/1/',
|
||||
# '/rowers/user-multiflex-data/',
|
||||
# '/rowers/user-multiflex-select//',
|
||||
# '/rowers/user-multiflex-select/2016-01-01/2016-12-31/',
|
||||
# '/rowers/user-multiflex-select/user/1//',
|
||||
# '/rowers/user-multiflex-select/user/1/2016-01-01/2016-12-31/',
|
||||
# '/rowers/user-multiflex//',
|
||||
# '/rowers/user-multiflex/user/1/',
|
||||
'/rowers/workout/'+encoded1+'//',
|
||||
'/rowers/workout/'+encoded1+'/adddistanceplot/',
|
||||
'/rowers/workout/'+encoded1+'/adddistanceplot2/',
|
||||
'/rowers/workout/'+encoded1+'/addotwpowerplot/',
|
||||
'/rowers/workout/'+encoded1+'/addpiechart/',
|
||||
'/rowers/workout/'+encoded1+'/addpowerpiechart/',
|
||||
'/rowers/workout/'+encoded1+'/addstatic/',
|
||||
'/rowers/workout/'+encoded1+'/addstatic/3/',
|
||||
'/rowers/workout/'+encoded1+'/addtimeplot/',
|
||||
'/rowers/workout/'+encoded1+'/addtimeplot2/',
|
||||
'/rowers/workout/'+encoded1+'/comment/',
|
||||
'/rowers/workout/'+encoded1+'/darkskywind/',
|
||||
'/rowers/workout/'+encoded1+'/data/',
|
||||
'/rowers/workout/'+encoded1+'/edit/',
|
||||
'/rowers/workout/'+encoded1+'/editintervals/',
|
||||
'/rowers/workout/'+encoded1+'/flexchart/',
|
||||
'/rowers/workout/'+encoded1+'/forcecurve/',
|
||||
'/rowers/workout/'+encoded1+'/get-testscript/',
|
||||
'/rowers/workout/'+encoded1+'/get-thumbnails/',
|
||||
'/rowers/workout/'+encoded1+'/histo/',
|
||||
'/rowers/workout/'+encoded1+'/image/',
|
||||
'/rowers/workout/'+encoded1+'/instroke/',
|
||||
'/rowers/workout/'+encoded1+'/interactiveotwplot/',
|
||||
'/rowers/workout/'+encoded1+'/map/',
|
||||
'/rowers/workout/'+encoded1+'/otwsetpower/',
|
||||
'/rowers/workout/'+encoded1+'/recalcsummary//',
|
||||
'/rowers/workout/'+encoded1+'/restore/',
|
||||
'/rowers/workout/'+encoded1+'/smoothenpace/',
|
||||
'/rowers/workout/'+encoded1+'/split/',
|
||||
'/rowers/workout/'+encoded1+'/stats/',
|
||||
'/rowers/workout/'+encoded1+'/stream/',
|
||||
'/rowers/workout/'+encoded1+'/task/',
|
||||
'/rowers/workout/'+encoded1+'/test_strokedata/',
|
||||
'/rowers/workout/'+encoded1+'/toggle-ranking/',
|
||||
'/rowers/workout/'+encoded1+'/undosmoothenpace/',
|
||||
'/rowers/workout/'+encoded1+'/unsubscribe/',
|
||||
'/rowers/workout/'+encoded1+'/updatecp/',
|
||||
'/rowers/workout/'+encoded1+'/view/',
|
||||
'/rowers/workout/'+encoded1+'/wind/',
|
||||
'/rowers/workout/'+encoded1+'/workflow/',
|
||||
'/rowers/workout/compare/'+encoded1+'/2016-01-01/2016-12-31/',
|
||||
'/rowers/workout/fusion/'+encoded1+'//',
|
||||
'/rowers/workout/fusion/'+encoded1+'/2016-01-01/2016-12-31/',
|
||||
'/rowers/workout/upload/',
|
||||
'/rowers/workout/upload/team/',
|
||||
'/rowers/workouts-join',
|
||||
'/rowers/workouts-join/',
|
||||
'/rowers/workouts-join-select/',
|
||||
'/rowers/workouts-join-select/2016-01-01/2016-12-31',
|
||||
'/rowers/workouts-join-select/2016-01-01/2016-12-31/',
|
||||
]
|
||||
|
||||
# urlstotest = ['/rowers/createplan/user/1/']
|
||||
|
||||
lijst = []
|
||||
for url in urlstotest:
|
||||
lijst.append(
|
||||
@@ -286,12 +285,20 @@ class URLTests(TestCase):
|
||||
)
|
||||
|
||||
@parameterized.expand(lijst)
|
||||
def test_url_generator(self,url,expected):
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.dataprep.read_df_sql')
|
||||
@patch('rowers.dataprep.getsmallrowdata_db')
|
||||
def test_url_generator(self,url,expected,
|
||||
mocked_sqlalchemy,
|
||||
mocked_read_df_sql,
|
||||
mocked_getsmallrowdata_db):
|
||||
login = self.c.login(username='john',password='koeinsloot')
|
||||
self.assertTrue(login)
|
||||
response = self.c.get(url,follow=True)
|
||||
if response.status_code != expected:
|
||||
print url
|
||||
print response.status_code
|
||||
self.assertEqual(response.status_code,
|
||||
expected,
|
||||
msg=url+' response status code not 200')
|
||||
expected)
|
||||
|
||||
|
||||
|
||||
@@ -152,11 +152,12 @@ workout water
|
||||
except (IOError,WindowsError):
|
||||
pass
|
||||
|
||||
@patch('requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.dataprep.create_engine')
|
||||
@patch('rowers.polarstuff.get_polar_notifications')
|
||||
@patch('rowers.c2stuff.requests.get', side_effect=mocked_requests)
|
||||
@patch('rowers.c2stuff.requests.post', side_effect=mocked_requests)
|
||||
def test_emailprocessing(
|
||||
self, mock_get, mocked_sqlalchemy,mocked_polar_notifications):
|
||||
self, mocked_sqlalchemy,mocked_polar_notifications, mock_get, mock_post):
|
||||
out = StringIO()
|
||||
call_command('processemail', stdout=out,testing=True)
|
||||
self.assertIn('Successfully processed email attachments',out.getvalue())
|
||||
|
||||
288
rowers/tests/testdata/Courses.kml
vendored
Normal file
288
rowers/tests/testdata/Courses.kml
vendored
Normal file
@@ -0,0 +1,288 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<Document>
|
||||
<name>Courses.kml</name>
|
||||
<Style id="s_ylw-pushpin_hl">
|
||||
<IconStyle>
|
||||
<scale>1.3</scale>
|
||||
<Icon>
|
||||
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
|
||||
</Icon>
|
||||
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
|
||||
</IconStyle>
|
||||
</Style>
|
||||
<Style id="default">
|
||||
</Style>
|
||||
<Style id="s_ylw-pushpin_hl1">
|
||||
<IconStyle>
|
||||
<scale>1.3</scale>
|
||||
<Icon>
|
||||
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
|
||||
</Icon>
|
||||
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
|
||||
</IconStyle>
|
||||
</Style>
|
||||
<Style id="s_ylw-pushpin0">
|
||||
<IconStyle>
|
||||
<scale>1.1</scale>
|
||||
<Icon>
|
||||
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
|
||||
</Icon>
|
||||
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
|
||||
</IconStyle>
|
||||
</Style>
|
||||
<StyleMap id="m_ylw-pushpin00">
|
||||
<Pair>
|
||||
<key>normal</key>
|
||||
<styleUrl>#s_ylw-pushpin</styleUrl>
|
||||
</Pair>
|
||||
<Pair>
|
||||
<key>highlight</key>
|
||||
<styleUrl>#s_ylw-pushpin_hl1</styleUrl>
|
||||
</Pair>
|
||||
</StyleMap>
|
||||
<StyleMap id="default0">
|
||||
<Pair>
|
||||
<key>normal</key>
|
||||
<styleUrl>#default</styleUrl>
|
||||
</Pair>
|
||||
<Pair>
|
||||
<key>highlight</key>
|
||||
<styleUrl>#hl</styleUrl>
|
||||
</Pair>
|
||||
</StyleMap>
|
||||
<Style id="hl">
|
||||
<IconStyle>
|
||||
<scale>1.2</scale>
|
||||
</IconStyle>
|
||||
</Style>
|
||||
<StyleMap id="m_ylw-pushpin0">
|
||||
<Pair>
|
||||
<key>normal</key>
|
||||
<styleUrl>#s_ylw-pushpin0</styleUrl>
|
||||
</Pair>
|
||||
<Pair>
|
||||
<key>highlight</key>
|
||||
<styleUrl>#s_ylw-pushpin_hl</styleUrl>
|
||||
</Pair>
|
||||
</StyleMap>
|
||||
<Style id="s_ylw-pushpin">
|
||||
<IconStyle>
|
||||
<scale>1.1</scale>
|
||||
<Icon>
|
||||
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
|
||||
</Icon>
|
||||
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
|
||||
</IconStyle>
|
||||
</Style>
|
||||
<Folder>
|
||||
<name>Courses</name>
|
||||
<open>1</open>
|
||||
<Folder>
|
||||
<name>Prygl 6k</name>
|
||||
<open>1</open>
|
||||
<Placemark>
|
||||
<name>Start</name>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
16.493756183,49.24844155419999,0 16.4950276036,49.24946598889999,0 16.4935514581,49.25030382040001,0 16.4924501194,49.24874879119999,0 16.493756183,49.24844155419999,0 16.493756183,49.24844155419999,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Point 1</name>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
16.506708949,49.2439847728,0 16.502701462,49.2422079428,0 16.5053367985,49.2401527868,0 16.5094023592,49.2415898407,0 16.506708949,49.2439847728,0 16.506708949,49.2439847728,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Turn</name>
|
||||
<styleUrl>#default0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
16.5163547561,49.2300084054,0 16.5130017315,49.2295990778,0 16.5136670476,49.2286154281,0 16.5163274873,49.2289844757,0 16.5163547561,49.2300084054,0 16.5163547561,49.2300084054,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Finish</name>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
16.493756183,49.24844155419999,0 16.4950276036,49.24946598889999,0 16.4935514581,49.25030382040001,0 16.4924501194,49.24874879119999,0 16.493756183,49.24844155419999,0 16.493756183,49.24844155419999,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
</Folder>
|
||||
<Folder>
|
||||
<name>Head of Prague</name>
|
||||
<open>1</open>
|
||||
<Placemark>
|
||||
<name>Start</name>
|
||||
<styleUrl>#m_ylw-pushpin0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
14.40795442915535,50.03834045518993,0 14.40882772308304,50.03984594689523,0 14.40678066310206,50.0401625745879,0 14.40566906248426,50.03869597446091,0 14.40795442915535,50.03834045518993,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Veslarsky Ostrov</name>
|
||||
<styleUrl>#m_ylw-pushpin0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
14.41831806167885,50.05959293886939,0 14.41614241009258,50.05961498094956,0 14.41609483686422,50.05813133073231,0 14.41797644481905,50.05800508407179,0 14.41831806167885,50.05959293886939,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Bojka</name>
|
||||
<styleUrl>#m_ylw-pushpin00</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
14.41054841341896,50.07305590743798,0 14.41375740150687,50.07320621749878,0 14.41377510507448,50.07566133081293,0 14.40951128720742,50.07537273111618,0 14.41054841341896,50.07305590743798,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Finish</name>
|
||||
<styleUrl>#m_ylw-pushpin0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
14.41318302502365,50.05400249489735,0 14.41471506059726,50.05385405063235,0 14.41509370112687,50.05487283052923,0 14.41358101629957,50.05505593846001,0 14.41318302502365,50.05400249489735,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
</Folder>
|
||||
<Folder>
|
||||
<name>Kalfje - Hoop</name>
|
||||
<open>1</open>
|
||||
<Placemark>
|
||||
<name>Start</name>
|
||||
<styleUrl>#m_ylw-pushpin0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
4.894634980284101,52.3241873636367,0 4.895882222031302,52.32412984086649,0 4.895948941317798,52.32437687533162,0 4.894738874909264,52.32446348873298,0 4.894634980284101,52.3241873636367,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Rozenoord</name>
|
||||
<styleUrl>#m_ylw-pushpin0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
4.897729984257948,52.33262092523194,0 4.89915049100132,52.3319113286945,0 4.899970177239785,52.33280796122619,0 4.8987424624178,52.33344193891938,0 4.897729984257948,52.33262092523194,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Willem</name>
|
||||
<styleUrl>#m_ylw-pushpin0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
4.905851388469005,52.33544760540416,0 4.907086749586547,52.33518724070484,0 4.907534397847626,52.33579218770413,0 4.906276375816578,52.33609021548775,0 4.905851388469005,52.33544760540416,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>RIC</name>
|
||||
<styleUrl>#m_ylw-pushpin0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
4.913241097543322,52.34075176199372,0 4.915165311671077,52.34014081049786,0 4.915552301531854,52.34055865906679,0 4.913870849216051,52.34141037275882,0 4.913241097543322,52.34075176199372,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Berlage</name>
|
||||
<styleUrl>#m_ylw-pushpin0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
4.912187508821495,52.34692417428406,0 4.913632470994549,52.34710492136726,0 4.913415380326047,52.34752349771391,0 4.912003822744286,52.34732938928842,0 4.912187508821495,52.34692417428406,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
<Placemark>
|
||||
<name>Finish</name>
|
||||
<styleUrl>#m_ylw-pushpin0</styleUrl>
|
||||
<Polygon>
|
||||
<tessellate>1</tessellate>
|
||||
<outerBoundaryIs>
|
||||
<LinearRing>
|
||||
<coordinates>
|
||||
4.908558247025685,52.35433618476513,0 4.90724093544173,52.35393344489751,0 4.907595629957788,52.35358471533717,0 4.908788523651813,52.35393270379102,0 4.908558247025685,52.35433618476513,0
|
||||
</coordinates>
|
||||
</LinearRing>
|
||||
</outerBoundaryIs>
|
||||
</Polygon>
|
||||
</Placemark>
|
||||
</Folder>
|
||||
</Folder>
|
||||
</Document>
|
||||
</kml>
|
||||
1399
rowers/tests/testdata/colsfromdb.csv
vendored
Normal file
1399
rowers/tests/testdata/colsfromdb.csv
vendored
Normal file
File diff suppressed because it is too large
Load Diff
248
rowers/tests/testdata/empower.csv
vendored
Normal file
248
rowers/tests/testdata/empower.csv
vendored
Normal file
@@ -0,0 +1,248 @@
|
||||
index, lapIdx, Horizontal (meters),Distance (IMP),TimeStamp (sec), Stroke500mPace (sec/500m),GPS Speed,Split (IMP),Speed (IMP), Cadence (stokes/min),Total Strokes,Distance/Stroke (GPS),Distance/Stroke (IMP), HRCur (bpm), Power (watts),catch,slip,finish,wash, AverageDriveForce (lbs),driveenergy, PeakDriveForce (lbs),peakforceangle, latitude, longitude,cum_dist, ElapsedTime (sec), DriveLength (meters), StrokeDistance (meters), DriveTime (ms), DragFactor, StrokeRecoveryTime (ms), AverageBoatSpeed (m/s), AverageDriveForce (N), PeakDriveForce (N), WorkoutState, Stroke Number,originalvelo
|
||||
0,0.0,3.7,0.0,1546781882.0,252.022177952,1.97,0.0,0.0,23.5,1,3.7,0.0,139.0,0.0,11.0,0.0,27.0,0.0,-0.899236098934,0.0,2.0232812226,14.0,49.0731248,17.4591188,3.7,0.0,0,0,0,0,0,1.97,-4.0,9.0,4,0,1.97
|
||||
1,0.0,3.7,0.0,1546781883.9,310.393756651,1.97,0.0,0.0,23.5,1,3.7,0.0,139.0,73.0,-54.0,15.0,42.0,18.0,33.9461627348,233.0,62.4969088759,-8.0,49.0731248,17.4591188,3.7,1.90000009537,0,0,0,0,0,1.66666666667,151.0,278.0,4,1,1.66666666667
|
||||
2,0.0,9.9,0.0,1546781885.8,311.776233743,1.52,0.0,0.0,16.5,2,6.2,0.0,137.0,72.0,-59.0,5.0,42.0,22.0,37.3182981058,258.0,56.6518742328,-27.0,49.0731383,17.4590363,9.9,3.79999995232,0,0,0,0,0,1.52,166.0,252.0,4,2,1.52
|
||||
3,0.0,17.4,0.0,1546781889.8,291.326785417,1.8,0.0,0.0,14.5,3,7.5,0.0,134.0,65.0,-60.0,11.0,40.0,21.0,36.1942529821,256.0,63.6209539996,-15.0,49.073147,17.4589338,17.4,7.79999995232,0,0,0,0,0,1.8,161.0,283.0,4,2,1.8
|
||||
4,0.0,23.0,0.0,1546781893.6,280.448717949,1.8,0.0,0.0,16.0,4,5.6,0.0,133.0,69.0,-63.0,9.0,36.0,16.0,37.99272518,267.0,60.4736276533,-8.0,49.0731593,17.4588594,23.0,11.5999999046,0,0,0,0,0,1.8,169.0,269.0,4,3,1.8
|
||||
5,0.0,32.1,0.0,1546781897.2,264.750378215,1.79,0.0,0.0,16.5,5,9.1,0.0,133.0,86.0,-60.0,7.0,40.0,19.0,39.5663883531,302.0,73.2877420631,-27.0,49.0731625,17.4587341,32.1,15.2000000477,0,0,0,0,0,1.79,176.0,326.0,4,4,1.79
|
||||
6,0.0,42.9,0.0,1546781900.6,229.628657657,2.24,0.0,0.0,17.0,6,10.8,0.0,133.0,89.0,-63.0,7.0,40.0,16.0,39.5663883531,313.0,69.0163705932,-18.0,49.0731564,17.4585859,42.9,18.5999999046,0,0,0,0,0,2.24,176.0,307.0,4,5,2.24
|
||||
7,0.0,51.5,0.0,1546781904.3,203.27564177,2.47,0.0,0.0,17.0,7,8.6,0.0,134.0,90.0,-62.0,10.0,40.0,19.0,42.9385237241,308.0,78.2335406073,-25.0,49.073149,17.4584684,51.5,22.2999999523,0,0,0,0,0,2.47,191.0,348.0,4,6,2.46999999999
|
||||
8,0.0,61.7,0.0,1546781907.8,196.23233909,2.53,0.0,0.0,16.5,8,10.2,0.0,135.0,76.0,-63.0,8.0,39.0,15.0,36.8686800563,284.0,66.5434713211,-3.0,49.073145,17.4583284,61.7,25.7999999523,0,0,0,0,0,2.53,164.0,296.0,4,7,2.53
|
||||
9,0.0,70.7,0.0,1546781911.2,193.755535872,2.59,0.0,0.0,17.5,9,8.9,0.0,135.0,84.0,-63.0,11.0,42.0,25.0,36.1942529821,284.0,71.71407889,-24.0,49.0731419,17.458206,70.7,29.2000000477,0,0,0,0,0,2.59,161.0,319.0,4,8,2.59
|
||||
10,0.0,80.3,0.0,1546781914.8,190.445097399,2.61,0.0,0.0,16.5,10,9.6,0.0,136.0,90.0,-63.0,7.0,40.0,21.0,43.3881417736,327.0,82.5049120772,-28.0,49.0731419,17.4580743,80.3,32.7999999523,0,0,0,0,0,2.61,193.0,367.0,4,9,2.61
|
||||
11,0.0,90.5,0.0,1546781918.6,189.619677105,2.66,0.0,0.0,16.5,11,10.2,0.0,135.0,79.0,-65.0,8.0,40.0,22.0,38.6671522542,299.0,70.5900337663,-26.0,49.0731455,17.4579345,90.5,36.5999999046,0,0,0,0,0,2.66,172.0,314.0,4,10,2.66
|
||||
12,0.0,99.8,0.0,1546781922.3,189.005292148,2.63,0.0,0.0,17.0,12,9.3,0.0,135.0,75.0,-63.0,5.0,38.0,19.0,34.620589809,266.0,63.1713359501,-1.0,49.0731481,17.4578064,99.8,40.2999999523,0,0,0,0,0,2.63,154.0,281.0,4,12,2.63
|
||||
13,0.0,108.2,0.0,1546781925.3,185.61731014,2.68,0.0,0.0,18.0,13,8.4,0.0,136.0,103.0,-63.0,8.0,40.0,21.0,45.1866139714,331.0,82.7297211019,-25.0,49.0731503,17.4576916,108.2,43.2999999523,0,0,0,0,0,2.68,201.0,368.0,4,12,2.68
|
||||
14,0.0,118.6,0.0,1546781928.8,180.654485393,2.79,0.0,0.0,17.5,14,10.4,0.0,136.0,91.0,-62.0,8.0,42.0,20.0,42.4889056746,313.0,73.7373601126,-22.0,49.0731557,17.4575498,118.6,46.7999999523,0,0,0,0,0,2.79,189.0,328.0,4,13,2.79
|
||||
15,0.0,127.9,0.0,1546781932.3,180.13381369,2.78,0.0,0.0,17.5,15,9.3,0.0,136.0,98.0,-64.0,6.0,43.0,22.0,43.6129507983,331.0,79.1327767062,-25.0,49.0731625,17.4574222,127.9,50.2999999523,0,0,0,0,0,2.78,194.0,352.0,4,14,2.78
|
||||
16,0.0,137.9,0.0,1546781935.8,181.837073982,2.73,0.0,0.0,17.5,16,10.0,0.0,136.0,68.0,-62.0,12.0,40.0,21.0,32.8221176111,243.0,62.9465269254,-7.0,49.0731706,17.4572852,137.9,53.7999999523,0,0,0,0,0,2.73,146.0,280.0,4,15,2.73
|
||||
17,0.0,147.0,0.0,1546781939.1,180.897250361,2.77,0.0,0.0,17.5,17,9.0,0.0,136.0,91.0,-62.0,8.0,43.0,24.0,43.3881417736,302.0,75.3110232857,-25.0,49.0731793,17.4571618,147.0,57.0999999046,0,0,0,0,0,2.77,193.0,335.0,4,16,2.77000000001
|
||||
18,0.0,156.5,0.0,1546781942.4,179.009819967,2.8,0.0,0.0,18.0,18,9.5,0.0,136.0,75.0,-63.0,11.0,39.0,17.0,35.2950168832,261.0,61.3728637522,-5.0,49.0731856,17.4570316,156.5,60.4000000954,0,0,0,0,0,2.8,157.0,273.0,4,17,2.80000000001
|
||||
19,0.0,166.0,0.0,1546781945.8,179.046449765,2.79,0.0,0.0,18.0,19,9.5,0.0,137.0,93.0,-62.0,11.0,40.0,21.0,41.1400515262,303.0,76.6598774341,-18.0,49.0731918,17.4569012,166.0,63.7999999523,0,0,0,0,0,2.79,183.0,341.0,4,18,2.79
|
||||
20,0.0,175.2,0.0,1546781949.3,172.66896892,2.79,0.0,0.0,17.0,20,9.2,0.0,137.0,85.0,-61.0,12.0,37.0,18.0,42.0392876252,290.0,77.1094954836,-19.0,49.0731977,17.4567754,175.2,67.2999999523,0,0,0,0,0,2.79,187.0,343.0,4,19,2.79
|
||||
21,0.0,184.7,0.0,1546781952.6,206.294942827,2.82,0.0,0.0,18.0,21,9.5,0.0,137.0,81.0,-63.0,8.0,40.0,16.0,37.5431071305,276.0,64.7449991232,-8.0,49.0732025,17.4566457,184.7,70.5999999046,0,0,0,0,0,2.82,167.0,288.0,4,20,2.82
|
||||
22,0.0,184.7,0.0,1546781955.45,219.344056821,2.82,0.0,0.0,18.0,21,9.5,0.0,137.0,81.0,2.0,8.0,27.0,16.0,-8.54274293987,276.0,0.899236098934,8.0,49.0732025,17.4566457,184.7,73.4500000477,0,0,0,0,0,1.66666666667,-38.0,4.0,4,21,1.66666666667
|
||||
23,0.0,197.8,0.0,1546781958.3,218.613366646,2.74,0.0,0.0,32.0,22,13.1,0.0,137.0,81.0,-12.0,8.0,-3.0,16.0,-1.57366317313,276.0,2.24809024733,-9.0,49.0732089,17.456466,197.8,76.2999999523,0,0,0,0,0,2.74,-7.0,10.0,4,23,2.74
|
||||
24,0.0,202.3,0.0,1546781961.3,206.7091897,2.3,0.0,0.0,9.0,23,4.5,0.0,138.0,63.0,-49.0,11.0,33.0,24.0,26.5274649186,158.0,52.8301208124,-24.0,49.0732191,17.4564069,202.3,79.2999999523,0,0,0,0,0,2.3,118.0,235.0,4,23,2.3
|
||||
25,0.0,209.4,0.0,1546781964.9,263.118328071,1.89,0.0,0.0,15.5,24,7.1,0.0,138.0,50.0,-59.0,23.0,37.0,22.0,25.6282288196,190.0,56.4270652081,-13.0,49.0732446,17.4563168,209.4,82.9000000954,0,0,0,0,0,1.89,114.0,251.0,4,24,1.89
|
||||
26,0.0,209.4,0.0,1546781964.9,283.431409599,1.89,0.0,0.0,15.5,24,7.1,0.0,138.0,50.0,14.0,23.0,18.0,22.0,-2.92251732154,190.0,-0.449618049467,17.0,49.0732446,17.4563168,209.4,82.9000000954,0,0,0,0,0,1.66666666667,-13.0,-2.0,4,24,1.66666666667
|
||||
27,0.0,209.4,0.0,1546781964.9,371.208371633,1.89,0.0,0.0,15.5,24,7.1,0.0,138.0,50.0,19.0,23.0,24.0,22.0,-0.6744270742,190.0,0.6744270742,21.0,49.0732446,17.4563168,209.4,82.9000000954,0,0,0,0,0,1.66666666667,-3.0,3.0,4,24,1.66666666667
|
||||
28,0.0,237.7,0.0,1546781992.0,402.947271471,0.79,0.0,0.0,27.5,25,28.3,0.0,128.0,6.0,-39.0,23.0,14.0,22.0,6.29465269254,30.0,16.6358678303,-22.0,49.0732956,17.4559393,237.7,110.0,0,0,0,0,0,0.79,28.0,74.0,4,37,0.79
|
||||
29,0.0,237.7,0.0,1546781992.0,366.006692694,0.79,0.0,0.0,27.5,25,28.3,0.0,128.0,6.0,13.0,23.0,23.0,22.0,0.0,30.0,1.57366317313,16.0,49.0732956,17.4559393,237.7,110.0,0,0,0,0,0,1.66666666667,0.0,7.0,4,37,1.66666666667
|
||||
30,0.0,237.7,0.0,1546781992.0,281.561729057,0.79,0.0,0.0,27.5,25,28.3,0.0,128.0,26.0,-50.0,7.0,31.0,49.0,19.5583851518,103.0,37.7679161552,-33.0,49.0732956,17.4559393,237.7,110.0,0,0,0,0,0,1.66666666667,87.0,168.0,4,37,1.66666666667
|
||||
31,0.0,237.7,0.0,1546781992.0,332.110323887,0.79,0.0,0.0,27.5,25,28.3,0.0,128.0,53.0,-56.0,9.0,41.0,13.0,39.3415793284,265.0,61.8224818017,-20.0,49.0732956,17.4559393,237.7,110.0,0,0,0,0,0,1.66666666667,175.0,275.0,4,37,1.66666666667
|
||||
32,0.0,268.6,0.0,1546782019.8,330.937972769,1.27,0.0,0.0,12.0,26,30.9,0.0,123.0,85.0,-61.0,5.0,42.0,14.0,52.8301208124,398.0,89.2491828192,-29.0,49.0733344,17.4555205,268.6,137.799999952,0,0,0,0,0,1.27,235.0,397.0,4,42,1.27
|
||||
33,0.0,277.6,0.0,1546782023.7,270.688321732,1.96,0.0,0.0,15.5,27,8.9,0.0,122.0,100.0,-63.0,11.0,42.0,17.0,47.8843222682,367.0,89.9236098934,-22.0,49.073349,17.4553998,277.6,141.700000048,0,0,0,0,0,1.96,213.0,400.0,4,43,1.96
|
||||
34,0.0,286.8,0.0,1546782027.3,208.135109419,2.41,0.0,0.0,16.5,28,9.2,0.0,122.0,91.0,-62.0,8.0,42.0,19.0,44.0625688478,334.0,80.9312489041,-9.0,49.0733622,17.4552756,286.8,145.299999952,0,0,0,0,0,2.41,196.0,360.0,4,44,2.41
|
||||
35,0.0,296.9,0.0,1546782031.1,192.012288786,2.61,0.0,0.0,16.5,29,10.1,0.0,124.0,97.0,-62.0,5.0,45.0,15.0,46.7602771446,360.0,82.2801030525,-5.0,49.0733726,17.4551374,296.9,149.099999905,0,0,0,0,0,2.61,208.0,366.0,4,45,2.61
|
||||
36,0.0,305.9,0.0,1546782034.4,187.748095698,2.64,0.0,0.0,17.0,30,9.0,0.0,124.0,114.0,-62.0,7.0,42.0,18.0,51.7060756887,387.0,92.3965091655,-11.0,49.07338,17.4550146,305.9,152.400000095,0,0,0,0,0,2.64,230.0,411.0,4,46,2.64
|
||||
37,0.0,315.7,0.0,1546782038.2,185.893350329,2.65,0.0,0.0,17.0,31,9.8,0.0,126.0,112.0,-62.0,7.0,44.0,17.0,51.9308847134,404.0,98.4663528333,-24.0,49.07339,17.4548812,315.7,156.200000048,0,0,0,0,0,2.65,231.0,438.0,4,47,2.65
|
||||
38,0.0,323.2,0.0,1546782041.7,218.504182795,2.52,0.0,0.0,17.0,32,7.5,0.0,127.0,119.0,-62.0,7.0,45.0,18.0,54.6285930102,415.0,95.319026487,-22.0,49.0733961,17.4547786,323.2,159.700000048,0,0,0,0,0,2.52,243.0,424.0,4,48,2.52
|
||||
39,0.0,323.2,0.0,1546782045.6,245.464746587,2.52,0.0,0.0,17.0,32,7.5,0.0,127.0,119.0,-3.0,7.0,59.0,18.0,-7.64350684094,415.0,7.64350684094,1.0,49.0733961,17.4547786,323.2,163.599999905,0,0,0,0,0,1.66666666667,-34.0,34.0,4,49,1.66666666667
|
||||
40,0.0,339.9,0.0,1546782049.5,261.819269898,2.21,0.0,0.0,8.0,33,16.7,0.0,131.0,87.0,-57.0,8.0,43.0,15.0,47.6595132435,340.0,80.2568218299,-16.0,49.0734108,17.4545503,339.9,167.5,0,0,0,0,0,2.21,212.0,357.0,4,50,2.21
|
||||
41,0.0,344.1,0.0,1546782051.5,239.332603938,1.95,0.0,0.0,30.5,34,4.2,0.0,132.0,87.0,-57.0,8.0,43.0,15.0,47.6595132435,340.0,80.2568218299,-16.0,49.073411,17.4544927,344.1,169.5,0,0,0,0,0,1.95,212.0,357.0,4,51,1.95
|
||||
42,0.0,347.4,0.0,1546782052.6,226.537216828,2.19,0.0,0.0,38.5,35,3.3,0.0,133.0,108.0,-61.0,7.0,44.0,20.0,51.481266664,362.0,87.4507106213,-22.0,49.073411,17.4544472,347.4,170.599999905,0,0,0,0,0,2.19,229.0,389.0,4,52,2.19
|
||||
43,0.0,357.3,0.0,1546782056.3,196.806117859,2.61,0.0,0.0,17.0,36,9.8,0.0,133.0,81.0,-59.0,21.0,42.0,16.0,35.5198259079,288.0,78.9079676815,-15.0,49.0734072,17.4543125,357.3,174.299999952,0,0,0,0,0,2.61,158.0,351.0,4,53,2.61
|
||||
44,0.0,366.9,0.0,1546782059.7,184.638109306,2.69,0.0,0.0,18.0,37,9.6,0.0,133.0,110.0,-59.0,10.0,42.0,19.0,50.582030565,357.0,92.8461272149,-18.0,49.0734067,17.4541812,366.9,177.700000048,0,0,0,0,0,2.69,225.0,413.0,4,54,2.69
|
||||
45,0.0,376.1,0.0,1546782062.9,183.303655599,2.72,0.0,0.0,18.5,38,9.2,0.0,132.0,105.0,-61.0,7.0,44.0,20.0,48.5587493424,346.0,82.7297211019,-24.0,49.0734053,17.4540551,376.1,180.900000095,0,0,0,0,0,2.72,216.0,368.0,4,55,2.72
|
||||
46,0.0,385.5,0.0,1546782066.3,179.634571957,2.78,0.0,0.0,17.5,39,9.4,0.0,131.0,104.0,-64.0,10.0,43.0,18.0,46.5354681198,365.0,89.0243737945,-17.0,49.0734007,17.4539261,385.5,184.299999952,0,0,0,0,0,2.78,207.0,396.0,4,56,2.78
|
||||
47,0.0,394.8,0.0,1546782069.5,175.087543772,2.86,0.0,0.0,18.0,40,9.3,0.0,131.0,109.0,-63.0,11.0,44.0,17.0,45.8610410456,364.0,89.2491828192,-17.0,49.0733941,17.453799,394.8,187.5,0,0,0,0,0,2.86,204.0,397.0,4,57,2.86
|
||||
48,0.0,405.0,0.0,1546782072.9,171.922585716,2.91,0.0,0.0,18.5,41,10.2,0.0,131.0,122.0,-65.0,9.0,45.0,16.0,50.3572215403,392.0,86.5514745224,-10.0,49.0733851,17.4536597,405.0,190.900000095,0,0,0,0,0,2.91,224.0,385.0,4,58,2.91
|
||||
49,0.0,414.4,0.0,1546782076.1,170.399221032,2.93,0.0,0.0,18.5,42,9.4,0.0,132.0,130.0,-62.0,7.0,42.0,15.0,53.5045478866,406.0,98.0167347838,-18.0,49.0733741,17.4535318,414.4,194.099999905,0,0,0,0,0,2.93,238.0,436.0,4,59,2.93
|
||||
50,0.0,423.4,0.0,1546782079.0,170.266588831,2.94,0.0,0.0,19.5,43,9.0,0.0,133.0,137.0,-64.0,6.0,45.0,15.0,55.9774471586,435.0,100.939252105,-25.0,49.0733624,17.45341,423.4,197.0,0,0,0,0,0,2.94,249.0,449.0,4,60,2.94
|
||||
51,0.0,432.6,0.0,1546782082.3,171.97327044,2.91,0.0,0.0,19.0,44,9.2,0.0,134.0,125.0,-62.0,16.0,43.0,16.0,49.6827944661,390.0,106.109859674,-15.0,49.0733469,17.4532861,432.6,200.299999952,0,0,0,0,0,2.91,221.0,472.0,4,61,2.91
|
||||
52,0.0,441.5,0.0,1546782085.4,175.385848867,2.85,0.0,0.0,19.0,45,9.0,0.0,135.0,123.0,-66.0,9.0,41.0,15.0,50.3572215403,398.0,93.5205542891,-18.0,49.0733265,17.4531672,441.5,203.400000095,0,0,0,0,0,2.85,224.0,416.0,4,62,2.85
|
||||
53,0.0,450.1,0.0,1546782088.5,178.026449644,2.8,0.0,0.0,19.5,46,8.6,0.0,137.0,123.0,-61.0,8.0,45.0,17.0,49.0083673919,377.0,88.7995647697,-20.0,49.0733044,17.453055,450.1,206.5,0,0,0,0,0,2.8,218.0,395.0,4,63,2.80000000001
|
||||
54,0.0,459.5,0.0,1546782091.8,179.874601706,2.79,0.0,0.0,18.5,47,9.4,0.0,139.0,111.0,-63.0,7.0,40.0,19.0,48.7835583672,368.0,92.6213181902,-23.0,49.0732797,17.4529317,459.5,209.799999952,0,0,0,0,0,2.79,217.0,412.0,4,64,2.79
|
||||
55,0.0,468.3,0.0,1546782095.1,181.761528874,2.75,0.0,0.0,18.0,48,8.8,0.0,140.0,123.0,-64.0,8.0,43.0,20.0,54.4037839855,412.0,101.16406113,-20.0,49.0732572,17.4528157,468.3,213.099999905,0,0,0,0,0,2.75,242.0,450.0,4,65,2.75
|
||||
56,0.0,477.6,0.0,1546782098.5,182.863113897,2.73,0.0,0.0,18.5,49,9.3,0.0,141.0,119.0,-63.0,10.0,42.0,16.0,52.6053117876,390.0,100.264825031,-18.0,49.0732319,17.452694,477.6,216.5,0,0,0,0,0,2.73,234.0,446.0,4,66,2.73
|
||||
57,0.0,486.9,0.0,1546782101.7,180.170904972,2.77,0.0,0.0,18.5,50,9.3,0.0,142.0,131.0,-62.0,7.0,43.0,17.0,53.5045478866,421.0,106.784286748,-25.0,49.0732035,17.4525742,486.9,219.700000048,0,0,0,0,0,2.77,238.0,475.0,4,67,2.77000000001
|
||||
58,0.0,496.4,0.0,1546782104.9,175.087543772,2.86,0.0,0.0,18.5,51,9.6,0.0,142.0,123.0,-62.0,6.0,43.0,19.0,49.9076034908,391.0,94.4197903881,-15.0,49.0731742,17.452451,496.4,222.900000095,0,0,0,0,0,2.86,222.0,420.0,4,68,2.86
|
||||
59,0.0,505.6,0.0,1546782107.9,170.798360336,2.93,0.0,0.0,19.5,52,9.2,0.0,142.0,117.0,-63.0,5.0,42.0,14.0,45.4114229962,372.0,92.8461272149,-9.0,49.0731439,17.4523343,505.6,225.900000095,0,0,0,0,0,2.93,202.0,413.0,4,69,2.93
|
||||
60,0.0,515.1,0.0,1546782111.3,169.114804793,2.96,0.0,0.0,19.5,53,9.5,0.0,142.0,122.0,-61.0,8.0,43.0,20.0,47.8843222682,364.0,92.8461272149,-18.0,49.0731111,17.4522142,515.1,229.299999952,0,0,0,0,0,2.96,213.0,413.0,4,70,2.96
|
||||
61,0.0,524.0,0.0,1546782114.4,168.625939487,2.96,0.0,0.0,19.5,54,8.9,0.0,144.0,115.0,-61.0,10.0,44.0,19.0,47.8843222682,361.0,94.4197903881,-16.0,49.0730812,17.4521003,524.0,232.400000095,0,0,0,0,0,2.96,213.0,420.0,4,71,2.96
|
||||
62,0.0,533.2,0.0,1546782117.3,167.352013006,2.98,0.0,0.0,20.0,55,9.2,0.0,145.0,109.0,-62.0,8.0,43.0,21.0,44.736995922,331.0,84.0785752503,-25.0,49.0730525,17.4519826,533.2,235.299999952,0,0,0,0,0,2.98,199.0,374.0,4,72,2.98000000001
|
||||
63,0.0,542.4,0.0,1546782120.3,166.634926681,3.01,0.0,0.0,18.5,56,9.2,0.0,145.0,115.0,-62.0,9.0,43.0,17.0,49.2331764166,376.0,96.2182625859,-20.0,49.0730245,17.4518636,542.4,238.299999952,0,0,0,0,0,3.01,219.0,428.0,4,73,3.00999999999
|
||||
64,0.0,552.4,0.0,1546782123.7,170.13416294,2.95,0.0,0.0,18.0,57,10.0,0.0,145.0,106.0,-60.0,8.0,45.0,20.0,49.6827944661,362.0,94.1949813633,-20.0,49.072999,17.4517329,552.4,241.700000048,0,0,0,0,0,2.95,221.0,419.0,4,74,2.95
|
||||
65,0.0,561.6,0.0,1546782127.1,177.502789329,2.81,0.0,0.0,18.5,58,9.2,0.0,145.0,105.0,-63.0,10.0,39.0,14.0,44.5121868972,358.0,90.3732279429,-10.0,49.0729713,17.451614,561.6,245.099999905,0,0,0,0,0,2.81,198.0,402.0,4,75,2.81000000001
|
||||
66,0.0,570.2,0.0,1546782130.3,182.291666666,2.73,0.0,0.0,18.5,59,8.6,0.0,144.0,117.0,-62.0,8.0,42.0,17.0,50.3572215403,363.0,89.2491828192,-18.0,49.0729389,17.4515068,570.2,248.299999952,0,0,0,0,0,2.73,224.0,397.0,4,76,2.73
|
||||
67,0.0,579.2,0.0,1546782133.5,180.785123967,2.77,0.0,0.0,18.5,60,9.1,0.0,145.0,100.0,-62.0,8.0,41.0,21.0,43.3881417736,329.0,84.9778113493,-23.0,49.0729015,17.4513962,579.2,251.5,0,0,0,0,0,2.77,193.0,378.0,4,77,2.77000000001
|
||||
68,0.0,588.5,0.0,1546782136.7,176.322418136,2.84,0.0,0.0,19.0,61,9.3,0.0,145.0,98.0,-61.0,8.0,42.0,20.0,41.5896695757,310.0,77.7839225578,-26.0,49.0728648,17.4512823,588.5,254.700000048,0,0,0,0,0,2.84,185.0,346.0,4,78,2.84
|
||||
69,0.0,597.3,0.0,1546782139.7,172.057811424,2.9,0.0,0.0,19.5,62,8.8,0.0,145.0,128.0,-63.0,8.0,43.0,20.0,52.1556937382,387.0,95.319026487,-24.0,49.0728289,17.4511749,597.3,257.700000048,0,0,0,0,0,2.9,232.0,424.0,4,79,2.90000000001
|
||||
70,0.0,606.8,0.0,1546782142.9,169.212918198,2.96,0.0,0.0,18.5,63,9.5,0.0,145.0,106.0,-64.0,6.0,42.0,15.0,44.0625688478,353.0,82.7297211019,-5.0,49.0727886,17.45106,606.8,260.900000095,0,0,0,0,0,2.96,196.0,368.0,4,80,2.96
|
||||
71,0.0,616.1,0.0,1546782146.1,168.821146054,2.96,0.0,0.0,19.0,64,9.3,0.0,145.0,118.0,-62.0,7.0,42.0,18.0,48.109131293,374.0,90.1484189181,-23.0,49.0727483,17.4509477,616.1,264.099999905,0,0,0,0,0,2.96,214.0,401.0,4,81,2.96
|
||||
72,0.0,625.8,0.0,1546782149.5,173.181593271,2.9,0.0,0.0,18.0,65,9.6,0.0,145.0,116.0,-61.0,8.0,42.0,15.0,52.3805027629,378.0,90.8228459923,-18.0,49.0727058,17.450833,625.8,267.5,0,0,0,0,0,2.9,233.0,404.0,4,82,2.90000000001
|
||||
73,0.0,634.9,0.0,1546782152.9,180.822483984,2.76,0.0,0.0,18.0,66,9.1,0.0,146.0,111.0,-61.0,8.0,43.0,19.0,51.0316486145,376.0,93.9701723386,-17.0,49.0726665,17.4507231,634.9,270.900000095,0,0,0,0,0,2.76,227.0,418.0,4,83,2.76
|
||||
74,0.0,643.7,0.0,1546782156.3,186.428038777,2.67,0.0,0.0,18.0,67,8.8,0.0,146.0,116.0,-61.0,9.0,43.0,19.0,51.481266664,385.0,98.691161858,-22.0,49.072625,17.45062,643.7,274.299999952,0,0,0,0,0,2.67,229.0,439.0,4,84,2.67
|
||||
75,0.0,652.5,0.0,1546782159.5,184.307530279,2.7,0.0,0.0,18.0,68,8.8,0.0,146.0,124.0,-63.0,7.0,44.0,19.0,54.4037839855,412.0,100.939252105,-19.0,49.072583,17.4505179,652.5,277.5,0,0,0,0,0,2.7,242.0,449.0,4,85,2.7
|
||||
76,0.0,661.8,0.0,1546782162.7,180.915951618,2.78,0.0,0.0,18.0,69,9.2,0.0,146.0,118.0,-64.0,8.0,43.0,15.0,52.3805027629,402.0,92.6213181902,-10.0,49.0725354,17.450414,661.8,280.700000048,0,0,0,0,0,2.78,233.0,412.0,4,86,2.78
|
||||
77,0.0,670.2,0.0,1546782166.1,188.273265196,2.69,0.0,0.0,18.0,70,8.5,0.0,146.0,109.0,-59.0,12.0,43.0,19.0,48.3339403177,372.0,105.210623575,-18.0,49.0724894,17.450321,670.2,284.099999905,0,0,0,0,0,2.69,215.0,468.0,4,87,2.69
|
||||
78,0.0,677.9,0.0,1546782169.5,205.979284369,2.4,0.0,0.0,17.5,71,7.7,0.0,146.0,125.0,-62.0,7.0,45.0,18.0,57.1014922823,439.0,105.885050649,-19.0,49.072446,17.4502395,677.9,287.5,0,0,0,0,0,2.4,254.0,471.0,4,88,2.4
|
||||
79,0.0,685.9,0.0,1546782172.9,216.610966703,2.28,0.0,0.0,18.0,72,8.0,0.0,146.0,123.0,-61.0,10.0,45.0,16.0,53.2797388618,405.0,102.962533328,-16.0,49.0723973,17.4501597,685.9,290.900000095,0,0,0,0,0,2.28,237.0,458.0,4,89,2.28
|
||||
80,0.0,694.2,0.0,1546782176.3,211.992731678,2.38,0.0,0.0,18.0,73,8.4,0.0,147.0,115.0,-62.0,10.0,44.0,16.0,49.9076034908,381.0,96.8926896601,-9.0,49.0723414,17.4500835,694.2,294.299999952,0,0,0,0,0,2.38,222.0,431.0,4,90,2.38000000001
|
||||
81,0.0,701.9,0.0,1546782179.5,208.085612366,2.42,0.0,0.0,18.0,74,7.7,0.0,147.0,110.0,-61.0,9.0,42.0,17.0,49.6827944661,383.0,96.8926896601,-22.0,49.0722844,17.4500237,701.9,297.5,0,0,0,0,0,2.42,221.0,431.0,4,91,2.42
|
||||
82,0.0,710.1,0.0,1546782182.9,209.530651341,2.37,0.0,0.0,18.0,75,8.2,0.0,147.0,132.0,-62.0,9.0,43.0,16.0,57.326301307,424.0,105.210623575,-20.0,49.0722249,17.4499585,710.1,300.900000095,0,0,0,0,0,2.37,255.0,468.0,4,92,2.37
|
||||
83,0.0,718.2,0.0,1546782186.4,207.665836003,2.4,0.0,0.0,17.5,76,8.2,0.0,148.0,109.0,-62.0,8.0,43.0,19.0,50.3572215403,375.0,93.2957452644,-15.0,49.0721656,17.4498923,718.2,304.400000095,0,0,0,0,0,2.4,224.0,415.0,4,93,2.4
|
||||
84,0.0,727.5,0.0,1546782189.9,201.427255985,2.49,0.0,0.0,17.0,77,9.3,0.0,149.0,114.0,-63.0,8.0,43.0,18.0,55.5278291092,403.0,100.264825031,-18.0,49.0720993,17.449815,727.5,307.900000095,0,0,0,0,0,2.49,247.0,446.0,4,94,2.49000000001
|
||||
85,0.0,736.0,0.0,1546782193.3,198.637911464,2.53,0.0,0.0,17.0,78,8.5,0.0,148.0,103.0,-62.0,12.0,43.0,20.0,50.582030565,361.0,98.691161858,-20.0,49.0720396,17.4497418,736.0,311.299999952,0,0,0,0,0,2.53,225.0,439.0,4,95,2.53
|
||||
86,0.0,744.5,0.0,1546782196.7,198.637911464,2.5,0.0,0.0,18.0,79,8.5,0.0,148.0,116.0,-64.0,8.0,43.0,19.0,54.1789749608,393.0,98.2415438085,-25.0,49.0719792,17.4496715,744.5,314.700000048,0,0,0,0,0,2.5,241.0,437.0,4,96,2.5
|
||||
87,0.0,753.4,0.0,1546782200.1,198.031005998,2.53,0.0,0.0,17.0,80,8.9,0.0,149.0,91.0,-61.0,7.0,38.0,11.0,45.1866139714,317.0,74.8614052363,1.0,49.071914,17.4496013,753.4,318.099999905,0,0,0,0,0,2.53,201.0,333.0,4,97,2.53
|
||||
88,0.0,762.6,0.0,1546782203.7,196.939005177,2.55,0.0,0.0,17.0,81,9.2,0.0,149.0,111.0,-63.0,10.0,43.0,18.0,51.481266664,394.0,101.16406113,-21.0,49.0718452,17.4495309,762.6,321.700000048,0,0,0,0,0,2.55,229.0,450.0,4,98,2.54999999999
|
||||
89,0.0,771.7,0.0,1546782207.3,194.639083528,2.55,0.0,0.0,18.0,82,9.1,0.0,148.0,123.0,-64.0,7.0,41.0,15.0,55.5278291092,413.0,95.319026487,-16.0,49.0717776,17.4494599,771.7,325.299999952,0,0,0,0,0,2.55,247.0,424.0,4,99,2.54999999999
|
||||
90,0.0,780.7,0.0,1546782210.4,188.679245283,2.65,0.0,0.0,17.5,83,9.0,0.0,147.0,112.0,-64.0,11.0,41.0,17.0,50.3572215403,382.0,100.040016006,-19.0,49.0717101,17.4493922,780.7,328.400000095,0,0,0,0,0,2.65,224.0,445.0,4,100,2.65
|
||||
91,0.0,790.5,0.0,1546782213.9,182.786714017,2.75,0.0,0.0,18.0,84,9.8,0.0,146.0,126.0,-63.0,9.0,45.0,17.0,53.0549298371,418.0,101.838488204,-20.0,49.0716349,17.4493228,790.5,331.900000095,0,0,0,0,0,2.75,236.0,453.0,4,101,2.75
|
||||
92,0.0,799.8,0.0,1546782217.3,181.365944657,2.75,0.0,0.0,17.5,85,9.3,0.0,147.0,127.0,-65.0,12.0,45.0,16.0,56.2022561834,434.0,109.481995045,-19.0,49.0715618,17.4492615,799.8,335.299999952,0,0,0,0,0,2.75,250.0,487.0,4,102,2.75
|
||||
93,0.0,808.7,0.0,1546782220.5,183.303655599,2.72,0.0,0.0,18.0,86,8.9,0.0,147.0,101.0,-62.0,14.0,40.0,17.0,45.8610410456,338.0,88.3499467203,-23.0,49.0714903,17.4492069,808.7,338.5,0,0,0,0,0,2.72,204.0,393.0,4,103,2.72
|
||||
94,0.0,817.5,0.0,1546782223.9,190.902149013,2.65,0.0,0.0,18.5,87,8.8,0.0,146.0,97.0,-62.0,8.0,42.0,14.0,42.7137146994,346.0,81.6056759783,-1.0,49.0714171,17.4491605,817.5,341.900000095,0,0,0,0,0,2.65,190.0,363.0,4,104,2.65
|
||||
95,0.0,830.6,0.0,1546782229.5,203.986478611,2.44,0.0,0.0,11.0,88,13.1,0.0,145.0,90.0,-60.0,11.0,40.0,21.0,42.0392876252,326.0,94.4197903881,-28.0,49.0713075,17.4490961,830.6,347.5,0,0,0,0,0,2.44,187.0,420.0,4,105,2.44
|
||||
96,0.0,839.1,0.0,1546782232.9,209.706411025,2.35,0.0,0.0,17.5,89,8.5,0.0,145.0,130.0,-64.0,9.0,43.0,17.0,57.1014922823,427.0,105.660241625,-28.0,49.0712359,17.4490537,839.1,350.900000095,0,0,0,0,0,2.35,254.0,470.0,4,106,2.35
|
||||
97,0.0,848.3,0.0,1546782236.3,200.297584983,2.51,0.0,0.0,17.5,90,9.1,0.0,145.0,139.0,-66.0,10.0,45.0,18.0,60.9232457028,470.0,108.357949922,-18.0,49.0711593,17.4490091,848.3,354.299999952,0,0,0,0,0,2.51,271.0,482.0,4,107,2.51
|
||||
98,0.0,857.7,0.0,1546782239.7,190.031490933,2.65,0.0,0.0,17.0,91,9.4,0.0,142.0,104.0,-61.0,12.0,41.0,17.0,47.8843222682,360.0,94.4197903881,-19.0,49.0710799,17.4489643,857.7,357.700000048,0,0,0,0,0,2.65,213.0,420.0,4,108,2.65
|
||||
99,0.0,866.4,0.0,1546782242.9,187.065740246,2.66,0.0,0.0,19.0,92,8.7,0.0,142.0,109.0,-64.0,10.0,41.0,12.0,43.837759823,354.0,85.6522384235,-5.0,49.0710066,17.4489243,866.4,360.900000095,0,0,0,0,0,2.66,195.0,381.0,4,109,2.66
|
||||
100,0.0,874.9,0.0,1546782246.3,188.984881209,2.65,0.0,0.0,18.5,93,8.6,0.0,142.0,125.0,-63.0,8.0,41.0,16.0,54.853402035,396.0,95.7686445365,-21.0,49.0709334,17.4488879,874.9,364.299999952,0,0,0,0,0,2.65,244.0,426.0,4,110,2.65
|
||||
101,0.0,882.0,0.0,1546782249.3,194.314901177,2.58,0.0,0.0,18.5,94,7.0,0.0,142.0,136.0,-65.0,10.0,43.0,16.0,58.4503464307,447.0,108.357949922,-24.0,49.0708735,17.4488573,882.0,367.299999952,0,0,0,0,0,2.58,260.0,482.0,4,111,2.58000000001
|
||||
102,0.0,889.5,0.0,1546782252.6,203.322876728,2.46,0.0,0.0,18.5,95,7.6,0.0,142.0,114.0,-62.0,7.0,44.0,17.0,51.2564576392,380.0,87.2259015966,-7.0,49.0708074,17.448832,889.5,370.599999905,0,0,0,0,0,2.46,228.0,388.0,4,112,2.46
|
||||
103,0.0,898.0,0.0,1546782255.9,208.805631786,2.38,0.0,0.0,19.0,96,8.5,0.0,143.0,131.0,-63.0,7.0,45.0,19.0,55.5278291092,415.0,98.9159708827,-19.0,49.0707327,17.4488074,898.0,373.900000095,0,0,0,0,0,2.38,247.0,440.0,4,113,2.38000000001
|
||||
104,0.0,906.8,0.0,1546782259.1,204.272207307,2.44,0.0,0.0,18.5,97,8.7,0.0,144.0,128.0,-66.0,8.0,44.0,19.0,52.3805027629,423.0,98.691161858,-22.0,49.0706573,17.448774,906.8,377.099999905,0,0,0,0,0,2.44,233.0,439.0,4,114,2.44
|
||||
105,0.0,915.9,0.0,1546782262.3,196.452626852,2.57,0.0,0.0,19.0,98,9.1,0.0,144.0,108.0,-63.0,9.0,41.0,15.0,45.4114229962,347.0,86.3266654977,-17.0,49.0705788,17.4487408,915.9,380.299999952,0,0,0,0,0,2.57,202.0,384.0,4,115,2.57
|
||||
106,0.0,924.8,0.0,1546782265.5,190.569530654,2.61,0.0,0.0,18.5,99,8.9,0.0,144.0,110.0,-62.0,10.0,42.0,18.0,48.109131293,341.0,83.1793391514,-10.0,49.0705009,17.4487107,924.8,383.5,0,0,0,0,0,2.61,214.0,370.0,4,116,2.61
|
||||
107,0.0,934.1,0.0,1546782268.7,184.755067568,2.69,0.0,0.0,18.5,100,9.3,0.0,146.0,106.0,-63.0,10.0,41.0,19.0,45.8610410456,353.0,90.1484189181,-21.0,49.0704196,17.4486806,934.1,386.700000048,0,0,0,0,0,2.69,204.0,401.0,4,117,2.69
|
||||
108,0.0,944.5,0.0,1546782272.3,181.931593721,2.78,0.0,0.0,17.0,101,10.4,0.0,146.0,98.0,-62.0,11.0,42.0,14.0,46.9850861693,341.0,88.1251376955,-10.0,49.0703297,17.4486444,944.5,390.299999952,0,0,0,0,0,2.78,209.0,392.0,4,118,2.78
|
||||
109,0.0,957.6,0.0,1546782277.5,183.688464365,2.66,0.0,0.0,11.5,102,13.2,0.0,146.0,90.0,-53.0,7.0,42.0,17.0,51.7060756887,347.0,92.3965091655,-19.0,49.0702153,17.448599,957.6,395.5,0,0,0,0,0,2.66,230.0,411.0,4,119,2.66
|
||||
110,0.0,965.8,0.0,1546782280.7,216.745107753,2.48,0.0,0.0,19.0,103,8.2,0.0,145.0,116.0,-59.0,4.0,43.0,18.0,47.4347042188,376.0,94.1949813633,-5.0,49.0701445,17.448568,965.8,398.700000048,0,0,0,0,0,2.48,211.0,419.0,4,120,2.48
|
||||
111,0.0,965.8,0.0,1546782280.7,268.762158288,2.48,0.0,0.0,19.0,103,8.2,0.0,145.0,116.0,17.0,4.0,28.0,18.0,-3.14732634627,376.0,-0.6744270742,27.0,49.0701445,17.448568,965.8,398.700000048,0,0,0,0,0,1.66666666667,-14.0,-3.0,4,120,1.66666666667
|
||||
112,0.0,965.8,0.0,1546782280.7,308.67826905,2.48,0.0,0.0,19.0,103,8.2,0.0,145.0,116.0,16.0,4.0,21.0,18.0,-3.59694439574,376.0,-0.6744270742,21.0,49.0701445,17.448568,965.8,398.700000048,0,0,0,0,0,1.66666666667,-16.0,-3.0,4,120,1.66666666667
|
||||
113,0.0,965.8,0.0,1546782280.7,295.441755768,2.48,0.0,0.0,19.0,103,8.2,0.0,145.0,41.0,-44.0,3.0,37.0,22.0,34.8453988337,179.0,54.1789749608,-11.0,49.0701445,17.448568,965.8,398.700000048,0,0,0,0,0,1.66666666667,155.0,241.0,4,120,1.66666666667
|
||||
114,0.0,978.8,0.0,1546782295.7,424.139602521,1.4,0.0,0.0,23.0,104,12.9,0.0,142.0,34.0,-48.0,4.0,36.0,22.0,31.4732634627,174.0,46.0858500704,-26.0,49.0700297,17.4485482,978.8,413.700000048,0,0,0,0,0,1.4,140.0,205.0,4,125,1.4
|
||||
115,0.0,978.9,0.0,1546782299.7,865.051903114,0.3,0.0,0.0,12.5,105,0.1,0.0,141.0,34.0,-48.0,4.0,36.0,22.0,31.4732634627,174.0,46.0858500704,-26.0,49.0700298,17.448565,978.9,417.700000048,0,0,0,0,0,0.3,140.0,205.0,4,126,0.299999999999
|
||||
116,0.0,979.0,0.0,1546782302.3,1995.43899657,0.38,0.0,0.0,18.5,106,0.1,0.0,140.0,38.0,-48.0,4.0,31.0,13.0,31.9228815122,174.0,46.5354681198,-16.0,49.0700292,17.4485737,979.0,420.299999952,0,0,0,0,0,0.38,142.0,207.0,4,127,0.380000000001
|
||||
117,0.0,979.0,0.0,1546782304.9,1134.15424497,0.41,0.0,0.0,21.5,107,0.0,0.0,138.0,99.0,-24.0,2.0,36.0,15.0,43.1633327488,161.0,66.0938532716,-8.0,49.0700377,17.4485847,979.0,422.900000095,0,0,0,0,0,0.41,192.0,294.0,4,128,0.410000000001
|
||||
118,0.0,979.0,0.0,1546782307.1,703.942075623,0.67,0.0,0.0,29.5,108,0.0,0.0,137.0,34.0,-29.0,7.0,32.0,31.0,17.5351039292,84.0,38.2175342047,-12.0,49.0700554,17.448598,979.0,425.099999905,0,0,0,0,0,0.67,78.0,170.0,4,129,0.67
|
||||
119,0.0,979.0,0.0,1546782310.5,495.610308694,1.08,0.0,0.0,19.0,109,0.0,0.0,136.0,0.0,4.0,7.0,9.0,31.0,0.449618049467,0.0,4.27137146994,4.0,49.0700886,17.4486129,979.0,428.5,0,0,0,0,0,1.08,2.0,19.0,4,130,1.08
|
||||
120,0.0,979.0,0.0,1546782314.7,482.89183223,1.09,0.0,0.0,29.5,110,0.0,0.0,133.0,0.0,4.0,7.0,9.0,31.0,0.449618049467,0.0,4.27137146994,4.0,49.0701216,17.4486281,979.0,432.700000048,0,0,0,0,0,1.09,2.0,19.0,4,132,1.09
|
||||
121,0.0,979.0,0.0,1546782315.9,400.091449474,0.98,0.0,0.0,18.5,111,0.0,0.0,133.0,0.0,5.0,7.0,19.0,31.0,1.3488541484,0.0,4.0465624452,5.0,49.0701303,17.4486336,979.0,433.900000095,0,0,0,0,0,0.98,6.0,18.0,4,133,0.979999999999
|
||||
122,0.0,979.0,0.0,1546782317.6,398.602991421,0.98,0.0,0.0,18.5,111,0.0,0.0,133.0,0.0,15.0,7.0,23.0,31.0,-0.6744270742,0.0,3.59694439574,16.0,49.0701303,17.4486336,979.0,435.599999905,0,0,0,0,0,1.66666666667,-3.0,16.0,4,133,1.66666666667
|
||||
123,0.0,980.2,0.0,1546782319.3,413.711583924,0.92,0.0,0.0,15.5,112,1.2,0.0,132.0,90.0,-54.0,3.0,36.0,20.0,44.2873778725,285.0,78.458349632,-27.0,49.0701559,17.4486452,980.2,437.299999952,0,0,0,0,0,0.92,197.0,349.0,4,134,0.919999999999
|
||||
124,0.0,986.9,0.0,1546782322.9,382.179515178,1.32,0.0,0.0,16.5,113,6.7,0.0,131.0,75.0,-61.0,11.0,39.0,16.0,35.2950168832,252.0,62.7217179006,-1.0,49.070216,17.4486666,986.9,440.900000095,0,0,0,0,0,1.32,157.0,279.0,4,135,1.32
|
||||
125,0.0,995.3,0.0,1546782326.3,247.105337476,2.08,0.0,0.0,17.5,114,8.4,0.0,130.0,107.0,-60.0,8.0,40.0,18.0,47.209895194,335.0,84.7530023245,-28.0,49.0702893,17.4486947,995.3,444.299999952,0,0,0,0,0,2.08,210.0,377.0,4,136,2.08
|
||||
126,0.0,1004.7,0.0,1546782329.7,197.20531891,2.55,0.0,0.0,18.0,115,9.4,0.0,129.0,100.0,-62.0,8.0,40.0,18.0,44.736995922,336.0,80.9312489041,-20.0,49.0703715,17.4487249,1004.7,447.700000048,0,0,0,0,0,2.55,199.0,360.0,4,137,2.54999999999
|
||||
127,0.0,1014.4,0.0,1546782333.4,181.912681913,2.74,0.0,0.0,17.5,116,9.6,0.0,130.0,89.0,-61.0,8.0,39.0,18.0,41.364860551,306.0,74.8614052363,-23.0,49.0704561,17.4487538,1014.4,451.400000095,0,0,0,0,0,2.74,184.0,333.0,4,138,2.74
|
||||
128,0.0,1023.2,0.0,1546782336.4,176.198147402,2.83,0.0,0.0,18.0,117,8.8,0.0,132.0,86.0,-65.0,6.0,37.0,15.0,37.99272518,299.0,76.6598774341,-13.0,49.0705336,17.44878,1023.2,454.400000095,0,0,0,0,0,2.83,169.0,341.0,4,139,2.82999999999
|
||||
129,0.0,1033.0,0.0,1546782339.6,172.413793103,2.9,0.0,0.0,18.5,118,9.7,0.0,133.0,103.0,-62.0,8.0,39.0,18.0,43.3881417736,322.0,79.8072037804,-21.0,49.0706186,17.448811,1033.0,457.599999905,0,0,0,0,0,2.9,193.0,355.0,4,140,2.90000000001
|
||||
130,0.0,1043.2,0.0,1546782343.1,170.167250097,2.94,0.0,0.0,18.0,119,10.2,0.0,134.0,107.0,-62.0,8.0,43.0,18.0,46.7602771446,354.0,84.7530023245,-7.0,49.070707,17.4488502,1043.2,461.099999905,0,0,0,0,0,2.94,208.0,377.0,4,141,2.94
|
||||
131,0.0,1052.7,0.0,1546782346.3,169.524363073,2.94,0.0,0.0,18.0,120,9.5,0.0,135.0,91.0,-63.0,11.0,39.0,21.0,40.465624452,304.0,82.0552940277,-22.0,49.070788,17.44889,1052.7,464.299999952,0,0,0,0,0,2.94,180.0,365.0,4,142,2.94
|
||||
132,0.0,1061.8,0.0,1546782349.5,172.328902019,2.91,0.0,0.0,18.5,121,9.1,0.0,135.0,57.0,-62.0,34.0,35.0,18.0,25.4034197949,194.0,59.5743915544,-3.0,49.0708656,17.4489293,1061.8,467.5,0,0,0,0,0,2.91,113.0,265.0,4,143,2.91
|
||||
133,0.0,1069.3,0.0,1546782352.7,184.171753315,2.75,0.0,0.0,19.5,122,7.5,0.0,137.0,110.0,-62.0,9.0,39.0,19.0,42.2640966499,333.0,87.9003286708,-23.0,49.0709313,17.4489551,1069.3,470.700000048,0,0,0,0,0,2.75,188.0,391.0,4,144,2.75
|
||||
134,0.0,1077.0,0.0,1546782356.1,200.734113329,2.46,0.0,0.0,18.5,123,7.7,0.0,137.0,116.0,-64.0,8.0,40.0,18.0,49.4579854414,379.0,89.2491828192,-27.0,49.0709986,17.4489806,1077.0,474.099999905,0,0,0,0,0,2.46,220.0,397.0,4,145,2.46
|
||||
135,0.0,1086.5,0.0,1546782359.3,200.297584983,2.45,0.0,0.0,18.0,124,9.4,0.0,137.0,110.0,-63.0,7.0,44.0,20.0,45.1866139714,364.0,87.4507106213,-22.0,49.0710747,17.4490381,1086.5,477.299999952,0,0,0,0,0,2.45,201.0,389.0,4,146,2.45
|
||||
136,0.0,1097.2,0.0,1546782362.7,183.284457478,2.77,0.0,0.0,19.0,125,10.8,0.0,138.0,94.0,-64.0,9.0,38.0,16.0,38.6671522542,314.0,78.458349632,-2.0,49.0711598,17.4491083,1097.2,480.700000048,0,0,0,0,0,2.77,172.0,349.0,4,147,2.77000000001
|
||||
137,0.0,1106.6,0.0,1546782365.7,171.804437463,2.93,0.0,0.0,18.5,126,9.4,0.0,138.0,122.0,-63.0,9.0,41.0,18.0,51.2564576392,374.0,87.9003286708,-27.0,49.0712324,17.4491733,1106.6,483.700000048,0,0,0,0,0,2.93,228.0,391.0,4,148,2.93
|
||||
138,0.0,1117.3,0.0,1546782369.4,169.114804794,2.93,0.0,0.0,17.5,127,10.7,0.0,139.0,109.0,-64.0,9.0,40.0,16.0,49.2331764166,381.0,88.3499467203,-19.0,49.0713161,17.4492459,1117.3,487.400000095,0,0,0,0,0,2.93,219.0,393.0,4,149,2.93
|
||||
139,0.0,1127.6,0.0,1546782372.5,166.905102527,3.0,0.0,0.0,18.0,128,10.3,0.0,139.0,107.0,-65.0,10.0,40.0,18.0,44.5121868972,365.0,88.574755745,-15.0,49.071396,17.4493171,1127.6,490.5,0,0,0,0,0,3.0,198.0,394.0,4,150,2.99999999999
|
||||
140,0.0,1138.9,0.0,1546782375.9,163.490284006,3.06,0.0,0.0,18.0,129,11.3,0.0,140.0,116.0,-64.0,8.0,40.0,17.0,48.7835583672,382.0,90.8228459923,-31.0,49.0714833,17.4493949,1138.9,493.900000095,0,0,0,0,0,3.06,217.0,404.0,4,151,3.06000000001
|
||||
141,0.0,1149.5,0.0,1546782379.3,162.382852371,3.08,0.0,0.0,18.0,130,10.6,0.0,139.0,105.0,-64.0,11.0,40.0,18.0,43.6129507983,360.0,90.3732279429,-26.0,49.0715661,17.4494673,1149.5,497.299999952,0,0,0,0,0,3.08,194.0,402.0,4,152,3.07999999999
|
||||
142,0.0,1160.2,0.0,1546782382.7,164.303821238,3.05,0.0,0.0,18.0,131,10.7,0.0,140.0,84.0,-64.0,14.0,38.0,14.0,37.7679161552,285.0,72.3885059642,-8.0,49.0716492,17.4495411,1160.2,500.700000048,0,0,0,0,0,3.05,168.0,322.0,4,153,3.04999999999
|
||||
143,0.0,1169.8,0.0,1546782385.9,167.865707434,2.97,0.0,0.0,18.0,132,9.6,0.0,140.0,77.0,-60.0,14.0,42.0,27.0,32.8221176111,258.0,78.2335406073,-22.0,49.0717218,17.4496122,1169.8,503.900000095,0,0,0,0,0,2.97,146.0,348.0,4,154,2.97
|
||||
144,0.0,1179.5,0.0,1546782389.1,171.333463873,2.92,0.0,0.0,18.5,133,9.7,0.0,140.0,56.0,-61.0,31.0,36.0,21.0,24.504183696,191.0,57.7759193565,-8.0,49.0717933,17.4496874,1179.5,507.099999905,0,0,0,0,0,2.92,109.0,257.0,4,155,2.92000000001
|
||||
145,0.0,1188.7,0.0,1546782392.3,173.818037346,2.88,0.0,0.0,19.0,134,9.2,0.0,141.0,105.0,-60.0,9.0,41.0,20.0,44.5121868972,313.0,81.3808669535,-18.0,49.0718568,17.4497684,1188.7,510.299999952,0,0,0,0,0,2.88,198.0,362.0,4,156,2.88
|
||||
146,0.0,1198.5,0.0,1546782395.7,175.175175175,2.85,0.0,0.0,18.0,135,9.8,0.0,141.0,92.0,-61.0,8.0,40.0,20.0,42.7137146994,311.0,81.3808669535,-21.0,49.0719208,17.4498615,1198.5,513.700000048,0,0,0,0,0,2.85,190.0,362.0,4,157,2.85
|
||||
147,0.0,1208.7,0.0,1546782399.3,174.008153525,2.87,0.0,0.0,17.0,136,10.2,0.0,141.0,83.0,-63.0,8.0,40.0,15.0,37.5431071305,295.0,70.814842791,-6.0,49.0719849,17.4499606,1208.7,517.299999952,0,0,0,0,0,2.87,167.0,315.0,4,158,2.86999999999
|
||||
148,0.0,1218.2,0.0,1546782402.5,170.498830865,2.93,0.0,0.0,18.0,137,9.5,0.0,141.0,106.0,-63.0,10.0,41.0,19.0,46.3106590951,348.0,88.574755745,-21.0,49.0720448,17.4500529,1218.2,520.5,0,0,0,0,0,2.93,206.0,394.0,4,159,2.93
|
||||
149,0.0,1229.1,0.0,1546782405.9,168.172208341,2.98,0.0,0.0,17.5,138,10.9,0.0,141.0,77.0,-63.0,11.0,39.0,17.0,34.620589809,269.0,70.3652247416,-5.0,49.0721142,17.4501588,1229.1,523.900000095,0,0,0,0,0,2.98,154.0,313.0,4,160,2.98000000001
|
||||
150,0.0,1239.9,0.0,1546782409.7,170.6651063,2.94,0.0,0.0,15.5,139,10.9,0.0,141.0,65.0,-61.0,15.0,38.0,20.0,34.620589809,254.0,69.9156066921,-13.0,49.0721853,17.4502609,1239.9,527.700000048,0,0,0,0,0,2.94,154.0,311.0,4,161,2.94
|
||||
151,0.0,1249.4,0.0,1546782413.1,172.193250024,2.81,0.0,0.0,18.0,140,9.5,0.0,141.0,85.0,-62.0,11.0,41.0,18.0,39.5663883531,282.0,72.6133149889,-1.0,49.0722456,17.4503531,1249.4,531.099999905,0,0,0,0,0,2.81,176.0,323.0,4,162,2.81000000001
|
||||
152,0.0,1258.8,0.0,1546782416.5,210.184962767,2.71,0.0,0.0,18.5,141,9.4,0.0,141.0,84.0,-62.0,13.0,36.0,15.0,38.6671522542,275.0,75.086214261,-13.0,49.0723019,17.4504484,1258.8,534.5,0,0,0,0,0,2.71,172.0,334.0,4,163,2.71000000001
|
||||
153,0.0,1258.8,0.0,1546782419.2,223.604071724,2.71,0.0,0.0,18.5,141,9.4,0.0,141.0,0.0,11.0,13.0,23.0,15.0,0.449618049467,0.0,4.49618049467,12.0,49.0723019,17.4504484,1258.8,537.200000048,0,0,0,0,0,1.66666666667,2.0,20.0,4,163,1.66666666667
|
||||
154,0.0,1271.9,0.0,1546782421.9,248.015873016,2.57,0.0,0.0,11.0,142,13.1,0.0,140.0,5.0,-53.0,13.0,17.0,15.0,3.372135371,20.0,9.66678806354,-40.0,49.0723852,17.4505758,1271.9,539.900000095,0,0,0,0,0,2.57,15.0,43.0,4,164,2.57
|
||||
155,0.0,1271.9,0.0,1546782421.9,252.98766384,2.57,0.0,0.0,11.0,142,13.1,0.0,140.0,0.0,15.0,13.0,20.0,15.0,0.224809024733,0.0,4.27137146994,15.0,49.0723852,17.4505758,1271.9,539.900000095,0,0,0,0,0,1.66666666667,1.0,19.0,4,164,1.66666666667
|
||||
156,0.0,1271.9,0.0,1546782421.9,314.616168275,2.57,0.0,0.0,11.0,142,13.1,0.0,140.0,0.0,20.0,13.0,27.0,15.0,-0.224809024733,0.0,1.3488541484,20.0,49.0723852,17.4505758,1271.9,539.900000095,0,0,0,0,0,1.66666666667,-1.0,6.0,4,164,1.66666666667
|
||||
157,0.0,1271.9,0.0,1546782421.9,299.281723863,2.57,0.0,0.0,11.0,142,13.1,0.0,140.0,0.0,22.0,13.0,27.0,15.0,-0.224809024733,0.0,1.57366317313,24.0,49.0723852,17.4505758,1271.9,539.900000095,0,0,0,0,0,1.66666666667,-1.0,7.0,4,164,1.66666666667
|
||||
158,0.0,1271.9,0.0,1546782421.9,302.33227757,2.57,0.0,0.0,11.0,142,13.1,0.0,140.0,48.0,-55.0,7.0,32.0,26.0,33.4965446853,197.0,62.2720998512,-22.0,49.0723852,17.4505758,1271.9,539.900000095,0,0,0,0,0,1.66666666667,149.0,277.0,4,164,1.66666666667
|
||||
159,0.0,1294.9,0.0,1546782438.3,312.27694504,1.62,0.0,0.0,30.5,143,23.0,0.0,132.0,48.0,-55.0,7.0,32.0,26.0,33.4965446853,197.0,62.2720998512,-22.0,49.0725246,17.4508084,1294.9,556.299999952,0,0,0,0,0,1.62,149.0,277.0,4,172,1.62
|
||||
160,0.0,1298.6,0.0,1546782439.9,292.838018742,1.63,0.0,0.0,33.5,144,3.7,0.0,131.0,51.0,-59.0,30.0,33.0,16.0,25.8530378444,185.0,60.0240096038,2.0,49.0725444,17.4508496,1298.6,557.900000095,0,0,0,0,0,1.63,115.0,267.0,4,173,1.63
|
||||
161,0.0,1306.5,0.0,1546782443.5,257.466529351,2.02,0.0,0.0,17.0,145,7.8,0.0,129.0,111.0,-60.0,5.0,42.0,17.0,50.1324125156,357.0,81.3808669535,-29.0,49.0725838,17.4509382,1306.5,561.5,0,0,0,0,0,2.02,223.0,362.0,4,174,2.02
|
||||
162,0.0,1315.8,0.0,1546782447.3,219.683655536,2.21,0.0,0.0,15.5,146,9.3,0.0,129.0,90.0,-61.0,9.0,39.0,16.0,47.4347042188,345.0,83.4041481761,-7.0,49.0726277,17.4510476,1315.8,565.299999952,0,0,0,0,0,2.21,211.0,371.0,4,175,2.21
|
||||
163,0.0,1325.7,0.0,1546782450.9,202.49942143,2.53,0.0,0.0,16.5,147,9.9,0.0,128.0,77.0,-63.0,10.0,39.0,14.0,36.1942529821,288.0,72.6133149889,1.0,49.0726736,17.451164,1325.7,568.900000095,0,0,0,0,0,2.53,161.0,323.0,4,176,2.53
|
||||
164,0.0,1331.6,0.0,1546782453.4,195.92476489,2.54,0.0,0.0,32.0,148,5.8,0.0,128.0,77.0,10.0,10.0,18.0,14.0,0.0,288.0,4.0465624452,11.0,49.0727025,17.4512309,1331.6,571.400000095,0,0,0,0,0,2.54,0.0,18.0,4,178,2.54
|
||||
165,0.0,1337.3,0.0,1546782455.5,197.450073339,2.51,0.0,0.0,22.0,149,5.8,0.0,128.0,119.0,-62.0,7.0,41.0,18.0,49.9076034908,359.0,86.3266654977,-28.0,49.0727314,17.4512965,1337.3,573.5,0,0,0,0,0,2.51,222.0,384.0,4,178,2.51
|
||||
166,0.0,1346.8,0.0,1546782459.4,195.990592452,2.57,0.0,0.0,17.0,150,9.5,0.0,130.0,94.0,-64.0,8.0,41.0,18.0,45.6362320209,328.0,73.2877420631,-16.0,49.0727792,17.4514036,1346.8,577.400000095,0,0,0,0,0,2.57,203.0,326.0,4,179,2.57
|
||||
167,0.0,1356.0,0.0,1546782462.6,191.970162352,2.59,0.0,0.0,16.5,151,9.3,0.0,130.0,86.0,-66.0,15.0,39.0,22.0,39.5663883531,323.0,90.8228459923,-23.0,49.0728264,17.4515081,1356.0,580.599999905,0,0,0,0,0,2.59,176.0,404.0,4,180,2.59
|
||||
168,0.0,1365.8,0.0,1546782466.1,188.821752266,2.66,0.0,0.0,16.5,152,9.8,0.0,131.0,102.0,-63.0,9.0,41.0,16.0,47.8843222682,353.0,83.1793391514,-18.0,49.0728765,17.4516178,1365.8,584.099999905,0,0,0,0,0,2.66,213.0,370.0,4,181,2.66
|
||||
169,0.0,1375.7,0.0,1546782469.7,184.482395108,2.7,0.0,0.0,17.0,153,10.0,0.0,132.0,88.0,-61.0,7.0,41.0,21.0,40.6904334768,309.0,75.3110232857,-21.0,49.0729287,17.4517288,1375.7,587.700000048,0,0,0,0,0,2.7,181.0,335.0,4,182,2.7
|
||||
170,0.0,1385.5,0.0,1546782473.1,180.953365732,2.77,0.0,0.0,18.0,154,9.7,0.0,132.0,80.0,-64.0,15.0,40.0,19.0,34.1709717595,269.0,71.2644608405,-11.0,49.072975,17.4518419,1385.5,591.099999905,0,0,0,0,0,2.77,152.0,317.0,4,183,2.77000000001
|
||||
171,0.0,1394.6,0.0,1546782476.3,177.93594306,2.81,0.0,0.0,18.5,155,9.2,0.0,133.0,115.0,-64.0,9.0,40.0,18.0,50.582030565,361.0,89.6988008687,-28.0,49.0730153,17.4519514,1394.6,594.299999952,0,0,0,0,0,2.81,225.0,399.0,4,184,2.81000000001
|
||||
172,0.0,1404.2,0.0,1546782479.5,175.685172171,2.84,0.0,0.0,18.5,156,9.5,0.0,134.0,108.0,-62.0,7.0,39.0,16.0,45.4114229962,360.0,86.3266654977,-27.0,49.0730548,17.4520673,1404.2,597.5,0,0,0,0,0,2.84,202.0,384.0,4,185,2.84
|
||||
173,0.0,1414.3,0.0,1546782482.9,174.025457438,2.88,0.0,0.0,18.0,157,10.1,0.0,135.0,113.0,-63.0,10.0,40.0,17.0,50.3572215403,371.0,88.3499467203,-27.0,49.0730951,17.4521922,1414.3,600.900000095,0,0,0,0,0,2.88,224.0,393.0,4,186,2.88
|
||||
174,0.0,1424.0,0.0,1546782486.4,173.611111111,2.88,0.0,0.0,18.0,158,9.7,0.0,135.0,64.0,-63.0,19.0,36.0,18.0,31.0236454132,214.0,64.2953810738,-1.0,49.0731319,17.4523123,1424.0,604.400000095,0,0,0,0,0,2.88,138.0,286.0,4,187,2.88
|
||||
175,0.0,1432.6,0.0,1546782489.4,174.216027875,2.87,0.0,0.0,19.0,159,8.7,0.0,136.0,92.0,-60.0,10.0,39.0,21.0,41.364860551,287.0,77.7839225578,-23.0,49.0731598,17.4524232,1432.6,607.400000095,0,0,0,0,0,2.87,184.0,346.0,4,188,2.86999999999
|
||||
176,0.0,1442.1,0.0,1546782492.5,172.941990315,2.88,0.0,0.0,18.5,160,9.4,0.0,137.0,106.0,-61.0,9.0,40.0,17.0,46.9850861693,343.0,84.3033842751,-22.0,49.0731835,17.4525474,1442.1,610.5,0,0,0,0,0,2.88,209.0,375.0,4,189,2.88
|
||||
177,0.0,1452.5,0.0,1546782495.9,170.565302144,2.94,0.0,0.0,18.0,161,10.5,0.0,137.0,103.0,-64.0,8.0,41.0,19.0,49.0083673919,354.0,84.5281932998,-26.0,49.0732039,17.4526874,1452.5,613.900000095,0,0,0,0,0,2.94,218.0,376.0,4,190,2.94
|
||||
178,0.0,1463.2,0.0,1546782499.5,169.688742364,2.95,0.0,0.0,16.5,162,10.6,0.0,138.0,91.0,-61.0,8.0,41.0,21.0,43.6129507983,328.0,90.8228459923,-22.0,49.0732228,17.4528302,1463.2,617.5,0,0,0,0,0,2.95,194.0,404.0,4,191,2.95
|
||||
179,0.0,1472.6,0.0,1546782502.7,171.97327044,2.91,0.0,0.0,18.5,163,9.4,0.0,139.0,77.0,-64.0,12.0,38.0,18.0,33.4965446853,268.0,72.8381240137,-3.0,49.0732382,17.452957,1472.6,620.700000048,0,0,0,0,0,2.91,149.0,324.0,4,192,2.91
|
||||
180,0.0,1482.0,0.0,1546782506.1,173.938972269,2.86,0.0,0.0,18.0,164,9.5,0.0,139.0,119.0,-62.0,9.0,41.0,18.0,50.582030565,377.0,93.9701723386,-16.0,49.0732489,17.4530859,1482.0,624.099999905,0,0,0,0,0,2.86,225.0,418.0,4,193,2.86
|
||||
181,0.0,1492.0,0.0,1546782509.5,174.581005587,2.87,0.0,0.0,18.0,165,10.0,0.0,140.0,100.0,-62.0,11.0,39.0,18.0,44.736995922,336.0,87.2259015966,-25.0,49.0732572,17.4532219,1492.0,627.5,0,0,0,0,0,2.87,199.0,388.0,4,194,2.86999999999
|
||||
182,0.0,1501.5,0.0,1546782512.9,177.394830208,2.84,0.0,0.0,17.5,166,9.5,0.0,140.0,95.0,-62.0,8.0,40.0,19.0,43.837759823,330.0,80.7064398793,-22.0,49.0732667,17.4533516,1501.5,630.900000095,0,0,0,0,0,2.84,195.0,359.0,4,195,2.84
|
||||
183,0.0,1510.6,0.0,1546782516.4,180.617194757,2.74,0.0,0.0,17.0,167,9.0,0.0,140.0,107.0,-64.0,10.0,40.0,18.0,50.3572215403,369.0,93.7453633139,-25.0,49.0732739,17.4534752,1510.6,634.400000095,0,0,0,0,0,2.74,224.0,417.0,4,196,2.74
|
||||
184,0.0,1520.6,0.0,1546782519.7,178.826895565,2.79,0.0,0.0,17.5,168,10.0,0.0,140.0,94.0,-64.0,6.0,37.0,18.0,45.8610410456,319.0,75.086214261,-28.0,49.0732821,17.4536123,1520.6,637.700000048,0,0,0,0,0,2.79,204.0,334.0,4,197,2.79
|
||||
185,0.0,1530.4,0.0,1546782523.1,175.12258581,2.88,0.0,0.0,18.5,169,9.8,0.0,140.0,91.0,-65.0,27.0,38.0,12.0,39.7911973778,299.0,87.0010925719,6.0,49.0732865,17.4537461,1530.4,641.099999905,0,0,0,0,0,2.88,177.0,387.0,4,198,2.88
|
||||
186,0.0,1538.7,0.0,1546782526.1,176.251384832,2.83,0.0,0.0,20.5,170,8.4,0.0,140.0,93.0,-63.0,7.0,40.0,16.0,39.5663883531,280.0,65.4194261974,-15.0,49.0732873,17.4538607,1538.7,644.099999905,0,0,0,0,0,2.83,176.0,291.0,4,199,2.82999999999
|
||||
187,0.0,1547.0,0.0,1546782529.1,181.704911224,2.75,0.0,0.0,18.5,171,8.2,0.0,140.0,122.0,-63.0,6.0,41.0,17.0,53.7293569113,389.0,92.3965091655,-25.0,49.0732917,17.4539736,1547.0,647.099999905,0,0,0,0,0,2.75,239.0,411.0,4,200,2.75
|
||||
188,0.0,1561.5,0.0,1546782534.7,187.990117091,2.67,0.0,0.0,11.0,172,14.5,0.0,141.0,94.0,-62.0,5.0,40.0,17.0,49.0083673919,376.0,89.0243737945,-16.0,49.0733018,17.4541724,1561.5,652.700000048,0,0,0,0,0,2.67,218.0,396.0,4,201,2.67
|
||||
189,0.0,1570.8,0.0,1546782538.3,190.673349314,2.6,0.0,0.0,17.5,173,9.2,0.0,141.0,109.0,-64.0,7.0,43.0,22.0,47.209895194,372.0,90.3732279429,-19.0,49.0733095,17.4542988,1570.8,656.299999952,0,0,0,0,0,2.6,210.0,402.0,4,202,2.6
|
||||
190,0.0,1580.2,0.0,1546782541.7,187.56698821,2.67,0.0,0.0,17.5,174,9.4,0.0,141.0,73.0,-63.0,11.0,34.0,15.0,33.4965446853,255.0,67.6675164448,-2.0,49.0733179,17.4544276,1580.2,659.700000048,0,0,0,0,0,2.67,149.0,301.0,4,203,2.67
|
||||
191,0.0,1588.5,0.0,1546782544.7,182.21574344,2.75,0.0,0.0,19.0,175,8.3,0.0,140.0,82.0,-60.0,10.0,37.0,25.0,35.5198259079,252.0,73.0629330384,-28.0,49.0733226,17.454541,1588.5,662.700000048,0,0,0,0,0,2.75,158.0,325.0,4,204,2.75
|
||||
192,0.0,1597.9,0.0,1546782548.1,179.985601152,2.76,0.0,0.0,18.0,176,9.4,0.0,140.0,63.0,-63.0,33.0,35.0,16.0,29.6747912648,211.0,67.44270742,-1.0,49.0733207,17.4546705,1597.9,666.099999905,0,0,0,0,0,2.76,132.0,300.0,4,205,2.76
|
||||
193,0.0,1606.3,0.0,1546782551.5,190.860508234,2.69,0.0,0.0,17.5,177,8.4,0.0,140.0,112.0,-62.0,10.0,42.0,19.0,49.4579854414,372.0,94.4197903881,-25.0,49.0733119,17.4547845,1606.3,669.5,0,0,0,0,0,2.69,220.0,420.0,4,206,2.69
|
||||
194,0.0,1613.9,0.0,1546782555.4,211.454809086,2.32,0.0,0.0,16.5,178,7.6,0.0,139.0,92.0,-62.0,9.0,40.0,19.0,48.3339403177,350.0,85.6522384235,-18.0,49.0733102,17.4548889,1613.9,673.400000095,0,0,0,0,0,2.32,215.0,381.0,4,207,2.32
|
||||
195,0.0,1623.1,0.0,1546782558.7,216.530561742,2.25,0.0,0.0,16.5,179,9.2,0.0,139.0,89.0,-63.0,11.0,40.0,23.0,42.4889056746,317.0,84.0785752503,-20.0,49.0732991,17.4550143,1623.1,676.700000048,0,0,0,0,0,2.25,189.0,374.0,4,208,2.25
|
||||
196,0.0,1632.1,0.0,1546782562.1,200.688073394,2.56,0.0,0.0,17.5,180,9.0,0.0,138.0,90.0,-63.0,12.0,40.0,14.0,40.9152425015,313.0,85.8770474482,-1.0,49.0732865,17.4551358,1632.1,680.099999905,0,0,0,0,0,2.56,182.0,382.0,4,209,2.56
|
||||
197,0.0,1641.4,0.0,1546782565.5,188.781014024,2.64,0.0,0.0,17.5,181,9.2,0.0,138.0,105.0,-63.0,11.0,40.0,17.0,45.1866139714,355.0,89.9236098934,-25.0,49.073271,17.4552603,1641.4,683.5,0,0,0,0,0,2.64,201.0,400.0,4,210,2.64
|
||||
198,0.0,1651.5,0.0,1546782569.1,184.852646033,2.68,0.0,0.0,17.5,182,10.1,0.0,137.0,105.0,-62.0,9.0,42.0,19.0,48.3339403177,353.0,94.6445994128,-19.0,49.0732539,17.4553961,1651.5,687.099999905,0,0,0,0,0,2.68,215.0,421.0,4,211,2.68
|
||||
199,0.0,1660.8,0.0,1546782572.3,182.595993322,2.77,0.0,0.0,18.0,183,9.3,0.0,136.0,86.0,-64.0,6.0,41.0,19.0,35.9694439574,309.0,80.0320128051,-12.0,49.0732389,17.4555219,1660.8,690.299999952,0,0,0,0,0,2.77,160.0,356.0,4,212,2.77000000001
|
||||
200,0.0,1673.2,0.0,1546782576.9,184.385207038,2.71,0.0,0.0,13.0,184,12.4,0.0,136.0,130.0,-64.0,7.0,38.0,15.0,50.8068395898,396.0,98.691161858,-33.0,49.0732179,17.4556888,1673.2,694.900000095,0,0,0,0,0,2.71,226.0,439.0,4,213,2.71000000001
|
||||
201,0.0,1682.8,0.0,1546782580.3,185.00898615,2.67,0.0,0.0,17.5,185,9.6,0.0,136.0,125.0,-65.0,10.0,43.0,18.0,55.0782110597,413.0,100.264825031,-27.0,49.0732012,17.4558178,1682.8,698.299999952,0,0,0,0,0,2.67,245.0,446.0,4,214,2.67
|
||||
202,0.0,1693.2,0.0,1546782583.9,179.671457906,2.8,0.0,0.0,17.0,186,10.5,0.0,136.0,109.0,-65.0,7.0,42.0,18.0,48.3339403177,386.0,92.3965091655,-21.0,49.0731823,17.4559582,1693.2,701.900000095,0,0,0,0,0,2.8,215.0,411.0,4,215,2.80000000001
|
||||
203,0.0,1702.6,0.0,1546782587.1,174.73789316,2.87,0.0,0.0,17.5,187,9.4,0.0,137.0,117.0,-63.0,8.0,42.0,16.0,50.3572215403,396.0,91.0476550171,-23.0,49.0731682,17.4560857,1702.6,705.099999905,0,0,0,0,0,2.87,224.0,405.0,4,216,2.86999999999
|
||||
204,0.0,1712.3,0.0,1546782590.5,175.227796135,2.85,0.0,0.0,17.5,188,9.7,0.0,138.0,94.0,-63.0,6.0,37.0,17.0,41.5896695757,326.0,78.0087315825,-27.0,49.0731523,17.4562168,1712.3,708.5,0,0,0,0,0,2.85,185.0,347.0,4,217,2.85
|
||||
205,0.0,1722.0,0.0,1546782593.9,178.207739307,2.81,0.0,0.0,18.0,189,9.6,0.0,139.0,104.0,-64.0,6.0,41.0,14.0,43.1633327488,355.0,82.7297211019,-6.0,49.0731367,17.4563468,1722.0,711.900000095,0,0,0,0,0,2.81,192.0,368.0,4,218,2.81000000001
|
||||
206,0.0,1730.9,0.0,1546782597.4,178.918311011,2.78,0.0,0.0,19.0,190,8.9,0.0,140.0,126.0,-64.0,10.0,43.0,17.0,51.9308847134,397.0,95.7686445365,-21.0,49.0731222,17.456467,1730.9,715.400000095,0,0,0,0,0,2.78,231.0,426.0,4,219,2.78
|
||||
207,0.0,1740.4,0.0,1546782600.5,175.897075083,2.84,0.0,0.0,17.5,191,9.5,0.0,141.0,116.0,-64.0,10.0,44.0,19.0,52.3805027629,392.0,98.0167347838,-23.0,49.0731058,17.4565947,1740.4,718.5,0,0,0,0,0,2.84,233.0,436.0,4,220,2.84
|
||||
208,0.0,1750.4,0.0,1546782603.9,173.852573018,2.9,0.0,0.0,18.0,192,10.0,0.0,141.0,109.0,-64.0,10.0,43.0,16.0,46.3106590951,374.0,85.6522384235,-19.0,49.0730894,17.4567297,1750.4,721.900000095,0,0,0,0,0,2.9,206.0,381.0,4,221,2.90000000001
|
||||
209,0.0,1759.8,0.0,1546782607.3,175.368273374,2.84,0.0,0.0,18.5,193,9.4,0.0,142.0,105.0,-63.0,16.0,42.0,20.0,41.5896695757,342.0,93.7453633139,-22.0,49.073079,17.4568581,1759.8,725.299999952,0,0,0,0,0,2.84,185.0,417.0,4,222,2.84
|
||||
210,0.0,1768.9,0.0,1546782610.5,176.500252143,2.82,0.0,0.0,18.5,194,9.1,0.0,142.0,119.0,-64.0,10.0,42.0,18.0,49.2331764166,380.0,91.946891116,-25.0,49.0730725,17.4569824,1768.9,728.5,0,0,0,0,0,2.82,219.0,409.0,4,223,2.82
|
||||
211,0.0,1778.9,0.0,1546782613.9,175.52657974,2.87,0.0,0.0,18.0,195,10.0,0.0,142.0,95.0,-65.0,15.0,42.0,17.0,39.7911973778,326.0,86.1018564729,-5.0,49.0730694,17.4571193,1778.9,731.900000095,0,0,0,0,0,2.87,177.0,383.0,4,224,2.86999999999
|
||||
212,0.0,1787.7,0.0,1546782616.9,172.924901186,2.87,0.0,0.0,18.5,196,8.8,0.0,142.0,125.0,-64.0,6.0,43.0,19.0,50.3572215403,394.0,96.8926896601,-27.0,49.0730676,17.4572398,1787.7,734.900000095,0,0,0,0,0,2.87,224.0,431.0,4,225,2.86999999999
|
||||
213,0.0,1798.2,0.0,1546782620.3,169.787523043,2.95,0.0,0.0,19.0,197,10.4,0.0,142.0,104.0,-62.0,12.0,43.0,16.0,41.1400515262,332.0,86.1018564729,-5.0,49.0730675,17.457383,1798.2,738.299999952,0,0,0,0,0,2.95,183.0,383.0,4,226,2.95
|
||||
214,0.0,1807.6,0.0,1546782623.5,168.188370976,2.99,0.0,0.0,19.0,198,9.5,0.0,142.0,107.0,-65.0,13.0,42.0,21.0,45.6362320209,344.0,88.7995647697,-23.0,49.0730681,17.4575127,1807.6,741.5,0,0,0,0,0,2.99,203.0,395.0,4,227,2.98999999999
|
||||
215,0.0,1817.2,0.0,1546782626.7,169.754583374,2.93,0.0,0.0,18.5,199,9.6,0.0,142.0,94.0,-65.0,6.0,40.0,15.0,40.0160064026,320.0,75.9854503599,-4.0,49.0730709,17.4576442,1817.2,744.700000048,0,0,0,0,0,2.93,178.0,338.0,4,228,2.93
|
||||
216,0.0,1826.7,0.0,1546782629.9,171.922585716,2.91,0.0,0.0,18.5,200,9.5,0.0,142.0,112.0,-62.0,12.0,44.0,21.0,46.5354681198,349.0,89.9236098934,-25.0,49.0730756,17.4577745,1826.7,747.900000095,0,0,0,0,0,2.91,207.0,400.0,4,229,2.91
|
||||
217,0.0,1838.6,0.0,1546782633.9,173.576671295,2.89,0.0,0.0,14.5,201,11.8,0.0,142.0,70.0,-64.0,6.0,37.0,14.0,36.6438710316,297.0,72.8381240137,-6.0,49.0730843,17.4579365,1838.6,751.900000095,0,0,0,0,0,2.89,163.0,324.0,4,230,2.89
|
||||
218,0.0,1847.6,0.0,1546782637.1,174.912543728,2.85,0.0,0.0,19.5,202,9.0,0.0,142.0,116.0,-63.0,8.0,41.0,20.0,47.6595132435,346.0,87.4507106213,-23.0,49.0730938,17.4580594,1847.6,755.099999905,0,0,0,0,0,2.85,212.0,389.0,4,231,2.85
|
||||
219,0.0,1857.2,0.0,1546782640.3,172.993277975,2.88,0.0,0.0,18.5,203,9.6,0.0,143.0,113.0,-65.0,10.0,42.0,17.0,47.209895194,372.0,90.3732279429,-12.0,49.0731049,17.45819,1857.2,758.299999952,0,0,0,0,0,2.88,210.0,402.0,4,232,2.88
|
||||
220,0.0,1866.9,0.0,1546782643.5,169.180201083,2.97,0.0,0.0,18.5,204,9.7,0.0,143.0,101.0,-65.0,5.0,42.0,16.0,41.1400515262,335.0,78.458349632,-12.0,49.0731154,17.4583217,1866.9,761.5,0,0,0,0,0,2.97,183.0,349.0,4,233,2.97
|
||||
221,0.0,1876.3,0.0,1546782646.7,166.413084823,2.99,0.0,0.0,19.5,205,9.5,0.0,143.0,109.0,-63.0,5.0,39.0,19.0,42.0392876252,337.0,85.202620374,-28.0,49.0731258,17.4584504,1876.3,764.700000048,0,0,0,0,0,2.99,187.0,379.0,4,234,2.98999999999
|
||||
222,0.0,1885.9,0.0,1546782649.9,169.540786669,2.98,0.0,0.0,19.0,206,9.6,0.0,143.0,63.0,-64.0,9.0,35.0,19.0,27.4267010175,209.0,58.225537406,-2.0,49.0731333,17.458581,1885.9,767.900000095,0,0,0,0,0,2.98,122.0,259.0,4,235,2.98000000001
|
||||
223,0.0,1893.5,0.0,1546782652.9,177.07173935,2.81,0.0,0.0,19.0,207,7.6,0.0,144.0,103.0,-63.0,10.0,39.0,20.0,41.5896695757,310.0,82.9545301267,-30.0,49.0731349,17.4586852,1893.5,770.900000095,0,0,0,0,0,2.81,185.0,369.0,4,236,2.81000000001
|
||||
224,0.0,1903.3,0.0,1546782656.3,177.035912999,2.71,0.0,0.0,18.5,208,9.8,0.0,144.0,73.0,-64.0,13.0,36.0,19.0,33.0469266358,247.0,74.1869781621,-11.0,49.0731439,17.4588188,1903.3,774.299999952,0,0,0,0,0,2.71,147.0,330.0,4,237,2.71000000001
|
||||
225,0.0,1913.0,0.0,1546782659.5,210.665703623,2.75,0.0,0.0,19.0,209,9.7,0.0,144.0,20.0,-62.0,13.0,14.0,19.0,12.8141144098,64.0,24.2793746712,-22.0,49.0731381,17.4589521,1913.0,777.5,0,0,0,0,0,2.75,57.0,108.0,4,238,2.75
|
||||
226,0.0,1913.0,0.0,1546782661.5,227.292406269,2.75,0.0,0.0,19.0,209,9.7,0.0,144.0,20.0,5.0,13.0,14.0,19.0,-0.899236098934,64.0,1.79847219787,6.0,49.0731381,17.4589521,1913.0,779.5,0,0,0,0,0,1.66666666667,-4.0,8.0,4,239,1.66666666667
|
||||
227,0.0,1922.9,0.0,1546782663.5,218.914185639,2.59,0.0,0.0,14.5,210,9.9,0.0,143.0,116.0,-60.0,14.0,41.0,19.0,43.837759823,318.0,85.4274293987,-24.0,49.0731198,17.4590849,1922.9,781.5,0,0,0,0,0,2.59,195.0,380.0,4,239,2.59
|
||||
228,0.0,1932.0,0.0,1546782667.1,218.395107949,2.43,0.0,0.0,17.5,211,9.1,0.0,143.0,80.0,-65.0,7.0,32.0,14.0,36.1942529821,279.0,70.1404157168,-10.0,49.0730953,17.4592039,1932.0,785.099999905,0,0,0,0,0,2.43,161.0,312.0,4,240,2.43000000001
|
||||
229,0.0,1932.0,0.0,1546782669.75,245.052277819,2.43,0.0,0.0,17.5,211,9.1,0.0,143.0,0.0,1.0,7.0,16.0,14.0,0.224809024733,0.0,4.27137146994,4.0,49.0730953,17.4592039,1932.0,787.75,0,0,0,0,0,1.66666666667,1.0,19.0,4,241,1.66666666667
|
||||
230,0.0,1944.3,0.0,1546782672.4,230.748945148,2.42,0.0,0.0,11.5,212,12.3,0.0,142.0,102.0,-61.0,7.0,40.0,21.0,39.7911973778,309.0,77.7839225578,-22.0,49.0730708,17.4593679,1944.3,790.400000095,0,0,0,0,0,2.42,177.0,346.0,4,242,2.42
|
||||
231,0.0,1953.5,0.0,1546782675.7,198.908842919,2.45,0.0,0.0,17.0,213,9.2,0.0,142.0,68.0,-61.0,9.0,38.0,17.0,32.1476905369,238.0,61.597672777,-12.0,49.0730525,17.4594902,1953.5,793.700000048,0,0,0,0,0,2.45,143.0,274.0,4,243,2.45
|
||||
232,0.0,1962.2,0.0,1546782679.3,202.49942143,2.47,0.0,0.0,17.0,214,8.8,0.0,140.0,87.0,-63.0,8.0,43.0,23.0,38.6671522542,312.0,78.9079676815,-26.0,49.0730352,17.459608,1962.2,797.299999952,0,0,0,0,0,2.47,172.0,351.0,4,244,2.46999999999
|
||||
233,0.0,1971.2,0.0,1546782682.9,200.274662394,2.45,0.0,0.0,16.0,215,8.9,0.0,138.0,54.0,-59.0,17.0,35.0,17.0,26.977082968,199.0,52.8301208124,-4.0,49.0730205,17.459728,1971.2,800.900000095,0,0,0,0,0,2.45,120.0,235.0,4,245,2.45
|
||||
234,0.0,1979.4,0.0,1546782686.5,226.449275362,2.37,0.0,0.0,16.5,216,8.3,0.0,137.0,61.0,-60.0,9.0,35.0,26.0,31.0236454132,218.0,62.2720998512,-30.0,49.0730083,17.4598398,1979.4,804.5,0,0,0,0,0,2.37,138.0,277.0,4,246,2.37
|
||||
235,0.0,1979.4,0.0,1546782686.5,272.063014976,2.37,0.0,0.0,16.5,216,8.3,0.0,137.0,61.0,16.0,9.0,28.0,26.0,-0.899236098934,218.0,0.6744270742,22.0,49.0730083,17.4598398,1979.4,804.5,0,0,0,0,0,1.66666666667,-4.0,3.0,4,246,1.66666666667
|
||||
236,0.0,1979.4,0.0,1546782686.5,304.277269039,2.37,0.0,0.0,16.5,216,8.3,0.0,137.0,29.0,-55.0,35.0,30.0,33.0,20.4576212507,118.0,34.1709717595,-10.0,49.0730083,17.4598398,1979.4,804.5,0,0,0,0,0,1.66666666667,91.0,152.0,4,246,1.66666666667
|
||||
237,0.0,2004.1,0.0,1546782702.6,316.226960607,1.7,0.0,0.0,25.5,217,24.6,0.0,133.0,29.0,-55.0,35.0,30.0,33.0,20.4576212507,118.0,34.1709717595,-10.0,49.0729655,17.4601713,2004.1,820.599999905,0,0,0,0,0,1.7,91.0,152.0,4,252,1.7
|
||||
238,0.0,2006.2,0.0,1546782703.9,325.9452412,1.37,0.0,0.0,32.0,218,2.1,0.0,132.0,52.0,-56.0,8.0,37.0,27.0,31.248454438,196.0,54.853402035,-17.0,49.0729604,17.4601995,2006.2,821.900000095,0,0,0,0,0,1.37,139.0,244.0,4,253,1.37
|
||||
239,0.0,2006.2,0.0,1546782703.9,320.082916718,1.37,0.0,0.0,32.0,218,2.1,0.0,132.0,52.0,5.0,8.0,18.0,27.0,-1.57366317313,196.0,2.24809024733,6.0,49.0729604,17.4601995,2006.2,821.900000095,0,0,0,0,0,1.66666666667,-7.0,10.0,4,253,1.66666666667
|
||||
240,0.0,2006.2,0.0,1546782703.9,286.119134558,1.37,0.0,0.0,32.0,218,2.1,0.0,132.0,52.0,17.0,8.0,22.0,27.0,-1.57366317313,196.0,0.0,21.0,49.0729604,17.4601995,2006.2,821.900000095,0,0,0,0,0,1.66666666667,-7.0,0.0,4,253,1.66666666667
|
||||
241,0.0,2006.2,0.0,1546782703.9,324.534833405,1.37,0.0,0.0,32.0,218,2.1,0.0,132.0,52.0,22.0,8.0,29.0,27.0,-1.12404512367,196.0,0.6744270742,22.0,49.0729604,17.4601995,2006.2,821.900000095,0,0,0,0,0,1.66666666667,-5.0,3.0,4,253,1.66666666667
|
||||
242,0.0,2024.5,0.0,1546782719.5,470.051034112,1.02,0.0,0.0,40.0,219,18.3,0.0,130.0,52.0,3.0,8.0,11.0,27.0,-0.224809024733,196.0,3.14732634627,6.0,49.0729153,17.4604413,2024.5,837.5,0,0,0,0,0,1.02,-1.0,14.0,4,264,1.02
|
||||
243,0.0,2026.7,0.0,1546782722.9,949.538795442,0.55,0.0,0.0,69.0,220,2.2,0.0,128.0,52.0,3.0,8.0,11.0,27.0,-0.224809024733,196.0,3.14732634627,6.0,49.0729099,17.4604706,2026.7,840.900000095,0,0,0,0,0,0.55,-1.0,14.0,4,267,0.55
|
||||
244,0.0,2027.7,0.0,1546782724.3,619.907899398,0.57,0.0,0.0,15.0,221,0.9,0.0,128.0,20.0,-47.0,8.0,8.0,27.0,16.860676855,62.0,29.0003641906,-36.0,49.0729063,17.4604824,2027.7,842.299999952,0,0,0,0,0,0.57,75.0,129.0,4,268,0.57
|
||||
245,0.0,2027.7,0.0,1546782724.3,331.355718253,0.57,0.0,0.0,15.0,221,0.9,0.0,128.0,20.0,8.0,8.0,19.0,27.0,-1.12404512367,62.0,1.3488541484,11.0,49.0729063,17.4604824,2027.7,842.299999952,0,0,0,0,0,1.66666666667,-5.0,6.0,4,268,1.66666666667
|
||||
246,0.0,2027.7,0.0,1546782724.3,293.06687507,0.57,0.0,0.0,15.0,221,0.9,0.0,128.0,20.0,13.0,8.0,22.0,27.0,-0.6744270742,62.0,0.899236098934,14.0,49.0729063,17.4604824,2027.7,842.299999952,0,0,0,0,0,1.66666666667,-3.0,4.0,4,268,1.66666666667
|
||||
|
215
rowers/tests/testdata/fake_empowerdata.csv
vendored
Normal file
215
rowers/tests/testdata/fake_empowerdata.csv
vendored
Normal file
@@ -0,0 +1,215 @@
|
||||
,distance,finish,workoutid,peakforceangle,averageforce,wash,peakforce,workoutstate,spm,slip,catch,driveenergy
|
||||
1,3.7,41.2571428571,3275,-11.6571428571,151.0,17.5428571429,278.0,4,22.7285714286,11.2857142857,-51.1428571429,224.942857143
|
||||
2,9.9,43.1142857143,3275,-21.5142857143,166.0,22.6857142857,252.0,4,17.6571428571,10.5714285714,-63.2857142857,270.085714286
|
||||
3,17.4,39.1428571429,3275,-16.2857142857,161.0,20.0571428571,283.0,4,14.7571428571,8.25714285714,-61.2,258.485714286
|
||||
4,23.0,37.8857142857,3275,-14.4285714286,169.0,18.2285714286,269.0,4,15.5285714286,9.51428571429,-61.2857142857,272.057142857
|
||||
5,32.1,38.6285714286,3275,-18.6,176.0,16.7714285714,326.0,4,16.6285714286,7.08571428571,-61.8857142857,297.2
|
||||
6,42.9,40.4285714286,3275,-25.6285714286,176.0,18.1428571429,307.0,4,16.9571428571,7.77142857143,-61.6285714286,313.942857143
|
||||
7,51.5,39.4857142857,3275,-14.9714285714,191.0,16.0857142857,348.0,4,16.8285714286,8.45714285714,-62.7714285714,304.057142857
|
||||
8,61.7,40.2,3275,-14.3142857143,164.0,19.2,296.0,4,16.9714285714,9.88571428571,-62.6571428571,286.057142857
|
||||
9,70.7,40.6285714286,3275,-17.9142857143,161.0,20.9714285714,319.0,4,16.9428571429,8.94285714286,-62.9142857143,295.4
|
||||
10,80.3,40.9428571429,3275,-30.4,193.0,23.4,367.0,4,16.8,8.8,-63.6857142857,311.571428571
|
||||
11,90.5,39.1428571429,3275,-18.3714285714,172.0,20.4571428571,314.0,4,16.4571428571,6.37142857143,-63.9714285714,295.828571429
|
||||
12,99.8,38.8571428571,3275,-13.6857142857,154.0,20.4571428571,281.0,4,17.1714285714,6.62857142857,-63.7714285714,290.342857143
|
||||
13,108.2,39.7428571429,3275,-15.6571428571,201.0,19.8,368.0,4,17.6571428571,7.14285714286,-62.4,305.285714286
|
||||
14,118.6,42.1714285714,3275,-27.1428571429,189.0,21.0285714286,328.0,4,17.7142857143,7.22857142857,-62.9428571429,335.371428571
|
||||
15,127.9,41.8857142857,3275,-17.8,194.0,20.8857142857,352.0,4,17.4571428571,8.4,-62.8857142857,297.142857143
|
||||
16,137.9,41.9714285714,3275,-18.2285714286,146.0,22.8,280.0,4,17.4571428571,9.0,-62.6,285.857142857
|
||||
17,147.0,40.8571428571,3275,-12.5714285714,193.0,21.0,335.0,4,17.6285714286,10.3142857143,-62.1714285714,265.142857143
|
||||
18,156.5,40.8,3275,-14.9428571429,157.0,20.3428571429,273.0,4,17.9571428571,9.8,-62.5714285714,288.514285714
|
||||
19,166.0,38.3714285714,3275,-14.1428571429,183.0,18.7714285714,341.0,4,17.7,11.8571428571,-61.9142857143,286.542857143
|
||||
20,175.2,39.7428571429,3275,-18.4,187.0,18.6,343.0,4,17.5142857143,10.7142857143,-67.2571428571,293.342857143
|
||||
21,184.7,38.2,3275,-5.34285714286,167.0,16.2571428571,288.0,4,16.4571428571,9.11428571429,-44.4857142857,278.485714286
|
||||
24,202.3,23.8285714286,3275,-21.3428571429,118.0,21.4285714286,235.0,4,17.7857142857,13.3142857143,-49.5142857143,196.571428571
|
||||
25,209.4,33.6571428571,3275,-9.74285714286,114.0,23.2,251.0,4,11.8571428571,20.1714285714,-41.2571428571,171.657142857
|
||||
30,237.7,32.2,3275,-13.0285714286,86.9999999999,32.7142857143,168.0,4,28.8285714286,11.9714285714,-30.4571428571,114.485714286
|
||||
31,237.7,39.3714285714,3275,-30.4571428571,175.0,24.5714285714,275.0,4,23.2142857143,5.57142857143,-60.9714285714,266.457142857
|
||||
32,268.6,42.6,3275,-24.8857142857,235.0,11.2571428571,397.0,4,16.8,8.0,-60.8285714286,372.542857143
|
||||
33,277.6,41.8285714286,3275,-21.5714285714,213.0,17.1714285714,400.0,4,13.5285714286,8.6,-62.6571428571,375.657142857
|
||||
34,286.8,43.0285714286,3275,-10.2,196.0,17.4571428571,360.0,4,16.5,8.34285714286,-62.4285714286,344.2
|
||||
35,296.9,43.2857142857,3275,-5.34285714286,208.0,17.0571428571,366.0,4,16.7142857143,6.02857142857,-61.9142857143,355.971428571
|
||||
36,305.9,43.4571428571,3275,-12.6285714286,230.0,16.5428571429,411.0,4,16.8714285714,6.22857142857,-62.0,385.714285714
|
||||
37,315.7,42.2857142857,3275,-22.6285714286,231.0,17.7714285714,438.0,4,17.0428571429,7.17142857143,-67.0571428571,404.771428571
|
||||
38,323.2,49.8857142857,3275,-16.2571428571,243.0,17.9142857143,424.0,4,17.7714285714,6.91428571429,-42.2,420.057142857
|
||||
40,339.9,48.2285714286,3275,-9.14285714286,212.0,15.3428571429,357.0,4,15.4142857143,7.82857142857,-37.7142857143,357.4
|
||||
41,344.1,42.0571428571,3275,-19.6,212.0,16.3714285714,357.0,4,27.8428571429,6.62857142857,-62.8285714286,345.571428571
|
||||
42,347.4,43.2285714286,3275,-18.4,229.0,17.4285714286,389.0,4,32.7571428571,11.8,-59.4571428571,331.4
|
||||
43,357.3,42.4285714286,3275,-17.5714285714,158.0,18.1428571429,351.0,4,23.4285714286,14.7428571429,-59.6857142857,327.6
|
||||
44,366.9,42.4285714286,3275,-18.7714285714,225.0,18.3142857143,413.0,4,16.1142857143,13.0,-59.0857142857,328.457142857
|
||||
45,376.1,43.1428571429,3275,-20.9142857143,216.0,19.5714285714,368.0,4,18.1571428571,7.51428571429,-61.3428571429,359.714285714
|
||||
46,385.5,43.6,3275,-19.9142857143,207.0,18.4285714286,396.0,4,17.8857142857,9.4,-62.9714285714,356.514285714
|
||||
47,394.8,44.1714285714,3275,-13.9142857143,204.0,16.9142857143,397.0,4,17.9142857143,10.6571428571,-64.2857142857,371.885714286
|
||||
48,405.0,43.8,3275,-13.2571428571,224.0,15.9142857143,385.0,4,18.3285714286,9.17142857143,-63.4571428571,385.828571429
|
||||
49,414.4,43.8,3275,-18.0,238.0,15.0857142857,436.0,4,18.8428571429,6.22857142857,-63.6285714286,416.114285714
|
||||
50,423.4,43.6285714286,3275,-21.0571428571,249.0,15.2571428571,448.999999999,4,19.1142857143,9.25714285714,-62.3714285714,416.485714286
|
||||
51,432.6,42.9142857143,3275,-18.7714285714,221.0,15.3142857143,471.999999999,4,19.1714285714,11.6285714286,-64.1428571429,407.914285714
|
||||
52,441.5,42.8,3275,-16.6285714286,224.0,15.6857142857,416.0,4,19.1714285714,11.4857142857,-63.3428571429,387.457142857
|
||||
53,450.1,42.2571428571,3275,-20.7714285714,218.0,16.8285714286,395.0,4,19.1571428571,7.31428571429,-63.0571428571,377.0
|
||||
54,459.5,42.4857142857,3275,-21.8,217.0,19.2571428571,412.0,4,18.6285714286,7.25714285714,-62.4,381.714285714
|
||||
55,468.3,41.4571428571,3275,-19.9142857143,242.0,18.8,450.0,4,18.1714285714,8.42857142857,-63.7428571429,391.6
|
||||
56,477.6,42.7714285714,3275,-20.9142857143,234.0,17.2,445.999999999,4,18.3285714286,8.88571428571,-63.0857142857,409.971428571
|
||||
57,486.9,42.7428571429,3275,-20.9714285714,238.0,17.3428571429,474.999999998,4,18.4571428571,7.77142857143,-62.0857142857,405.057142857
|
||||
58,496.4,42.7428571429,3275,-15.8571428571,222.0,16.7714285714,420.0,4,18.7571428571,5.48571428571,-62.3428571429,397.171428571
|
||||
59,505.6,42.4285714286,3275,-12.1714285714,202.0,17.0857142857,413.0,4,19.2428571429,5.77142857143,-62.2285714286,372.514285714
|
||||
60,515.1,43.0,3275,-13.8857142857,213.0,17.6,413.0,4,19.5428571429,7.82857142857,-61.5142857143,366.228571429
|
||||
61,524.0,43.5714285714,3275,-20.0285714286,213.0,20.6285714286,420.0,4,19.7571428571,9.14285714286,-61.0857142857,349.514285714
|
||||
62,533.2,43.1714285714,3275,-21.2285714286,199.0,19.1142857143,374.0,4,19.5285714286,9.02857142857,-61.9142857143,351.228571429
|
||||
63,542.4,43.9428571429,3275,-22.9142857143,219.0,19.4857142857,428.0,4,18.7571428571,8.14285714286,-61.3142857143,358.6
|
||||
64,552.4,42.6857142857,3275,-16.3142857143,221.0,17.0857142857,419.0,4,18.1285714286,9.02857142857,-61.3714285714,368.0
|
||||
65,561.6,41.5714285714,3275,-14.2,198.0,16.2285714286,402.0,4,18.3285714286,8.88571428571,-61.8,362.028571429
|
||||
66,570.2,40.3714285714,3275,-16.1142857143,224.0,16.8285714286,397.0,4,18.5,8.68571428571,-62.6,354.257142857
|
||||
67,579.2,41.6857142857,3275,-23.3428571429,193.0,19.9714285714,378.0,4,18.5857142857,7.82857142857,-61.4857142857,326.685714286
|
||||
68,588.5,42.0,3275,-26.7714285714,185.0,21.0285714286,346.0,4,19.0857142857,8.17142857143,-61.6857142857,334.685714286
|
||||
69,597.3,42.5714285714,3275,-18.3428571429,232.0,18.3714285714,424.0,4,19.1142857143,7.4,-62.8285714286,355.028571429
|
||||
70,606.8,42.3428571429,3275,-14.7714285714,196.0,17.3142857143,368.0,4,19.0142857143,6.68571428571,-63.4857142857,373.4
|
||||
71,616.1,41.8285714286,3275,-15.5428571429,214.0,15.6857142857,401.0,4,18.5285714286,6.82857142857,-62.3428571429,366.885714286
|
||||
72,625.8,42.2571428571,3275,-20.1428571429,233.0,17.0571428571,404.0,4,18.3,7.74285714286,-61.0857142857,377.485714286
|
||||
73,634.9,42.6571428571,3275,-18.3714285714,227.0,17.7142857143,418.0,4,17.9142857143,8.51428571429,-60.7428571429,376.857142857
|
||||
74,643.7,43.4285714286,3275,-20.6285714286,229.0,19.6857142857,439.0,4,18.0,8.14285714286,-61.4285714286,390.314285714
|
||||
75,652.5,43.4857142857,3275,-17.2,242.0,17.6285714286,448.999999999,4,18.0,7.51428571429,-63.1714285714,405.828571429
|
||||
76,661.8,43.1714285714,3275,-14.0285714286,233.0,17.1428571429,412.0,4,18.0428571429,9.02857142857,-62.3714285714,393.428571429
|
||||
77,670.2,43.4285714286,3275,-15.6857142857,215.0,17.5428571429,467.999999999,4,17.8285714286,9.51428571429,-61.2285714286,399.0
|
||||
78,677.9,44.5714285714,3275,-19.2571428571,254.0,18.0857142857,470.999999998,4,17.7571428571,9.4,-60.4571428571,412.514285714
|
||||
79,685.9,45.0857142857,3275,-13.9428571429,237.0,16.3428571429,458.0,4,17.8285714286,8.88571428571,-61.8571428571,413.142857143
|
||||
80,694.2,43.6571428571,3275,-14.0571428571,222.0,16.1714285714,431.0,4,18.0428571429,10.0,-61.3142857143,381.257142857
|
||||
81,701.9,42.6857142857,3275,-17.9714285714,221.0,16.2285714286,431.0,4,18.0428571429,9.34285714286,-61.6,395.171428571
|
||||
82,710.1,42.5714285714,3275,-20.0857142857,255.0,17.2,467.999999999,4,17.9142857143,8.65714285714,-61.5714285714,398.628571429
|
||||
83,718.2,43.0857142857,3275,-16.7142857143,224.0,17.7142857143,415.0,4,17.5,7.91428571429,-62.4285714286,401.914285714
|
||||
84,727.5,43.0,3275,-16.8857142857,247.0,19.1142857143,445.999999999,4,17.0,9.28571428571,-62.3142857143,378.057142857
|
||||
85,736.0,43.4285714286,3275,-23.2571428571,225.0,19.8285714286,439.0,4,17.3,10.0285714286,-63.1142857143,388.942857143
|
||||
86,744.5,41.2857142857,3275,-15.3142857143,241.0,16.7714285714,437.0,4,17.4857142857,8.85714285714,-62.4571428571,355.028571429
|
||||
87,753.4,40.7428571429,3275,-12.2,201.0,15.0285714286,333.0,4,17.2571428571,7.94285714286,-62.3714285714,357.457142857
|
||||
88,762.6,40.7714285714,3275,-11.5714285714,229.0,14.5714285714,450.0,4,17.2142857143,8.02857142857,-62.4857142857,375.228571429
|
||||
89,771.7,41.6,3275,-19.8571428571,247.0,16.8857142857,424.0,4,17.5714285714,9.22857142857,-64.0,403.657142857
|
||||
90,780.7,41.8571428571,3275,-18.1428571429,224.0,16.3142857143,444.999999998,4,17.8857142857,8.94285714286,-63.6571428571,399.485714286
|
||||
91,790.5,44.4,3275,-19.4,236.0,16.8285714286,452.999999999,4,17.6571428571,10.4571428571,-64.0285714286,418.428571429
|
||||
92,799.8,43.8857142857,3275,-22.2571428571,250.0,16.7714285714,486.999999999,4,17.7571428571,12.0857142857,-63.6285714286,407.6
|
||||
93,808.7,41.9714285714,3275,-13.9142857143,204.0,15.2857142857,393.0,4,18.6,11.9428571429,-63.1142857143,367.828571429
|
||||
94,817.5,40.2857142857,3275,-13.9428571429,190.0,17.0,363.0,4,15.9285714286,10.6571428571,-60.8857142857,321.914285714
|
||||
95,830.6,41.2857142857,3275,-20.0285714286,187.0,17.8285714286,420.0,4,14.6428571429,9.11428571429,-61.3714285714,354.114285714
|
||||
96,839.1,42.9142857143,3275,-27.6571428571,254.0,18.9714285714,470.000000001,4,15.2285714286,9.85714285714,-63.7428571429,419.8
|
||||
97,848.3,43.7142857143,3275,-22.0285714286,271.0,17.5714285714,482.000000002,4,17.7571428571,10.2571428571,-64.2857142857,439.828571429
|
||||
98,857.7,42.2,3275,-12.9142857143,213.0,15.7142857143,420.0,4,17.6857142857,11.2285714286,-63.3142857143,386.828571429
|
||||
99,866.4,40.4857142857,3275,-12.5428571429,195.0,14.2285714286,381.0,4,18.3142857143,10.0,-62.3714285714,352.542857143
|
||||
100,874.9,41.4285714286,3275,-17.9142857143,244.0,14.4571428571,426.0,4,18.8,9.11428571429,-64.2857142857,403.542857143
|
||||
101,882.0,42.6571428571,3275,-19.2,260.0,16.4285714286,482.000000002,4,18.4142857143,8.54285714286,-63.5428571429,417.257142857
|
||||
102,889.5,44.2571428571,3275,-14.4571428571,228.0,17.2571428571,388.0,4,18.6714285714,7.85714285714,-62.9428571429,409.914285714
|
||||
103,898.0,44.8285714286,3275,-15.6571428571,247.0,18.9142857143,440.0,4,18.7,6.91428571429,-63.5142857143,408.828571429
|
||||
104,906.8,43.4857142857,3275,-21.5714285714,233.0,17.8857142857,439.0,4,18.8428571429,7.91428571429,-64.6285714286,404.914285714
|
||||
105,915.9,42.0285714286,3275,-15.8,202.0,16.7142857143,384.0,4,18.7,9.08571428571,-63.6857142857,364.657142857
|
||||
106,924.8,41.1428571429,3275,-15.1428571429,214.0,17.5714285714,370.0,4,18.8,9.74285714286,-62.3428571429,340.142857143
|
||||
107,934.1,41.6,3275,-13.9714285714,204.0,17.4571428571,401.0,4,18.5428571429,10.6857142857,-63.1714285714,345.8
|
||||
108,944.5,41.5714285714,3275,-17.2857142857,209.0,16.0571428571,392.0,4,15.3285714286,9.97142857143,-59.5142857143,344.171428571
|
||||
109,957.6,43.6285714286,3275,-14.8857142857,230.0,16.0571428571,411.0,4,14.7142857143,7.34285714286,-63.2857142857,351.885714286
|
||||
110,965.8,39.4857142857,3275,-0.628571428571,211.0,18.0,419.0,4,16.6,4.42857142857,-37.0571428571,369.057142857
|
||||
114,978.8,38.0571428571,3275,-25.7428571429,140.0,23.1142857143,205.0,4,18.7571428571,3.65714285714,-52.1142857143,158.4
|
||||
115,978.9,34.2,3275,-25.4,140.0,19.5142857143,205.0,4,16.8285714286,4.25714285714,-50.4,174.685714286
|
||||
116,979.0,33.9142857143,3275,-16.1714285714,142.0,14.4571428571,207.0,4,16.1428571429,3.05714285714,-41.4,177.257142857
|
||||
117,979.0,35.2285714286,3275,-11.6,192.0,17.8285714286,294.0,4,24.2,3.8,-34.2857142857,151.742857143
|
||||
123,980.2,33.6857142857,3275,-6.0,197.0,21.6285714286,349.0,4,16.4428571429,6.34285714286,-37.2857142857,196.114285714
|
||||
124,986.9,39.6,3275,-19.0,157.0,16.6,279.0,4,16.2,7.82857142857,-64.6857142857,306.171428571
|
||||
125,995.3,40.0857142857,3275,-16.5142857143,210.0,17.1428571429,377.0,4,17.5,9.45714285714,-61.4571428571,313.657142857
|
||||
126,1004.7,40.0,3275,-26.0,199.0,18.4285714286,360.0,4,17.7857142857,7.91428571429,-60.8,335.742857143
|
||||
127,1014.4,38.5714285714,3275,-18.2857142857,184.0,16.9714285714,333.0,4,17.7571428571,7.31428571429,-62.7142857143,310.028571429
|
||||
128,1023.2,37.6,3275,-19.0857142857,169.0,16.5428571429,341.0,4,18.0,7.02857142857,-63.1142857143,301.4
|
||||
129,1033.0,39.6857142857,3275,-13.2,193.0,16.7142857143,355.0,4,18.2857142857,7.05714285714,-63.0285714286,328.0
|
||||
130,1043.2,41.4571428571,3275,-16.7714285714,208.0,19.2857142857,377.0,4,18.1285714286,6.97142857143,-62.0857142857,344.314285714
|
||||
131,1052.7,39.0,3275,-10.3428571429,180.0,19.3714285714,365.0,4,18.0,18.2857142857,-62.4857142857,279.4
|
||||
132,1061.8,36.6285714286,3275,-13.9714285714,113.0,19.3714285714,265.0,4,18.7142857143,22.0,-62.1714285714,249.8
|
||||
133,1069.3,37.5428571429,3275,-17.6857142857,188.0,18.0571428571,391.0,4,19.0714285714,17.2285714286,-62.5142857143,300.942857143
|
||||
134,1077.0,41.6285714286,3275,-28.1142857143,220.0,19.2,397.0,4,18.6285714286,5.68571428571,-63.1428571429,379.514285714
|
||||
135,1086.5,41.2571428571,3275,-16.3428571429,201.0,18.2,389.0,4,18.3428571429,7.68571428571,-63.7714285714,353.8
|
||||
136,1097.2,40.7428571429,3275,-13.8285714286,172.0,17.8857142857,349.0,4,18.6571428571,8.4,-63.3142857143,340.4
|
||||
137,1106.6,39.4571428571,3275,-17.1428571429,228.0,16.4571428571,391.0,4,18.4142857143,9.08571428571,-63.5142857143,357.457142857
|
||||
138,1117.3,40.5142857143,3275,-20.8,219.0,17.2857142857,393.0,4,17.8428571429,9.42857142857,-64.0,378.771428571
|
||||
139,1127.6,39.9142857143,3275,-19.8857142857,198.0,16.9714285714,394.0,4,17.7857142857,8.97142857143,-64.5714285714,375.971428571
|
||||
140,1138.9,40.1714285714,3275,-26.8,217.0,18.0285714286,404.0,4,18.0428571429,9.11428571429,-64.3428571429,377.028571429
|
||||
141,1149.5,39.1428571429,3275,-22.8285714286,194.0,15.5142857143,402.0,4,18.0,10.8285714286,-64.2571428571,350.142857143
|
||||
142,1160.2,40.0571428571,3275,-17.0,168.0,18.9714285714,322.0,4,17.9571428571,12.0285714286,-62.8857142857,301.2
|
||||
143,1169.8,38.8285714286,3275,-12.4,146.0,21.8571428571,348.0,4,18.0857142857,20.5142857143,-61.3714285714,230.828571429
|
||||
144,1179.5,39.2571428571,3275,-15.1142857143,109.0,23.4,257.0,4,18.5857142857,21.0571428571,-60.0571428571,237.457142857
|
||||
145,1188.7,38.9428571429,3275,-16.2857142857,198.0,20.1714285714,362.0,4,18.7428571429,15.8571428571,-60.4285714286,276.742857143
|
||||
146,1198.5,40.6,3275,-15.9428571429,190.0,18.2857142857,362.0,4,17.9571428571,6.2,-61.1714285714,313.314285714
|
||||
147,1208.7,40.3428571429,3275,-15.3428571429,167.0,17.4857142857,315.0,4,17.4714285714,8.34285714286,-62.5714285714,319.342857143
|
||||
148,1218.2,40.3142857143,3275,-11.0571428571,206.0,16.7714285714,394.0,4,17.7,9.4,-63.3428571429,313.971428571
|
||||
149,1229.1,39.0857142857,3275,-13.4857142857,154.0,18.8,313.0,4,16.9857142857,12.2857142857,-62.4,287.6
|
||||
150,1239.9,39.2857142857,3275,-5.45714285714,154.0,18.8,311.0,4,16.5714285714,12.8571428571,-61.7714285714,258.885714286
|
||||
151,1249.4,39.9714285714,3275,-10.0,176.0,18.0,323.0,4,17.3142857143,12.8857142857,-67.8285714286,295.285714286
|
||||
152,1258.8,34.7142857143,3275,2.0,172.0,15.6,334.0,4,19.2285714286,12.1428571429,-37.8285714286,206.771428571
|
||||
158,1271.9,30.6285714286,3275,-11.8857142857,149.0,24.0285714286,277.0,4,15.7571428571,6.57142857143,-34.6857142857,147.371428571
|
||||
159,1294.9,31.9142857143,3275,-17.1142857143,149.0,24.2857142857,277.0,4,27.6714285714,14.5428571429,-62.5428571429,196.057142857
|
||||
160,1298.6,35.3142857143,3275,-14.0285714286,115.0,18.9142857143,267.0,4,30.2857142857,17.3142857143,-58.1428571429,233.342857143
|
||||
161,1306.5,39.0,3275,-14.0,223.0,15.8,362.0,4,21.0285714286,14.3428571429,-60.1714285714,313.542857143
|
||||
162,1315.8,42.3428571429,3275,-14.1142857143,211.0,15.8285714286,371.0,4,13.4,6.08571428571,-67.6,348.171428571
|
||||
163,1325.7,31.3714285714,3275,6.74285714286,161.0,14.0857142857,323.0,4,20.9571428571,10.3428571429,-37.6285714286,295.542857143
|
||||
165,1337.3,33.4571428571,3275,-13.4285714286,222.0,16.6285714286,384.0,4,24.6571428571,7.42857142857,-37.5714285714,333.2
|
||||
166,1346.8,42.2857142857,3275,-24.6571428571,203.0,19.8857142857,326.0,4,17.3,9.8,-70.4285714286,338.2
|
||||
167,1356.0,40.0285714286,3275,-18.6285714286,176.0,19.0,404.0,4,16.1571428571,11.9142857143,-65.0571428571,333.114285714
|
||||
168,1365.8,40.4,3275,-21.5142857143,213.0,19.3428571429,370.0,4,16.5,9.94285714286,-63.1714285714,336.971428571
|
||||
169,1375.7,40.9142857143,3275,-15.7714285714,181.0,18.7714285714,335.0,4,17.0857142857,9.57142857143,-62.0285714286,304.714285714
|
||||
170,1385.5,40.3428571429,3275,-18.2857142857,152.0,19.8571428571,317.0,4,17.9142857143,11.4,-63.2285714286,299.257142857
|
||||
171,1394.6,39.5714285714,3275,-22.5142857143,225.0,17.4857142857,399.0,4,18.5,10.4571428571,-63.6571428571,332.714285714
|
||||
172,1404.2,39.8571428571,3275,-30.9428571429,202.0,16.6,384.0,4,18.4142857143,7.0,-62.7714285714,384.428571429
|
||||
173,1414.3,38.3714285714,3275,-18.3428571429,224.0,16.5714285714,393.0,4,18.0428571429,12.1428571429,-62.8285714286,321.457142857
|
||||
174,1424.0,37.8,3275,-13.4285714286,138.0,18.9428571429,286.0,4,18.2571428571,14.7142857143,-62.2285714286,269.285714286
|
||||
175,1432.6,38.0571428571,3275,-14.5142857143,184.0,19.1142857143,346.0,4,18.6571428571,12.9142857143,-60.7714285714,268.228571429
|
||||
176,1442.1,40.2571428571,3275,-25.5142857143,209.0,18.6285714286,375.0,4,18.7142857143,8.22857142857,-61.5142857143,339.914285714
|
||||
177,1452.5,41.0857142857,3275,-25.4857142857,218.0,18.9142857143,376.0,4,17.5285714286,7.82857142857,-62.2857142857,354.428571429
|
||||
178,1463.2,40.0571428571,3275,-17.3714285714,194.0,19.8857142857,404.0,4,17.4,9.2,-62.9714285714,310.857142857
|
||||
179,1472.6,39.7142857143,3275,-10.1142857143,149.0,18.9428571429,324.0,4,17.7285714286,10.0285714286,-62.4571428571,312.742857143
|
||||
180,1482.0,39.3714285714,3275,-13.6,225.0,17.6571428571,418.0,4,18.3428571429,10.8857142857,-62.7714285714,333.8
|
||||
181,1492.0,40.0285714286,3275,-22.7714285714,199.0,18.3428571429,388.0,4,17.8714285714,9.28571428571,-61.6571428571,351.0
|
||||
182,1501.5,39.8285714286,3275,-24.0571428571,195.0,18.4857142857,359.0,4,17.4571428571,9.8,-62.5142857143,342.342857143
|
||||
183,1510.6,39.2285714286,3275,-27.6571428571,224.0,18.8571428571,417.0,4,17.1285714286,6.4,-63.4,347.314285714
|
||||
184,1520.6,37.8571428571,3275,-16.9428571429,204.0,16.0285714286,334.0,4,17.4142857143,14.3142857143,-64.6,331.685714286
|
||||
185,1530.4,37.9142857143,3275,-7.54285714286,177.0,14.4857142857,387.0,4,18.9714285714,16.2,-64.2285714286,285.628571429
|
||||
186,1538.7,39.9142857143,3275,-10.0285714286,176.0,14.7142857143,291.0,4,20.2,13.7714285714,-63.6857142857,312.314285714
|
||||
187,1547.0,40.4,3275,-21.6571428571,239.0,16.6571428571,411.0,4,16.7,4.11428571429,-62.4,356.342857143
|
||||
188,1561.5,41.8857142857,3275,-21.4,218.0,18.9714285714,396.0,4,14.4285714286,5.34285714286,-62.8571428571,397.685714286
|
||||
189,1570.8,39.5714285714,3275,-10.8571428571,210.0,18.0571428571,402.0,4,15.0571428571,7.51428571429,-63.4,342.085714286
|
||||
190,1580.2,37.5142857143,3275,-15.6285714286,149.0,20.5714285714,301.0,4,18.5285714286,7.91428571429,-62.4,287.485714286
|
||||
191,1588.5,34.3428571429,3275,-10.8571428571,158.0,19.2571428571,325.0,4,18.4,18.4857142857,-61.5428571429,218.4
|
||||
192,1597.9,37.7428571429,3275,-16.9428571429,132.0,19.9428571429,300.0,4,18.3428571429,21.1714285714,-61.7142857143,264.571428571
|
||||
193,1606.3,39.5142857143,3275,-14.5428571429,220.0,17.1142857143,420.0,4,17.2857142857,17.4571428571,-62.4285714286,324.257142857
|
||||
194,1613.9,41.1142857143,3275,-24.0,215.0,21.0571428571,381.0,4,16.6285714286,7.71428571429,-62.1714285714,361.314285714
|
||||
195,1623.1,39.8285714286,3275,-11.9428571429,189.0,19.4,374.0,4,16.6714285714,10.7428571429,-62.7428571429,318.971428571
|
||||
196,1632.1,39.8285714286,3275,-12.7428571429,182.0,17.2571428571,382.0,4,17.2428571429,11.8285714286,-63.1714285714,322.171428571
|
||||
197,1641.4,40.6,3275,-16.2571428571,201.0,15.9714285714,400.0,4,17.5428571429,11.0857142857,-62.5714285714,347.114285714
|
||||
198,1651.5,41.4857142857,3275,-19.0,215.0,19.0857142857,421.0,4,18.0571428571,8.57142857143,-62.7714285714,338.342857143
|
||||
199,1660.8,40.2285714286,3275,-19.2,160.0,17.8857142857,356.0,4,16.2,6.6,-63.3142857143,341.057142857
|
||||
200,1673.2,40.0571428571,3275,-25.9714285714,226.0,16.8,439.0,4,15.5285714286,7.51428571429,-64.4285714286,376.542857143
|
||||
201,1682.8,41.2,3275,-28.6285714286,245.0,17.0571428571,445.999999999,4,15.7428571429,8.45714285714,-64.9142857143,408.285714286
|
||||
202,1693.2,43.1142857143,3275,-22.2,215.0,17.6571428571,411.0,4,17.6428571429,8.45714285714,-64.5714285714,402.971428571
|
||||
203,1702.6,40.2857142857,3275,-24.8,224.0,17.0285714286,405.0,4,17.2857142857,6.97142857143,-63.4285714286,370.628571429
|
||||
204,1712.3,39.1428571429,3275,-19.4571428571,185.0,15.5428571429,347.0,4,17.5857142857,6.25714285714,-63.0857142857,348.714285714
|
||||
205,1722.0,39.9714285714,3275,-15.4285714286,192.0,15.4571428571,368.0,4,18.2571428571,6.85714285714,-63.7428571429,352.771428571
|
||||
206,1730.9,43.1714285714,3275,-16.2,231.0,16.7428571429,426.0,4,18.3571428571,8.97142857143,-64.0857142857,388.942857143
|
||||
207,1740.4,43.7428571429,3275,-22.4857142857,233.0,17.6285714286,436.0,4,18.0571428571,9.82857142857,-64.0857142857,395.0
|
||||
208,1750.4,43.0857142857,3275,-20.7142857143,206.0,18.1428571429,381.0,4,17.8714285714,12.0571428571,-63.6571428571,366.714285714
|
||||
209,1759.8,42.1714285714,3275,-23.3714285714,185.0,18.2857142857,417.0,4,18.4571428571,12.4857142857,-63.4285714286,363.085714286
|
||||
210,1768.9,41.8285714286,3275,-17.4571428571,219.0,18.4285714286,409.0,4,18.3714285714,14.1142857143,-64.0,347.771428571
|
||||
211,1778.9,42.2571428571,3275,-17.9428571429,177.0,17.8571428571,383.0,4,18.2142857143,10.3714285714,-64.7428571429,365.942857143
|
||||
212,1787.7,42.8285714286,3275,-12.4285714286,224.0,17.2,431.0,4,18.4571428571,10.2,-63.5714285714,354.914285714
|
||||
213,1798.2,43.0,3275,-18.8,183.0,18.7428571429,383.0,4,18.9571428571,10.5428571429,-63.2,358.914285714
|
||||
214,1807.6,41.4,3275,-9.8,203.0,17.4,395.0,4,18.9142857143,10.9428571429,-64.3142857143,326.942857143
|
||||
215,1817.2,42.0571428571,3275,-17.4571428571,178.0,19.1142857143,338.0,4,18.9714285714,9.94285714286,-64.3142857143,339.114285714
|
||||
216,1826.7,40.6571428571,3275,-11.6285714286,207.0,16.6285714286,400.0,4,17.0,8.14285714286,-63.3714285714,321.914285714
|
||||
217,1838.6,40.0857142857,3275,-18.0,163.0,18.1142857143,324.0,4,16.9,8.4,-62.8,323.228571429
|
||||
218,1847.6,39.6285714286,3275,-14.1714285714,212.0,17.1714285714,389.0,4,17.6142857143,7.91428571429,-63.9428571429,338.8
|
||||
219,1857.2,42.3428571429,3275,-14.9142857143,210.0,17.7714285714,402.0,4,19.1,8.37142857143,-64.5714285714,359.828571429
|
||||
220,1866.9,41.6571428571,3275,-17.4,183.0,16.7714285714,349.0,4,18.7142857143,6.11428571429,-64.5714285714,358.228571429
|
||||
221,1876.3,38.4,3275,-14.8,187.0,18.0571428571,379.0,4,19.1142857143,5.51428571429,-63.8571428571,291.742857143
|
||||
222,1885.9,37.0571428571,3275,-18.8857142857,122.0,19.6,259.0,4,19.2571428571,7.97142857143,-63.2285714286,273.457142857
|
||||
223,1893.5,38.7428571429,3275,-14.7428571429,185.0,19.4857142857,369.0,4,18.7857142857,10.8571428571,-63.7714285714,272.542857143
|
||||
224,1903.3,31.4571428571,3275,-23.5142857143,147.0,19.3428571429,330.0,4,18.7571428571,12.3142857143,-68.8857142857,224.8
|
||||
227,1922.9,33.1142857143,3275,-11.4857142857,195.0,17.7142857143,380.0,4,16.4285714286,11.9428571429,-44.4857142857,266.571428571
|
||||
228,1932.0,30.4571428571,3275,-10.3428571429,161.0,14.6857142857,312.0,4,16.8571428571,8.88571428571,-47.0,212.571428571
|
||||
229,1932.0,25.6857142857,3275,-5.94285714286,0.999999999998,15.7142857143,19.0,4,15.7428571429,6.22857142857,-32.3428571429,153.942857143
|
||||
230,1944.3,31.5142857143,3275,-10.3428571429,177.0,17.6571428571,346.0,4,14.4571428571,7.6,-39.2285714286,181.028571429
|
||||
231,1953.5,42.5428571429,3275,-22.2857142857,143.0,20.6857142857,274.0,4,15.1571428571,7.45714285714,-67.1714285714,311.457142857
|
||||
232,1962.2,39.4857142857,3275,-13.6571428571,172.0,18.8,351.0,4,17.1714285714,11.4285714286,-61.3714285714,256.2
|
||||
233,1971.2,38.0857142857,3275,-22.0,120.0,21.3714285714,235.0,4,16.3857142857,12.5428571429,-66.9714285714,239.285714286
|
||||
234,1979.4,32.3428571429,3275,-5.31428571429,138.0,22.5714285714,277.0,4,16.2857142857,9.6,-33.7714285714,212.0
|
||||
236,1979.4,28.2857142857,3275,3.28571428571,90.9999999998,31.7142857143,152.0,4,18.2571428571,30.6285714286,-30.1428571429,137.028571429
|
||||
237,2004.1,33.6,3275,-16.5142857143,90.9999999998,32.0571428571,152.0,4,24.8571428571,30.2857142857,-66.5714285714,129.485714286
|
||||
238,2006.2,29.9714285714,3275,-10.5714285714,139.0,28.5428571429,244.0,4,31.1,14.9428571429,-41.0857142857,175.942857143
|
||||
|
2226
rowers/tests/testdata/fake_powerdata.csv
vendored
Normal file
2226
rowers/tests/testdata/fake_powerdata.csv
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1429
rowers/tests/testdata/fake_strokedata2.csv
vendored
Normal file
1429
rowers/tests/testdata/fake_strokedata2.csv
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
BIN
rowers/tests/testdata/testdata.csv.gz
vendored
Binary file not shown.
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Normal file
BIN
rowers/tests/testdata/testdata.tcx.gz
vendored
Normal file
Binary file not shown.
Reference in New Issue
Block a user