diff --git a/Cargo.toml b/Cargo.toml index ae0d64e..2814c9b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,3 +21,7 @@ serde = "1.0.136" serde_bare = "0.5.0" ouroboros = "0.14.2" + + +[dev-dependencies] +tempfile = "3.3.0" diff --git a/src/lib.rs b/src/lib.rs index 9d410d9..6d6cac8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,10 +3,4 @@ pub mod environment; pub mod wrapper; #[cfg(test)] -mod tests { - #[test] - fn it_works() { - let result = 2 + 2; - assert_eq!(result, 4); - } -} +mod tests; diff --git a/src/tests.rs b/src/tests.rs new file mode 100644 index 0000000..30f0a5a --- /dev/null +++ b/src/tests.rs @@ -0,0 +1,48 @@ +use crate::environment::Env; +use tempfile::NamedTempFile; + +fn temp_env() -> Env { + let tempfile = NamedTempFile::new().unwrap(); + Env::open(tempfile.path()).unwrap() +} + +#[test] +fn test_raw_bytes_basics() { + let env = temp_env(); + let db = env.open_raw_table::<[u8], [u8]>(Some("rawt"), ()).unwrap(); + + let k: [u8; 4] = [0, 1, 2, 3]; + + { + let txn = env.ro_txn().unwrap(); + assert_eq!(db.get(&txn, &k).unwrap(), None); + } + + env.rw_txn(|txn| db.put(txn, &k, &[42, 41, 43])).unwrap(); + + { + let txn = env.ro_txn().unwrap(); + assert_eq!( + db.get(&txn, &k).unwrap().unwrap().as_ref(), + &[42, 41, 43][..] + ); + } +} + +#[test] +fn test_raw_str_basics() { + let env = temp_env(); + let db = env.open_raw_table::(Some("rawt"), ()).unwrap(); + + { + let txn = env.ro_txn().unwrap(); + assert_eq!(db.get(&txn, "ooh").unwrap(), None); + } + + env.rw_txn(|txn| db.put(txn, "ooh", "cool!")).unwrap(); + + { + let txn = env.ro_txn().unwrap(); + assert_eq!(db.get(&txn, "ooh").unwrap().unwrap().as_ref(), "cool!"); + } +}