Skip to content

Commit 25db147

Browse files
committed
Port chrono tests to time tests
1 parent 2082d4f commit 25db147

File tree

3 files changed

+150
-0
lines changed

3 files changed

+150
-0
lines changed

tokio-postgres/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,5 @@ geo-types-04 = { version = "0.4", package = "geo-types" }
6363
serde-1 = { version = "1.0", package = "serde" }
6464
serde_json-1 = { version = "1.0", package = "serde_json" }
6565
uuid-08 = { version = "0.8", package = "uuid" }
66+
time-02 = { version = "0.2", package = "time" }
6667

tokio-postgres/tests/test/types/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ mod eui48_04;
2222
mod geo_010;
2323
#[cfg(feature = "with-serde_json-1")]
2424
mod serde_json_1;
25+
#[cfg(feature = "with-time-0_2")]
26+
mod time_02;
2527
#[cfg(feature = "with-uuid-0_8")]
2628
mod uuid_08;
2729

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
use time_02::{OffsetDateTime, PrimitiveDateTime};
2+
use tokio_postgres::types::{Date, Timestamp};
3+
4+
use crate::types::test_type;
5+
6+
#[tokio::test]
7+
async fn test_naive_date_time_params() {
8+
fn make_check(time: &str) -> (Option<PrimitiveDateTime>, &str) {
9+
(
10+
Some(PrimitiveDateTime::parse(time, "'%Y-%m-%d %H:%M:%S.%f'").unwrap()),
11+
time,
12+
)
13+
}
14+
test_type(
15+
"TIMESTAMP",
16+
&[
17+
make_check("'1970-01-01 00:00:00.010000000'"),
18+
make_check("'1965-09-25 11:19:33.100314000'"),
19+
make_check("'2010-02-09 23:11:45.120200000'"),
20+
(None, "NULL"),
21+
],
22+
)
23+
.await;
24+
}
25+
26+
#[tokio::test]
27+
async fn test_with_special_naive_date_time_params() {
28+
fn make_check(time: &str) -> (Timestamp<PrimitiveDateTime>, &str) {
29+
(
30+
Timestamp::Value(PrimitiveDateTime::parse(time, "'%Y-%m-%d %H:%M:%S.%f'").unwrap()),
31+
time,
32+
)
33+
}
34+
test_type(
35+
"TIMESTAMP",
36+
&[
37+
make_check("'1970-01-01 00:00:00.010000000'"),
38+
make_check("'1965-09-25 11:19:33.100314000'"),
39+
make_check("'2010-02-09 23:11:45.120200000'"),
40+
(Timestamp::PosInfinity, "'infinity'"),
41+
(Timestamp::NegInfinity, "'-infinity'"),
42+
],
43+
)
44+
.await;
45+
}
46+
47+
#[tokio::test]
48+
async fn test_date_time_params() {
49+
fn make_check(time: &str) -> (Option<OffsetDateTime>, &str) {
50+
(
51+
Some(OffsetDateTime::parse(time, "'%Y-%m-%d %H:%M:%S.%f'").unwrap()),
52+
time,
53+
)
54+
}
55+
test_type(
56+
"TIMESTAMP WITH TIME ZONE",
57+
&[
58+
make_check("'1970-01-01 00:00:00.010000000'"),
59+
make_check("'1965-09-25 11:19:33.100314000'"),
60+
make_check("'2010-02-09 23:11:45.120200000'"),
61+
(None, "NULL"),
62+
],
63+
)
64+
.await;
65+
}
66+
67+
#[tokio::test]
68+
async fn test_with_special_date_time_params() {
69+
fn make_check(time: &str) -> (Timestamp<OffsetDateTime>, &str) {
70+
(
71+
Timestamp::Value(OffsetDateTime::parse(time, "'%Y-%m-%d %H:%M:%S.%f'").unwrap()),
72+
time,
73+
)
74+
}
75+
test_type(
76+
"TIMESTAMP WITH TIME ZONE",
77+
&[
78+
make_check("'1970-01-01 00:00:00.010000000'"),
79+
make_check("'1965-09-25 11:19:33.100314000'"),
80+
make_check("'2010-02-09 23:11:45.120200000'"),
81+
(Timestamp::PosInfinity, "'infinity'"),
82+
(Timestamp::NegInfinity, "'-infinity'"),
83+
],
84+
)
85+
.await;
86+
}
87+
88+
#[tokio::test]
89+
async fn test_date_params() {
90+
fn make_check(time: &str) -> (Option<time_02::Date>, &str) {
91+
(
92+
Some(time_02::Date::parse(time, "'%Y-%m-%d'").unwrap()),
93+
time,
94+
)
95+
}
96+
test_type(
97+
"DATE",
98+
&[
99+
make_check("'1970-01-01'"),
100+
make_check("'1965-09-25'"),
101+
make_check("'2010-02-09'"),
102+
(None, "NULL"),
103+
],
104+
)
105+
.await;
106+
}
107+
108+
#[tokio::test]
109+
async fn test_with_special_date_params() {
110+
fn make_check(date: &str) -> (Date<time_02::Date>, &str) {
111+
(
112+
Date::Value(time_02::Date::parse(date, "'%Y-%m-%d'").unwrap()),
113+
date,
114+
)
115+
}
116+
test_type(
117+
"DATE",
118+
&[
119+
make_check("'1970-01-01'"),
120+
make_check("'1965-09-25'"),
121+
make_check("'2010-02-09'"),
122+
(Date::PosInfinity, "'infinity'"),
123+
(Date::NegInfinity, "'-infinity'"),
124+
],
125+
)
126+
.await;
127+
}
128+
129+
#[tokio::test]
130+
async fn test_time_params() {
131+
fn make_check(time: &str) -> (Option<time_02::Time>, &str) {
132+
(
133+
Some(time_02::Time::parse(time, "'%H:%M:%S.%f'").unwrap()),
134+
time,
135+
)
136+
}
137+
test_type(
138+
"TIME",
139+
&[
140+
make_check("'00:00:00.010000000'"),
141+
make_check("'11:19:33.100314000'"),
142+
make_check("'23:11:45.120200000'"),
143+
(None, "NULL"),
144+
],
145+
)
146+
.await;
147+
}

0 commit comments

Comments
 (0)