Skip to content

Commit 63b478c

Browse files
committed
test(integration): use lexicographic edge cases in ORE text ordering tests
Replace single-character test values ("a", "b", "c") with 7 multi-character strings that exercise prefix overlaps, variable lengths, and double letters. Use interleaved_indices insertion pattern for consistency with ore_order_generic.
1 parent f207300 commit 63b478c

1 file changed

Lines changed: 36 additions & 46 deletions

File tree

packages/cipherstash-proxy-integration/src/ore_order_helpers.rs

Lines changed: 36 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -26,72 +26,62 @@ impl SortDirection {
2626
}
2727
}
2828

29-
/// Text ASC ordering.
29+
/// Text ASC ordering with lexicographic edge cases.
3030
pub async fn ore_order_text(client: &tokio_postgres::Client) {
31-
let s_one = "a";
32-
let s_two = "b";
33-
let s_three = "c";
31+
let values = vec![
32+
"aardvark",
33+
"apparatus",
34+
"aplomb",
35+
"chimera",
36+
"chrysalis",
37+
"chrysanthemum",
38+
"zephyr",
39+
];
3440

35-
let sql = "
36-
INSERT INTO encrypted (id, encrypted_text)
37-
VALUES ($1, $2), ($3, $4), ($5, $6)
38-
";
41+
let insert_sql = "INSERT INTO encrypted (id, encrypted_text) VALUES ($1, $2)";
3942

40-
client
41-
.query(
42-
sql,
43-
&[
44-
&random_id(),
45-
&s_two,
46-
&random_id(),
47-
&s_one,
48-
&random_id(),
49-
&s_three,
50-
],
51-
)
52-
.await
53-
.unwrap();
43+
for idx in interleaved_indices(values.len()) {
44+
client
45+
.query(insert_sql, &[&random_id(), &values[idx]])
46+
.await
47+
.unwrap();
48+
}
5449

5550
let sql = "SELECT encrypted_text FROM encrypted ORDER BY encrypted_text";
5651
let rows = client.query(sql, &[]).await.unwrap();
5752

5853
let actual = rows.iter().map(|row| row.get(0)).collect::<Vec<String>>();
59-
let expected = vec![s_one, s_two, s_three];
54+
let expected: Vec<String> = values.iter().map(|s| s.to_string()).collect();
6055

6156
assert_eq!(actual, expected);
6257
}
6358

64-
/// Text DESC ordering.
59+
/// Text DESC ordering with lexicographic edge cases.
6560
pub async fn ore_order_text_desc(client: &tokio_postgres::Client) {
66-
let s_one = "a";
67-
let s_two = "b";
68-
let s_three = "c";
61+
let values = vec![
62+
"aardvark",
63+
"apparatus",
64+
"aplomb",
65+
"chimera",
66+
"chrysalis",
67+
"chrysanthemum",
68+
"zephyr",
69+
];
6970

70-
let sql = "
71-
INSERT INTO encrypted (id, encrypted_text)
72-
VALUES ($1, $2), ($3, $4), ($5, $6)
73-
";
71+
let insert_sql = "INSERT INTO encrypted (id, encrypted_text) VALUES ($1, $2)";
7472

75-
client
76-
.query(
77-
sql,
78-
&[
79-
&random_id(),
80-
&s_two,
81-
&random_id(),
82-
&s_one,
83-
&random_id(),
84-
&s_three,
85-
],
86-
)
87-
.await
88-
.unwrap();
73+
for idx in interleaved_indices(values.len()) {
74+
client
75+
.query(insert_sql, &[&random_id(), &values[idx]])
76+
.await
77+
.unwrap();
78+
}
8979

9080
let sql = "SELECT encrypted_text FROM encrypted ORDER BY encrypted_text DESC";
9181
let rows = client.query(sql, &[]).await.unwrap();
9282

9383
let actual = rows.iter().map(|row| row.get(0)).collect::<Vec<String>>();
94-
let expected = vec![s_three, s_two, s_one];
84+
let expected: Vec<String> = values.iter().rev().map(|s| s.to_string()).collect();
9585

9686
assert_eq!(actual, expected);
9787
}

0 commit comments

Comments
 (0)