-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests.txt
More file actions
155 lines (96 loc) · 6.03 KB
/
Copy pathtests.txt
File metadata and controls
155 lines (96 loc) · 6.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
TimeSlice module contains 2 classes:
TimeSlice.TimeSlice: represents a range of time.
TimeSlice.TimeSet: represents a list of TimeSlices without intersection (Intersections are removed when a TimeSlice is added to a TimeSet.
>>> import datetime
>>> import TimeSlice
=========================================================================================================
Slices creation
=========================================================================================================
>>> slice1 = TimeSlice.TimeSlice( start = datetime.datetime( 2009, 1, 1, 0, 0, 0 ), end = datetime.datetime( 2009, 1, 2, 0, 0, 0 ) )
>>> slice2 = TimeSlice.TimeSlice( start = datetime.datetime( 2009, 1, 1, 22, 33, 44 ), end = datetime.datetime( 2009, 1, 2, 22, 33, 44 ) )
=========================================================================================================
Operations with TimeSlices
=========================================================================================================
Duration: returns duration (in seconds) of a TimeSlice
>>> print slice1.duration()
86400
--------------------------
Sum: Returns a TimeSet with a TimeSlice with total time
>>> print slice1 + slice2
[<TimeSlice instance (datetime.datetime(2009, 1, 1, 0, 0), datetime.datetime(2009, 1, 2, 22, 33, 44)) >]
--------------------------
Subtract: Returns a TimeSet with 1 or more TimeSlices, removing intersections. Important: slice2 - slice1 != slice1 - slice2
>>> print slice1 - slice2
[<TimeSlice instance (datetime.datetime(2009, 1, 1, 0, 0), datetime.datetime(2009, 1, 1, 22, 33, 44)) >]
>>> print slice2 - slice1
[<TimeSlice instance (datetime.datetime(2009, 1, 2, 0, 0), datetime.datetime(2009, 1, 2, 22, 33, 44)) >]
--------------------------
Intersect: Returns a TimeSlice containing intersection between slices
>>> print slice1.intersect( slice2 )
<TimeSlice instance (datetime.datetime(2009, 1, 1, 22, 33, 44), datetime.datetime(2009, 1, 2, 0, 0)) >
--------------------------
Contains: returns True if a date, datetime or timeslice is "inside" the slice range, False instead:
>>> print datetime.datetime( 2009, 1, 1, 12, 13, 14 ) in slice1
True
>>> print slice2 in slice1
False
>>> print TimeSlice.TimeSlice( start = datetime.datetime( 2009, 1, 1, 9, 0, 0 ), end = datetime.datetime( 2009, 1, 1, 15, 0, 0 ) ) in slice1
True
--------------------------
=========================================================================================================
TimeSet creation
=========================================================================================================
Empty TimeSet
>>> set1 = TimeSlice.TimeSet()
TimeSet with a list of slices:
>>> set2 = TimeSlice.TimeSet( [ slice1, slice2 ] )
Creating TimeSet containing all days of a month
>>> set3 = TimeSlice.TimeSet.fromRange( start = datetime.date( 2009, 1, 1 ), end = datetime.date( 2009, 2, 1 ), repeat = TimeSlice.DAYLY )
=========================================================================================================
Operations with TimeSets
=========================================================================================================
Duration: returns sum of duration (in seconds) of all slices in a timeset
>>> print set3.duration()
2592000
--------------------------
Append: adds slices into a timeset (removing intersections)
>>> set1.append( slice1 )
>>> print set1
[<TimeSlice instance (datetime.datetime(2009, 1, 1, 0, 0), datetime.datetime(2009, 1, 2, 0, 0)) >]
--------------------------
Iteration: interates over all TimeSlices in a TimeSet
>>> for x in set2:
... print x
<TimeSlice instance (datetime.datetime(2009, 1, 1, 0, 0), datetime.datetime(2009, 1, 2, 0, 0)) >
<TimeSlice instance (datetime.datetime(2009, 1, 2, 0, 0), datetime.datetime(2009, 1, 2, 22, 33, 44)) >
--------------------------
Sum: Returns a TimeSet, summing TimeSlices from both sets
>>> set3 + set2 # doctest: +ELLIPSIS
[<TimeSlice instance (datetime.datetime(2009, 1, 1, 0, 0), datetime.datetime(2009, 1, 2, 0, 0)) >,
...
<TimeSlice instance (datetime.datetime(2009, 1, 30, 0, 0), datetime.datetime(2009, 1, 31, 0, 0)) >]
Subtract: Returns a TimeSet removing from the first TimeSet all intersection with TimeSlices of second TimeSet
>>> set3 - set1 # doctest: +ELLIPSIS
[<TimeSlice instance (datetime.datetime(2009, 1, 2, 0, 0), datetime.datetime(2009, 1, 3, 0, 0)) >,
...
<TimeSlice instance (datetime.datetime(2009, 1, 30, 0, 0), datetime.datetime(2009, 1, 31, 0, 0)) >]
Intersect: Returns a TimeSet with TimeSlices containing intersections
it could be done between 2 TimeSets or betweeen a slice and a set
>>> set3.intersect( slice2 )
[<TimeSlice instance (datetime.datetime(2009, 1, 1, 22, 33, 44), datetime.datetime(2009, 1, 2, 0, 0)) >,
<TimeSlice instance (datetime.datetime(2009, 1, 2, 0, 0), datetime.datetime(2009, 1, 2, 22, 33, 44)) >]
>>> set3.intersect( set2 )
[<TimeSlice instance (datetime.datetime(2009, 1, 1, 0, 0), datetime.datetime(2009, 1, 2, 0, 0)) >,
<TimeSlice instance (datetime.datetime(2009, 1, 2, 0, 0), datetime.datetime(2009, 1, 2, 22, 33, 44)) >]
>>> slice2.intersect( set3 )
[<TimeSlice instance (datetime.datetime(2009, 1, 1, 22, 33, 44), datetime.datetime(2009, 1, 2, 0, 0)) >,
<TimeSlice instance (datetime.datetime(2009, 1, 2, 0, 0), datetime.datetime(2009, 1, 2, 22, 33, 44)) >]
--------------------------
Contains: returns True if a date, datetime, TimeSlice or TimeSet is "inside" the TimeSet range. False instead.
date or datetime test returns True if date/datetime is inside any TimeSet in the Slice
TimeSlice test returns True if all parts of given TimeSlice is inside intersections between the TimeSlice and TimeSet
TimeSet test returns True if all TimeSlices tests returns true
>>> assert datetime.datetime( 2009, 1, 1, 12, 13, 14 ) in set1
>>> assert slice2 in set3
>>> assert set1 in set3
--------------------------