tests: asynchronize some interpreter tests

This commit is contained in:
Jindřich Moravec 2024-01-25 23:19:37 +01:00
parent 51ed3bbc5c
commit 88fb13325a
2 changed files with 34 additions and 27 deletions

View file

@ -8,4 +8,4 @@ edition = "2021"
[dependencies]
bimap = "0.6.3"
thiserror = "1.0.50"
tokio = { version = "1.35.1", features = ["sync"] }
tokio = { version = "1.35.1", features = ["sync", "rt", "macros"] }

View file

@ -166,6 +166,7 @@ impl State {
mod tests {
use super::*;
use std::collections::HashSet;
use std::ops::Deref;
fn users_schema() -> TableSchema {
let id: ColumnPosition = 0;
@ -201,8 +202,8 @@ mod tests {
assert!(table.table_name() == &users);
}
#[test]
fn test_select_empty() {
#[tokio::test]
async fn test_select_empty() {
let mut state = State::new();
let users_schema = users_schema();
let users = users_schema.table_name().clone();
@ -217,8 +218,9 @@ mod tests {
let Response::Selected(schema, rows) = response else {
panic!()
};
let rows: Vec<_> = rows.collect();
assert!(rows.len() == 0);
let mut rows = rows.lock().await;
assert!(rows.next().is_none());
}
#[test]
@ -233,8 +235,8 @@ mod tests {
assert!(matches!(response, Err(Error::TableDoesNotExist(_))));
}
#[test]
fn test_insert_select_basic1() {
#[tokio::test]
async fn test_insert_select_basic1() {
use IndexableValue::*;
use Value::*;
@ -270,18 +272,19 @@ mod tests {
let Response::Selected(schema, rows) = response else {
panic!()
};
let rows: Vec<_> = rows.collect();
assert!(rows.len() == 1);
let row = &rows[0];
let mut rows = rows.lock().await;
let row = rows.next().expect("expected single row");
assert!(row.len() == 3);
assert!(row[0].1 == id);
assert!(row[1].1 == name);
assert!(row[2].1 == age);
assert!(rows.next().is_none());
}
#[test]
fn test_insert_select_basic2() {
#[tokio::test]
async fn test_insert_select_basic2() {
use ColumnSelection::*;
use Condition::*;
use IndexableValue::*;
@ -336,20 +339,21 @@ mod tests {
panic!()
};
let rows: Vec<_> = rows.collect();
assert!(rows.len() == 2);
let row0 = &rows[0];
let row1 = &rows[1];
let mut rows = rows.lock().await;
let row0 = rows.next().expect("expected first row");
assert!(row0.len() == 3);
assert!(row0[0].1 == id0);
assert!(row0[1].1 == name0);
assert!(row0[2].1 == age0);
let row1 = rows.next().expect("expected second row");
assert!(row1.len() == 3);
assert!(row1[0].1 == id1);
assert!(row1[1].1 == name1);
assert!(row1[2].1 == age1);
assert!(rows.next().is_none());
}
{
@ -364,14 +368,15 @@ mod tests {
let Response::Selected(_, rows) = response else {
panic!()
};
let rows: Vec<_> = rows.collect();
assert!(rows.len() == 1);
let row0 = &rows[0];
let mut rows = rows.lock().await;
let row0 = rows.next().expect("expected first row");
assert!(row0.len() == 3);
assert!(row0[0].1 == id0);
assert!(row0[1].1 == name0);
assert!(row0[2].1 == age0);
assert!(rows.next().is_none());
}
{
@ -386,18 +391,19 @@ mod tests {
let Response::Selected(_, rows) = response else {
panic!()
};
let rows: Vec<_> = rows.collect();
assert!(rows.len() == 1);
let row0 = &rows[0];
let mut rows = rows.lock().await;
let row0 = rows.next().expect("expected first row");
assert!(row0.len() == 2);
assert!(row0[0].1 == name0);
assert!(row0[1].1 == id0);
assert!(rows.next().is_none());
}
}
#[test]
fn test_delete() {
#[tokio::test]
async fn test_delete() {
use ColumnSelection::*;
use Condition::*;
use IndexableValue::*;
@ -460,14 +466,15 @@ mod tests {
let Response::Selected(_, rows) = response else {
panic!()
};
let rows: Vec<_> = rows.collect();
assert!(rows.len() == 1);
let row = &rows[0];
let mut rows = rows.lock().await;
let row = rows.next().expect("expected first row");
assert!(row.len() == 3);
assert!(row[0].1 == id1);
assert!(row[1].1 == name1);
assert!(row[2].1 == age1);
assert!(rows.next().is_none());
}
#[test]