use liteboxfs::{Connection, CreateOptions, FileMode};
use xpct::{equal, expect};
#[test]
fn filesystem_id_is_stable_within_a_connection() -> liteboxfs::Result<()> {
let mut conn = Connection::open_in_memory(&CreateOptions::new())?;
let (first, second) =
conn.exec(|fs| liteboxfs::Result::Ok((fs.filesystem_id(), fs.filesystem_id())))?;
expect!(first).to(equal(second));
Ok(())
}
#[test]
fn filesystem_id_differs_between_databases() -> liteboxfs::Result<()> {
let mut conn_a = Connection::open_in_memory(&CreateOptions::new())?;
let mut conn_b = Connection::open_in_memory(&CreateOptions::new())?;
let id_a = conn_a.exec(|fs| liteboxfs::Result::Ok(fs.filesystem_id()))?;
let id_b = conn_b.exec(|fs| liteboxfs::Result::Ok(fs.filesystem_id()))?;
expect!(id_a).to_not(equal(id_b));
Ok(())
}
#[test]
fn umask_default_is_other_w() -> liteboxfs::Result<()> {
let mut conn = Connection::open_in_memory(&CreateOptions::new())?;
conn.exec(|fs| {
expect!(fs.umask()).to(equal(FileMode::OTHER_W));
liteboxfs::Result::Ok(())
})?;
Ok(())
}
#[test]
fn umask_reflects_set_umask() -> liteboxfs::Result<()> {
let mut conn = Connection::open_in_memory(&CreateOptions::new())?;
conn.exec(|fs| {
let new_umask = FileMode::GROUP_W | FileMode::OTHER_W;
fs.set_umask(new_umask);
expect!(fs.umask()).to(equal(new_umask));
liteboxfs::Result::Ok(())
})?;
Ok(())
}
#[test]
fn umask_can_be_cleared() -> liteboxfs::Result<()> {
let mut conn = Connection::open_in_memory(&CreateOptions::new())?;
conn.exec(|fs| {
fs.set_umask(FileMode::empty());
expect!(fs.umask()).to(equal(FileMode::empty()));
liteboxfs::Result::Ok(())
})?;
Ok(())
}