Added some statement tests

This commit is contained in:
niku 2023-08-15 19:49:22 +02:00
parent b4a86dca9f
commit ef7a802993

View File

@ -95,3 +95,46 @@ pub fn execute_select(table: &mut Table) -> Result<Vec<Row>> {
Ok(rows)
}
#[cfg(test)]
mod tests {
use super::*;
use crate::{pager::Pager, row::Row, table::Table};
use tempfile::NamedTempFile;
#[test]
fn execute_select_with_data_succeeds() {
let file = NamedTempFile::new_in("target").unwrap();
let pager = Pager::new(file.path()).unwrap();
let mut table = Table::new(pager);
for _ in 0..5 {
execute_insert(Row::default(), &mut table).unwrap();
}
let rows = execute_select(&mut table).unwrap();
assert_eq!(rows.len(), 5);
}
#[test]
fn execute_insert_exceeding_row_limit_fails() {
let file = NamedTempFile::new_in("target").unwrap();
let pager = Pager::new(file.path()).unwrap();
let mut table = Table::new(pager);
for _ in 0..TABLE_MAX_ROWS {
let row = Row::new(u16::MAX, "a".repeat(32).as_str(), "a".repeat(255).as_str());
execute_insert(row, &mut table).unwrap();
}
let result = execute_insert(Row::default(), &mut table);
assert!(result.is_err());
}
#[test]
#[should_panic]
fn execute_insert_input_exceeding_length_fails() {
let file = NamedTempFile::new_in("target").unwrap();
let pager = Pager::new(file.path()).unwrap();
let mut table = Table::new(pager);
let row = Row::new(u16::MAX, "a".repeat(33).as_str(), "a".repeat(256).as_str());
let result = execute_insert(row, &mut table);
assert!(result.is_err());
}
}