use crdt_sample::DotContext;
#[test]
fn create(){
let dot_ctx : DotContext<String> = DotContext::new();
println!("{:?}", dot_ctx);
}
#[test]
fn insert_dot(){
let mut dot_ctx : DotContext<String> = DotContext::new();
let dot = ("A".to_string(), 3);
let mut res : DotContext<String> = DotContext::new();
res.dc.insert(dot.clone());
dot_ctx.insert_dot(&dot, Some(false));
assert_eq!(dot_ctx, res);
println!("{:?}", dot_ctx);
}
#[test]
fn compact_not_possible(){
let dot = ("A".to_string(), 3);
let mut dot_ctx : DotContext<String> = DotContext::new();
dot_ctx.dc.insert(dot.clone());
let mut res : DotContext<String> = DotContext::new();
res.dc.insert(dot.clone());
dot_ctx.compact();
assert_eq!(dot_ctx, res);
println!("{:?}", dot_ctx);
}
#[test]
fn compact_possible_1(){
let mut dot_ctx : DotContext<String> = DotContext::new();
dot_ctx.dc.insert(("A".to_string(),1));
dot_ctx.dc.insert(("A".to_string(),2));
dot_ctx.dc.insert(("A".to_string(),3));
let mut res : DotContext<String> = DotContext::new();
res.cc.insert("A".to_string(), 3);
dot_ctx.compact();
assert_eq!(dot_ctx, res);
println!("{:?}", dot_ctx);
}
#[test]
fn compact_possible_and_not(){
let mut dot_ctx : DotContext<String> = DotContext::new();
dot_ctx.dc.insert(("A".to_string(),1));
dot_ctx.dc.insert(("A".to_string(),2));
dot_ctx.dc.insert(("A".to_string(),3));
dot_ctx.dc.insert(("A".to_string(),5));
let mut res : DotContext<String> = DotContext::new();
res.cc.insert("A".to_string(), 3);
res.dc.insert(("A".to_string(), 5));
dot_ctx.compact();
assert_eq!(dot_ctx, res);
println!("{:?}", dot_ctx);
}
#[test]
fn join(){
let mut dot_ctx_1 : DotContext<String> = DotContext::new();
dot_ctx_1.cc.insert("A".to_string(), 1);
dot_ctx_1.dc.insert(("A".to_string(), 3));
let mut dot_ctx_2 : DotContext<String> = DotContext::new();
dot_ctx_2.cc.insert("A".to_string(), 4);
let mut res: DotContext<String> = DotContext::new();
res.cc.insert("A".to_string(), 4);
dot_ctx_1.join(&dot_ctx_2);
assert_eq!(res, dot_ctx_1);
println!("{:?}", dot_ctx_1);
}