-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathdate_nodes_test.go
112 lines (91 loc) · 3.12 KB
/
date_nodes_test.go
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
package gedcom_test
import (
"testing"
"github.com/elliotchance/gedcom/v39"
"github.com/elliotchance/tf"
)
func TestDateNodes_Minimum(t *testing.T) {
Minimum := tf.Function(t, gedcom.DateNodes.Minimum)
at3Sep1923 := gedcom.NewDateNode("3 Sep 1923")
at4Mar1923 := gedcom.NewDateNode("4 Mar 1923")
at5Mar1923 := gedcom.NewDateNode("5 Mar 1923")
// Nils
Minimum(([]*gedcom.DateNode)(nil)).Returns((*gedcom.DateNode)(nil))
Minimum([]*gedcom.DateNode{}).Returns((*gedcom.DateNode)(nil))
// Values
Minimum([]*gedcom.DateNode{
at3Sep1923,
}).Returns(at3Sep1923)
Minimum([]*gedcom.DateNode{
at3Sep1923,
at4Mar1923,
}).Returns(at4Mar1923)
Minimum([]*gedcom.DateNode{
at3Sep1923,
at4Mar1923,
at5Mar1923,
}).Returns(at4Mar1923)
// When comparing date ranges we must look at the specific bounds, rather
// than just the average.
btw1923And1943 := gedcom.NewDateNode("Between 1923 and 1943")
btw1924And1934 := gedcom.NewDateNode("Between 1924 and 1934")
Minimum([]*gedcom.DateNode{
btw1923And1943, // avg = 1933, value = 1923
btw1924And1934, // avg = 1929, value = 1924
}).Returns(btw1923And1943)
}
func TestDateNodes_Maximum(t *testing.T) {
Maximum := tf.Function(t, gedcom.DateNodes.Maximum)
at3Sep1923 := gedcom.NewDateNode("3 Sep 1923")
at4Mar1923 := gedcom.NewDateNode("4 Mar 1923")
at5Mar1923 := gedcom.NewDateNode("5 Mar 1923")
// Nils
Maximum(([]*gedcom.DateNode)(nil)).Returns((*gedcom.DateNode)(nil))
Maximum([]*gedcom.DateNode{}).Returns((*gedcom.DateNode)(nil))
// Values
Maximum([]*gedcom.DateNode{
at3Sep1923,
}).Returns(at3Sep1923)
Maximum([]*gedcom.DateNode{
at3Sep1923,
at4Mar1923,
}).Returns(at3Sep1923)
Maximum([]*gedcom.DateNode{
at4Mar1923,
at3Sep1923,
at5Mar1923,
}).Returns(at3Sep1923)
// When comparing date ranges we must look at the specific bounds, rather
// than just the average.
btw1903And1924 := gedcom.NewDateNode("Between 1904 and 1924")
btw1913And1923 := gedcom.NewDateNode("Between 1913 and 1923")
Maximum([]*gedcom.DateNode{
btw1903And1924, // avg = 1914, value = 1924
btw1913And1923, // avg = 1919, value = 1923
}).Returns(btw1903And1924)
}
func TestDateNodes_StripZero(t *testing.T) {
StripZero := tf.Function(t, gedcom.DateNodes.StripZero)
at3Sep1923 := gedcom.NewDateNode("3 Sep 1923")
at5Mar1923 := gedcom.NewDateNode("5 Mar 1923")
zeroDate := gedcom.NewDateNode("foo bar")
// Nils.
StripZero(nil).Returns(nil)
StripZero(gedcom.DateNodes{}).Returns(nil)
// Valid cases.
StripZero(gedcom.DateNodes{at3Sep1923}).
Returns(gedcom.DateNodes{at3Sep1923})
StripZero(gedcom.DateNodes{at3Sep1923, at3Sep1923}).
Returns(gedcom.DateNodes{at3Sep1923, at3Sep1923})
StripZero(gedcom.DateNodes{at3Sep1923, at5Mar1923}).
Returns(gedcom.DateNodes{at3Sep1923, at5Mar1923})
// With zero dates.
StripZero(gedcom.DateNodes{zeroDate}).
Returns(nil)
StripZero(gedcom.DateNodes{at3Sep1923, zeroDate}).
Returns(gedcom.DateNodes{at3Sep1923})
StripZero(gedcom.DateNodes{zeroDate, at5Mar1923}).
Returns(gedcom.DateNodes{at5Mar1923})
StripZero(gedcom.DateNodes{zeroDate, at3Sep1923, zeroDate, zeroDate, at5Mar1923}).
Returns(gedcom.DateNodes{at3Sep1923, at5Mar1923})
}