use crate::{Config, Result};
pub mod fs;
#[derive(Debug)]
pub struct Platform {
fs: fs::FileSystem,
config: Config,
}
impl Platform {
pub async fn new(config: &Config) -> Result<Self> {
Ok(Self {
fs: fs::FileSystem::new().await?,
config: config.clone(),
})
}
pub fn fs(&self) -> &fs::FileSystem {
&self.fs
}
pub fn config(&self) -> &Config {
&self.config
}
}
#[cfg(test)]
mod tests {
use super::*;
use std::path::Path;
use tempfile::TempDir;
#[tokio::test]
async fn test_platform_creation() {
let config = Config::default();
let platform = Platform::new(&config).await.unwrap();
assert!(platform.fs().exists(Path::new(".")).await.unwrap());
}
#[tokio::test]
async fn test_file_system() {
let config = Config::default();
let platform = Platform::new(&config).await.unwrap();
let fs = platform.fs();
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test.txt");
let content = b"Hello, World!";
fs.write_file(&test_file, content).await.unwrap();
assert!(fs.exists(&test_file).await.unwrap());
let read_content = fs.read_file(&test_file).await.unwrap();
assert_eq!(read_content, content);
let size = fs.file_size(&test_file).await.unwrap();
assert_eq!(size, content.len() as u64);
fs.remove_file(&test_file).await.unwrap();
assert!(!fs.exists(&test_file).await.unwrap());
}
}