disk_utils 0.0.1

Data structures that use the disk
Documentation
extern crate disk_utils;

use disk_utils::Serializable;
use disk_utils::wal::LogData;
use disk_utils::wal::entries::{ChangeEntry, Checkpoint, InsertEntry};

#[derive(Clone, PartialEq, Debug)]
struct MyLogData;

impl LogData for MyLogData {
    type Key = i32;
    type Value = String;
}

#[test]
fn test_insert_entry() {
    let entry: InsertEntry<MyLogData> = InsertEntry {
        tid: 123,
        key: 20,
    };

    let mut bytes = Vec::new();
    entry.serialize(&mut bytes).unwrap();

    let test_entry = InsertEntry::deserialize(&mut &bytes[..]).unwrap();
    assert_eq!(entry, test_entry);
}

#[test]
fn test_change_entry() {
    let entry: ChangeEntry<MyLogData> = ChangeEntry {
        tid: 123,
        key: 20,
        value: "Hello world!".to_string(),
    };

    let mut bytes = Vec::new();
    entry.serialize(&mut bytes).unwrap();

    let test_entry = ChangeEntry::deserialize(&mut &bytes[..]).unwrap();
    assert_eq!(entry, test_entry);
}

#[test]
fn test_checkpoint() {
    let checkpoints = vec![Checkpoint::Begin(vec![20, 30]), Checkpoint::End];

    for checkpoint in checkpoints {
        let mut bytes = Vec::new();
        checkpoint.serialize(&mut bytes).unwrap();

        let test_checkpoint = Checkpoint::deserialize(&mut &bytes[..]).unwrap();
        assert_eq!(checkpoint, test_checkpoint);
    }
}