added header enum field
This commit is contained in:
parent
c7c938dd67
commit
5bb846a53e
3 changed files with 21 additions and 6 deletions
20
src/btree.rs
20
src/btree.rs
|
|
@ -41,6 +41,9 @@ where
|
||||||
}
|
}
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
Node::Header(_) => {
|
||||||
|
panic!("What happened?")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -190,11 +193,13 @@ where
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use crate::file_storage::FileStorage;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::storage::InMemoryStorage;
|
|
||||||
|
|
||||||
use proptest::prelude::*;
|
use proptest::prelude::*;
|
||||||
use proptest::proptest;
|
use proptest::proptest;
|
||||||
|
use tempfile::NamedTempFile;
|
||||||
|
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
|
||||||
|
|
@ -224,6 +229,11 @@ mod tests {
|
||||||
prop::collection::vec(arb_op(), 1..500)
|
prop::collection::vec(arb_op(), 1..500)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn temp_storage() -> FileStorage {
|
||||||
|
let file = NamedTempFile::new().unwrap();
|
||||||
|
FileStorage::new(file.path().to_str().unwrap())
|
||||||
|
}
|
||||||
|
|
||||||
proptest! {
|
proptest! {
|
||||||
#![proptest_config(ProptestConfig {
|
#![proptest_config(ProptestConfig {
|
||||||
cases: 200,
|
cases: 200,
|
||||||
|
|
@ -232,7 +242,7 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn prop_bplustree_matches_btreemap(ops in arb_ops()) {
|
fn prop_bplustree_matches_btreemap(ops in arb_ops()) {
|
||||||
let storage = InMemoryStorage::new();
|
let storage = temp_storage();
|
||||||
let mut tree = BPlusTree::open(storage);
|
let mut tree = BPlusTree::open(storage);
|
||||||
|
|
||||||
let mut model = BTreeMap::<i32, Record>::new();
|
let mut model = BTreeMap::<i32, Record>::new();
|
||||||
|
|
@ -258,7 +268,7 @@ mod tests {
|
||||||
proptest! {
|
proptest! {
|
||||||
#[test]
|
#[test]
|
||||||
fn prop_all_inserted_keys_are_findable(records in prop::collection::vec(arb_record(), 0..1000)) {
|
fn prop_all_inserted_keys_are_findable(records in prop::collection::vec(arb_record(), 0..1000)) {
|
||||||
let storage = InMemoryStorage::new();
|
let storage = temp_storage();
|
||||||
let mut tree = BPlusTree::open(storage);
|
let mut tree = BPlusTree::open(storage);
|
||||||
let mut model = BTreeMap::<i32, Record>::new();
|
let mut model = BTreeMap::<i32, Record>::new();
|
||||||
|
|
||||||
|
|
@ -275,7 +285,7 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn sanity_single_insert() {
|
fn sanity_single_insert() {
|
||||||
let storage = InMemoryStorage::new();
|
let storage = temp_storage();
|
||||||
let mut tree = BPlusTree::open(storage);
|
let mut tree = BPlusTree::open(storage);
|
||||||
|
|
||||||
let rec = [42, 1, 2, 3, 4, 5, 6];
|
let rec = [42, 1, 2, 3, 4, 5, 6];
|
||||||
|
|
@ -287,7 +297,7 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn sanity_update_overwrites_value() {
|
fn sanity_update_overwrites_value() {
|
||||||
let storage = InMemoryStorage::new();
|
let storage = temp_storage();
|
||||||
let mut tree = BPlusTree::open(storage);
|
let mut tree = BPlusTree::open(storage);
|
||||||
|
|
||||||
let r1 = [1, 1, 1, 1, 1, 1, 1];
|
let r1 = [1, 1, 1, 1, 1, 1, 1];
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,6 @@ impl FileStorage {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::{
|
use crate::{
|
||||||
config::MAX_KEYS,
|
config::MAX_KEYS,
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,12 @@ use crate::record::Record;
|
||||||
pub enum Node {
|
pub enum Node {
|
||||||
Leaf(LeafNode),
|
Leaf(LeafNode),
|
||||||
Internal(InternalNode),
|
Internal(InternalNode),
|
||||||
|
Header(HeaderNode),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)]
|
||||||
|
pub struct HeaderNode {
|
||||||
|
pub root: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)]
|
#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue