Skip to content
This repository was archived by the owner on Jun 6, 2025. It is now read-only.

Commit b7d566c

Browse files
committed
Updates
1 parent 11d2be1 commit b7d566c

File tree

8 files changed

+299
-267
lines changed

8 files changed

+299
-267
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

__test__/src/base.rs

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
use std::{io, time::SystemTime};
2+
3+
use rowid::{
4+
base::{
5+
GenerateResult, RowIDError, VerifyResult, decode, encode, generate,
6+
get_randomness, rowid, verify,
7+
},
8+
time::{system_time_to_timestamp, timestamp_to_system_time},
9+
};
10+
11+
// get_randomness
12+
13+
#[test]
14+
fn test_get_randomness_0() {
15+
let rds: String = get_randomness(0);
16+
assert!(rds.len() == 0);
17+
}
18+
19+
#[test]
20+
fn test_get_randomness_6() {
21+
let rds: String = get_randomness(6);
22+
assert!(rds.len() == 6);
23+
}
24+
25+
#[test]
26+
fn test_get_randomness_10() {
27+
let rds: String = get_randomness(10);
28+
assert!(rds.len() == 10);
29+
}
30+
31+
#[test]
32+
fn test_get_randomness_20() {
33+
let rds: String = get_randomness(20);
34+
assert!(rds.len() == 20);
35+
}
36+
37+
// encode
38+
39+
#[test]
40+
fn test_encode_now() {
41+
let encoded: String = encode(SystemTime::now()).unwrap();
42+
assert!(encoded.len() == 10);
43+
}
44+
45+
#[test]
46+
fn test_encode_0() {
47+
let encoded: String = encode(timestamp_to_system_time(0)).unwrap();
48+
assert!(encoded == "0000000000");
49+
}
50+
51+
// rowid
52+
53+
#[test]
54+
fn test_rowid() {
55+
let id: String = rowid();
56+
assert!(id.len() == 32);
57+
}
58+
59+
// decode
60+
61+
#[test]
62+
fn test_decode() {
63+
let current: SystemTime = SystemTime::now();
64+
let decoded: SystemTime = decode(&encode(current).unwrap()).unwrap();
65+
assert!(
66+
system_time_to_timestamp(decoded) == system_time_to_timestamp(current)
67+
);
68+
}
69+
70+
#[test]
71+
fn test_decode_length_error() {
72+
let result: io::Error = match decode("ABC123") {
73+
| Ok(_) => return assert!(false),
74+
| Err(e) => e,
75+
};
76+
77+
assert!(result.kind() == io::ErrorKind::InvalidInput);
78+
assert!(result.to_string() == RowIDError::EncodedLength.as_str());
79+
}
80+
81+
#[test]
82+
fn test_decode_invalid_input_error() {
83+
let result: io::Error = match decode("ab^!@#$agastgyaSER") {
84+
| Ok(_) => return assert!(false),
85+
| Err(e) => e,
86+
};
87+
88+
assert!(result.kind() == io::ErrorKind::InvalidInput);
89+
assert!(result.to_string() == RowIDError::InvalidEncoded.as_str());
90+
}
91+
92+
// generate
93+
94+
#[test]
95+
fn test_generate() {
96+
let current: SystemTime = SystemTime::now();
97+
let generated: GenerateResult = generate(current, Some(6));
98+
let id: String = generated.result.unwrap();
99+
assert!(generated.success == true);
100+
assert!(
101+
system_time_to_timestamp(decode(&id).unwrap())
102+
== system_time_to_timestamp(current)
103+
);
104+
assert!(id.len() == 16);
105+
}
106+
107+
// verify
108+
109+
#[test]
110+
fn test_verify() {
111+
let current: SystemTime = SystemTime::now();
112+
let id: String = generate(current, Some(6)).result.unwrap();
113+
let verified: VerifyResult = verify(&id);
114+
assert!(verified.success == true);
115+
assert!(match verified.result {
116+
| Some(r) =>
117+
system_time_to_timestamp(r) == system_time_to_timestamp(current),
118+
| None => false,
119+
});
120+
assert!(verified.natural == Some(true));
121+
}
122+
123+
#[test]
124+
fn test_verify_length_error() {
125+
let verified: VerifyResult = verify("ABC123");
126+
127+
assert!(verified.success == false);
128+
129+
let error: io::Error = match verified.error {
130+
| None => return assert!(false),
131+
| Some(e) => e,
132+
};
133+
134+
assert!(error.kind() == io::ErrorKind::InvalidInput);
135+
assert!(error.to_string() == RowIDError::EncodedLength.as_str());
136+
}
137+
138+
#[test]
139+
fn test_verify_invalid_input_error() {
140+
let verified: VerifyResult = verify("ab^!@#$agastgyaSER");
141+
142+
assert!(verified.success == false);
143+
144+
let error: io::Error = match verified.error {
145+
| None => return assert!(false),
146+
| Some(e) => e,
147+
};
148+
149+
assert!(error.kind() == io::ErrorKind::InvalidInput);
150+
assert!(error.to_string() == RowIDError::InvalidEncoded.as_str());
151+
}

0 commit comments

Comments
 (0)