Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7f5bcd4

Browse files
author
Steven Munn
committed
Added tests for formats and zero_formats in ConciseDataFormatter
1 parent bb4b823 commit 7f5bcd4

File tree

1 file changed

+120
-8
lines changed

1 file changed

+120
-8
lines changed

lib/matplotlib/tests/test_dates.py

Lines changed: 120 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ def test_date_numpyx():
4444
[datetime.datetime(2017, 1, 1, 2, 1, 1),
4545
datetime.datetime(2017, 1, 1, 3, 1, 1)]]])
4646
@pytest.mark.parametrize('dtype', ['datetime64[s]',
47-
'datetime64[us]',
48-
'datetime64[ms]',
49-
'datetime64[ns]'])
47+
'datetime64[us]',
48+
'datetime64[ms]',
49+
'datetime64[ns]'])
5050
def test_date_date2num_numpy(t0, dtype):
5151
time = mdates.date2num(t0)
5252
tnp = np.array(t0, dtype=dtype)
@@ -55,9 +55,9 @@ def test_date_date2num_numpy(t0, dtype):
5555

5656

5757
@pytest.mark.parametrize('dtype', ['datetime64[s]',
58-
'datetime64[us]',
59-
'datetime64[ms]',
60-
'datetime64[ns]'])
58+
'datetime64[us]',
59+
'datetime64[ms]',
60+
'datetime64[ns]'])
6161
def test_date2num_NaT(dtype):
6262
t0 = datetime.datetime(2017, 1, 1, 0, 1, 1)
6363
tmpl = [mdates.date2num(t0), np.nan]
@@ -481,7 +481,7 @@ def _create_auto_date_locator(date1, date2):
481481
],
482482
[datetime.timedelta(weeks=52),
483483
['1997', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
484-
'Sep', 'Oct', 'Nov', 'Dec']
484+
'Sep', 'Oct', 'Nov', 'Dec']
485485
],
486486
[datetime.timedelta(days=141),
487487
['Jan', '22', 'Feb', '22', 'Mar', '22', 'Apr', '22',
@@ -511,6 +511,117 @@ def _create_auto_date_locator(date1, date2):
511511
assert strings == expected
512512

513513

514+
def test_concise_formatter_formats():
515+
formats = ['%Y', '%m/%Y', 'day: %d',
516+
'%H hr %M min', '%H hr %M min', '%S.%f sec']
517+
518+
def _create_auto_date_locator(date1, date2):
519+
fig, ax = plt.subplots()
520+
521+
locator = mdates.AutoDateLocator(interval_multiples=True)
522+
formatter = mdates.ConciseDateFormatter(locator, formats=formats)
523+
ax.yaxis.set_major_locator(locator)
524+
ax.yaxis.set_major_formatter(formatter)
525+
ax.set_ylim(date1, date2)
526+
fig.canvas.draw()
527+
sts = []
528+
for st in ax.get_yticklabels():
529+
sts += [st.get_text()]
530+
return sts
531+
532+
d1 = datetime.datetime(1997, 1, 1)
533+
results = ([datetime.timedelta(weeks=52 * 200),
534+
[str(t) for t in range(1980, 2201, 20)]
535+
],
536+
[datetime.timedelta(weeks=52),
537+
['1997', '02/1997', '03/1997', '04/1997', '05/1997', '06/1997',
538+
'07/1997', '08/1997', '09/1997', '10/1997', '11/1997', '12/1997']
539+
],
540+
[datetime.timedelta(days=141),
541+
['01/1997', 'day: 22', '02/1997', 'day: 22', '03/1997',
542+
'day: 22', '04/1997', 'day: 22', '05/1997', 'day: 22']
543+
],
544+
[datetime.timedelta(days=40),
545+
['01/1997', 'day: 05', 'day: 09', 'day: 13', 'day: 17', 'day: 21',
546+
'day: 25', 'day: 29', '02/1997', 'day: 05', 'day: 09']
547+
],
548+
[datetime.timedelta(hours=40),
549+
['day: 01',
550+
'04 hr 00 min', '08 hr 00 min', '12 hr 00 min', '16 hr 00 min', '20 hr 00 min', 'day: 02',
551+
'04 hr 00 min', '08 hr 00 min', '12 hr 00 min', '16 hr 00 min']
552+
],
553+
[datetime.timedelta(minutes=20),
554+
['00 hr 00 min', '00 hr 05 min', '00 hr 10 min',
555+
'00 hr 15 min', '00 hr 20 min']
556+
],
557+
[datetime.timedelta(seconds=40),
558+
['00 hr 00 min', '05.000000 sec', '10.000000 sec', '15.000000 sec', '20.000000 sec',
559+
'25.000000 sec', '30.000000 sec', '35.000000 sec', '40.000000 sec']
560+
],
561+
[datetime.timedelta(seconds=2),
562+
['59.500000 sec', '00 hr 00 min', '00.500000 sec', '01.000000 sec',
563+
'01.500000 sec', '02.000000 sec', '02.500000 sec']
564+
],
565+
)
566+
for t_delta, expected in results:
567+
d2 = d1 + t_delta
568+
strings = _create_auto_date_locator(d1, d2)
569+
assert strings == expected
570+
571+
572+
def test_concise_formatter_zformats():
573+
zero_formats = ['', '%Y', '%b', '%b-%d', '%H:%M', '%H:%M']
574+
575+
def _create_auto_date_locator(date1, date2):
576+
fig, ax = plt.subplots()
577+
578+
locator = mdates.AutoDateLocator(interval_multiples=True)
579+
formatter = mdates.ConciseDateFormatter(locator, zero_formats)
580+
ax.yaxis.set_major_locator(locator)
581+
ax.yaxis.set_major_formatter(formatter)
582+
ax.set_ylim(date1, date2)
583+
fig.canvas.draw()
584+
sts = []
585+
for st in ax.get_yticklabels():
586+
sts += [st.get_text()]
587+
return sts
588+
589+
d1 = datetime.datetime(1997, 1, 1)
590+
results = ([datetime.timedelta(weeks=52 * 200),
591+
[str(t) for t in range(1980, 2201, 20)]
592+
],
593+
[datetime.timedelta(weeks=52),
594+
["'97", 'Feb', 'Mar', 'Apr', 'May', 'Jun',
595+
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
596+
],
597+
[datetime.timedelta(days=141),
598+
['January', '22', 'February', '22', 'March',
599+
'22', 'April', '22', 'May', '22']
600+
],
601+
[datetime.timedelta(days=40),
602+
['January', '05', '09', '13', '17', '21',
603+
'25', '29', 'February', '05', '09']
604+
],
605+
[datetime.timedelta(hours=40),
606+
['01-01', '04:00', '08:00', '12:00', '16:00', '20:00',
607+
'01-02', '04:00', '08:00', '12:00', '16:00']
608+
],
609+
[datetime.timedelta(minutes=20),
610+
['00', '00:05', '00:10', '00:15', '00:20']
611+
],
612+
[datetime.timedelta(seconds=40),
613+
['', '05', '10', '15', '20', '25', '30', '35', '40']
614+
],
615+
[datetime.timedelta(seconds=2),
616+
['59.5', '.0', '00.5', '01.0', '01.5', '02.0', '02.5']
617+
],
618+
)
619+
for t_delta, expected in results:
620+
d2 = d1 + t_delta
621+
strings = _create_auto_date_locator(d1, d2)
622+
assert strings == expected
623+
624+
514625
def test_concise_formatter_tz():
515626
def _create_auto_date_locator(date1, date2, tz):
516627
fig, ax = plt.subplots()
@@ -671,6 +782,7 @@ class dt_tzaware(datetime.datetime):
671782
datetime-like object that applies timezone normalization after
672783
subtraction.
673784
"""
785+
674786
def __sub__(self, other):
675787
r = super().__sub__(other)
676788
tzinfo = getattr(r, 'tzinfo', None)
@@ -773,7 +885,7 @@ def test_yearlocator_pytz():
773885

774886
tz = pytz.timezone('America/New_York')
775887
x = [tz.localize(datetime.datetime(2010, 1, 1))
776-
+ datetime.timedelta(i) for i in range(2000)]
888+
+ datetime.timedelta(i) for i in range(2000)]
777889
locator = mdates.AutoDateLocator(interval_multiples=True, tz=tz)
778890
locator.create_dummy_axis()
779891
locator.set_view_interval(mdates.date2num(x[0])-1.0,

0 commit comments

Comments
 (0)