From ef7a80299389f71267176ee5d1bfacd3ee0f9fe9 Mon Sep 17 00:00:00 2001
From: niku <nvdpoel01@gmail.com>
Date: Tue, 15 Aug 2023 19:49:22 +0200
Subject: [PATCH] Added some statement tests

---
 src/statement.rs | 43 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/src/statement.rs b/src/statement.rs
index bb70136..e25d760 100644
--- a/src/statement.rs
+++ b/src/statement.rs
@@ -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());
+    }
+}