lex-lib 0.3.2

Contains simple but usefull stuff for Rust development.
Documentation
//! Silly tests
use crate::*;

#[test]
fn vec2(){
	{// new(x,y)
		let vec_t = Vec2{x: 5, y:7};
		let vec = Vec2::new(5,7);
		assert_eq!(vec, vec_t);
	}
	
	{// default()
		let vec_t = Vec2{x: 0, y: 0};
		let vec = Vec2::default();
		assert_eq!(vec, vec_t);
	}
	
	{// add Vec2
		let vec_t = Vec2{x: 7, y: 16};
		let vec1 = Vec2{x: 4, y: 8};
		let vec2 = Vec2{x: 3, y: 8};
		let vec = vec1 + vec2;
		assert_eq!(vec, vec_t);
	}
	{// add i32
		let vec_t = Vec2{x: 5, y: 9};
		let vec1 = Vec2{x: 4, y: 8};
		let vec = vec1 + 1;
		assert_eq!(vec, vec_t);
	}
	
	{// addAssing Vec2
		let vec_t = Vec2{x: 7, y: 16};
		let vec1 = Vec2{x: 4, y: 8};
		let mut vec = Vec2{x: 3, y: 8};
		vec += vec1;
		assert_eq!(vec, vec_t);
	}
	{// addAssing i32
		let vec_t = Vec2{x: 5, y: 9};
		let mut vec = Vec2{x: 4, y: 8};
		vec += 1;
		assert_eq!(vec, vec_t);
	}
	
	{// div Vec2
		let vec_t = Vec2{x: 2, y: 2};
		let vec1 = Vec2{x: 4, y: 8};
		let vec2 = Vec2{x: 2, y: 4};
		let vec = vec1 / vec2;
		assert_eq!(vec, vec_t);
	}
	{// div i32
		let vec_t = Vec2{x: 2, y: 4};
		let vec1 = Vec2{x: 4, y: 8};
		let vec = vec1 / 2;
		assert_eq!(vec, vec_t);
	}
	
	{// divAssing Vec2
		let vec_t = Vec2{x: 2, y: 2};
		let vec1 = Vec2{x: 2, y: 4};
		let mut vec = Vec2{x: 4, y: 8};
		vec /= vec1;
		assert_eq!(vec, vec_t);
	}
	{// divAssing i32
		let vec_t = Vec2{x: 2, y: 4};
		let mut vec = Vec2{x: 4, y: 8};
		vec /= 2;
		assert_eq!(vec, vec_t);
	}
	
	{// neg
		let vec_t = Vec2{x: -2, y: -7};
		let vec = Vec2{x: 2, y: 7};
		let vec = -vec;
		assert_eq!(vec, vec_t);
	}
	
	{// rem Vec2
		let vec_t = Vec2{x: 1, y: 1};
		let vec1 = Vec2{x: 5, y: 3};
		let vec2 = Vec2{x: 2, y: 2};
		let vec = vec1 % vec2;
		assert_eq!(vec, vec_t);
	}
	{// rem i32
		let vec_t = Vec2{x: 1, y: 1};
		let vec1 = Vec2{x: 5, y: 3};
		let vec = vec1 % 2;
		assert_eq!(vec, vec_t);
	}
	
	{// remAssign Vec2
		let vec_t = Vec2{x: 1, y: 1};
		let vec1 = Vec2{x: 2, y: 2};
		let mut vec = Vec2{x: 5, y: 3};
		vec %= vec1;
		assert_eq!(vec, vec_t);
	}
	{// remAssign i32
		let vec_t = Vec2{x: 1, y: 1};
		let mut vec = Vec2{x: 5, y: 3};
		vec %= 2;
		assert_eq!(vec, vec_t);
	}
	
	{// sub Vec2
		let vec_t = Vec2{x: -9, y: 89};
		let vec1 = Vec2{x: 3, y: 96};
		let vec2 = Vec2{x: 12, y: 7};
		let vec = vec1 - vec2;
		assert_eq!(vec, vec_t);
	}
	{// sub i32
		let vec_t = Vec2{x: -9, y: 84};
		let vec1 = Vec2{x: 3, y: 96};
		let vec = vec1 - 12;
		assert_eq!(vec, vec_t);
	}
	
	{// subAssign Vec2
		let vec_t = Vec2{x: -9, y: 89};
		let vec1 = Vec2{x: 12, y: 7};
		let mut vec = Vec2{x: 3, y: 96};
		vec -= vec1;
		assert_eq!(vec, vec_t);
	}
	{// subAssing i32
		let vec_t = Vec2{x: -9, y: 84};
		let mut vec = Vec2{x: 3, y: 96};
		vec -= 12;
		assert_eq!(vec, vec_t);
	}
	
	{// flip
		let vec_t = Vec2i32::new(-5, 5);
		let mut vec = Vec2i32::new(5, -5);
		vec.flip();
		assert_eq!(vec, vec_t);
	}
}

#[test]
fn semver(){
	{// new 
		let sv_t = SemVer{major: 0, minor: 3, patch: 9, extra_field: "beta".to_owned()};
		let sv = SemVer::new(0,3,9,"beta".to_owned());
		assert_eq!(sv, sv_t)
	}
	
	{// default
		let sv_t = SemVer{major: 0, minor: 1, patch: 0, extra_field: "".to_owned()};
		let sv = SemVer::default();
		assert_eq!(sv, sv_t)
	}
	
	{// from_string
		let sv_t = SemVer{major: 7, minor: 0, patch: 4, extra_field: "alpha".to_owned()};
		let sv = SemVer::from_string("7.0.4-alpha".to_owned()).unwrap();
		assert_eq!(sv, sv_t)
	}
	
	{// to_string
		let sv_ts = String::from("5.9.4");
		let sv_ts2 = String::from("5.9.4-rc.1");
		let sv = SemVer::from_string("5.9.4".to_owned()).unwrap();
		let sv2 = SemVer::from_string("5.9.4-rc.1".to_owned()).unwrap();
		let sv = sv.to_string();
		let sv2 = sv2.to_string();
		assert_eq!(sv, sv_ts);
		assert_eq!(sv2, sv_ts2);
	}
	
	{// difference
		let sv_t = SemVer::new(-1, 0, -6, String::new());
		let sv1 = SemVer::new(2,8,7, String::new());
		let sv2 = SemVer::new(3,8,13, String::new());
		let sv = sv1.difference(&sv2);
		assert_eq!(sv, sv_t)
	}
}