Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitddea059

Browse files
author
Shawn L.
committed
WIP
1 parent3469ab0 commitddea059

File tree

2 files changed

+177
-0
lines changed

2 files changed

+177
-0
lines changed
Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
use jiff_02::{
2+
civil::{DateasJiffDate,DateTime,Time},
3+
TimestampasJiffTimestamp,
4+
};
5+
use std::fmt;
6+
use tokio_postgres::{
7+
types::{Date,FromSqlOwned,Timestamp},
8+
Client,
9+
};
10+
11+
usecrate::connect;
12+
usecrate::types::test_type;
13+
14+
#[tokio::test]
15+
asyncfntest_datetime_params(){
16+
fnmake_check(s:&str) ->(Option<DateTime>,&str){
17+
(Some(s.trim_matches('\'').parse().unwrap()), s)
18+
}
19+
test_type(
20+
"TIMESTAMP",
21+
&[
22+
make_check("'1970-01-01 00:00:00.010000000'"),
23+
make_check("'1965-09-25 11:19:33.100314000'"),
24+
make_check("'2010-02-09 23:11:45.120200000'"),
25+
(None,"NULL"),
26+
],
27+
)
28+
.await;
29+
}
30+
31+
#[tokio::test]
32+
asyncfntest_with_special_datetime_params(){
33+
fnmake_check(s:&str) ->(Timestamp<DateTime>,&str){
34+
(Timestamp::Value(s.trim_matches('\'').parse().unwrap()), s)
35+
}
36+
test_type(
37+
"TIMESTAMP",
38+
&[
39+
make_check("'1970-01-01 00:00:00.010000000'"),
40+
make_check("'1965-09-25 11:19:33.100314000'"),
41+
make_check("'2010-02-09 23:11:45.120200000'"),
42+
(Timestamp::PosInfinity,"'infinity'"),
43+
(Timestamp::NegInfinity,"'-infinity'"),
44+
],
45+
)
46+
.await;
47+
}
48+
49+
#[tokio::test]
50+
asyncfntest_timestamp_params(){
51+
fnmake_check(s:&str) ->(Option<JiffTimestamp>,&str){
52+
(Some(s.trim_matches('\'').parse().unwrap()), s)
53+
}
54+
test_type(
55+
"TIMESTAMP WITH TIME ZONE",
56+
&[
57+
make_check("'1970-01-01 00:00:00.010000000Z'"),
58+
make_check("'1965-09-25 11:19:33.100314000Z'"),
59+
make_check("'2010-02-09 23:11:45.120200000Z'"),
60+
(None,"NULL"),
61+
],
62+
)
63+
.await;
64+
}
65+
66+
#[tokio::test]
67+
asyncfntest_with_special_timestamp_params(){
68+
fnmake_check(s:&str) ->(Timestamp<JiffTimestamp>,&str){
69+
(Timestamp::Value(s.trim_matches('\'').parse().unwrap()), s)
70+
}
71+
test_type(
72+
"TIMESTAMP WITH TIME ZONE",
73+
&[
74+
make_check("'1970-01-01 00:00:00.010000000Z'"),
75+
make_check("'1965-09-25 11:19:33.100314000Z'"),
76+
make_check("'2010-02-09 23:11:45.120200000Z'"),
77+
(Timestamp::PosInfinity,"'infinity'"),
78+
(Timestamp::NegInfinity,"'-infinity'"),
79+
],
80+
)
81+
.await;
82+
}
83+
84+
#[tokio::test]
85+
asyncfntest_date_params(){
86+
fnmake_check(s:&str) ->(Option<JiffDate>,&str){
87+
(Some(s.trim_matches('\'').parse().unwrap()), s)
88+
}
89+
test_type(
90+
"DATE",
91+
&[
92+
make_check("'1970-01-01'"),
93+
make_check("'1965-09-25'"),
94+
make_check("'2010-02-09'"),
95+
(None,"NULL"),
96+
],
97+
)
98+
.await;
99+
}
100+
101+
#[tokio::test]
102+
asyncfntest_with_special_date_params(){
103+
fnmake_check(s:&str) ->(Date<JiffDate>,&str){
104+
(Date::Value(s.trim_matches('\'').parse().unwrap()), s)
105+
}
106+
test_type(
107+
"DATE",
108+
&[
109+
make_check("'1970-01-01'"),
110+
make_check("'1965-09-25'"),
111+
make_check("'2010-02-09'"),
112+
(Date::PosInfinity,"'infinity'"),
113+
(Date::NegInfinity,"'-infinity'"),
114+
],
115+
)
116+
.await;
117+
}
118+
119+
#[tokio::test]
120+
asyncfntest_time_params(){
121+
fnmake_check(s:&str) ->(Option<Time>,&str){
122+
(Some(s.trim_matches('\'').parse().unwrap()), s)
123+
}
124+
test_type(
125+
"TIME",
126+
&[
127+
make_check("'00:00:00.010000000'"),
128+
make_check("'11:19:33.100314000'"),
129+
make_check("'23:11:45.120200000'"),
130+
(None,"NULL"),
131+
],
132+
)
133+
.await;
134+
}
135+
136+
#[tokio::test]
137+
asyncfntest_special_params_without_wrapper(){
138+
asyncfnassert_overflows<T>(client:&mutClient,val:&str,sql_type:&str)
139+
where
140+
T:FromSqlOwned + fmt::Debug,
141+
{
142+
let err = client
143+
.query_one(&*format!("SELECT {}::{}", val, sql_type),&[])
144+
.await
145+
.unwrap()
146+
.try_get::<_,T>(0)
147+
.unwrap_err();
148+
149+
assert_eq!(
150+
err.to_string(),
151+
"error deserializing column 0: value too large to decode"
152+
);
153+
154+
let err = client
155+
.query_one(&*format!("SELECT {}::{}", val, sql_type),&[])
156+
.await
157+
.unwrap()
158+
.try_get::<_,T>(0)
159+
.unwrap_err();
160+
161+
assert_eq!(
162+
err.to_string(),
163+
"error deserializing column 0: value too large to decode"
164+
);
165+
}
166+
167+
letmut client =connect("user=postgres").await;
168+
169+
assert_overflows::<DateTime>(&mut client,"'-infinity'","timestamp").await;
170+
assert_overflows::<DateTime>(&mut client,"'infinity'","timestamp").await;
171+
assert_overflows::<JiffTimestamp>(&mut client,"'-infinity'","timestamptz").await;
172+
assert_overflows::<JiffTimestamp>(&mut client,"'infinity'","timestamptz").await;
173+
assert_overflows::<JiffDate>(&mut client,"'-infinity'","date").await;
174+
assert_overflows::<JiffDate>(&mut client,"'infinity'","date").await;
175+
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ mod geo_types_06;
2525
mod geo_types_07;
2626
#[cfg(feature ="with-jiff-0_1")]
2727
mod jiff_01;
28+
#[cfg(feature ="with-jiff-0_2")]
29+
mod jiff_02;
2830
#[cfg(feature ="with-serde_json-1")]
2931
mod serde_json_1;
3032
#[cfg(feature ="with-smol_str-01")]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp