12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- use microrm::prelude::*;
- use microrm_macros::index_cols;
- use test_log::test;
- use microrm::schema::index::Index;
- mod common;
- #[derive(Entity)]
- struct TwoWay {
- up: String,
- left: String,
- right: String,
- }
- #[derive(Database)]
- struct TWDB {
- entries: microrm::IDMap<TwoWay>,
- left_index: Index<TwoWay, index_cols![TwoWay::left]>,
- right_index: Index<TwoWay, index_cols![TwoWay::right]>,
- }
- #[test]
- fn db_construction() {
- let _db = common::open_test_db::<TWDB>("index_db_construction");
- }
- #[test]
- fn lookup() {
- let db = common::open_test_db::<TWDB>("index_lookup");
- let e1 = db
- .entries
- .insert_and_return(TwoWay {
- up: "up1".into(),
- left: "left1".into(),
- right: "right1".into(),
- })
- .expect("couldn't insert entry");
- let e2 = db
- .entries
- .insert_and_return(TwoWay {
- up: "up2".into(),
- left: "left2".into(),
- right: "right2".into(),
- })
- .expect("couldn't insert entry");
- assert!(db
- .entries
- .indexed(&db.left_index, "left3")
- .get()
- .expect("couldn't query left index")
- .is_none());
- assert_eq!(
- db.entries
- .indexed(&db.left_index, "left2")
- .get()
- .expect("couldn't query left index")
- .as_ref(),
- Some(&e2)
- );
- assert_eq!(
- db.entries
- .indexed(&db.left_index, "left1")
- .get()
- .expect("couldn't query left index")
- .as_ref(),
- Some(&e1)
- );
- assert!(db
- .entries
- .indexed(&db.right_index, "right3")
- .get()
- .expect("couldn't query right index")
- .is_none());
- assert_eq!(
- db.entries
- .indexed(&db.right_index, "right2")
- .get()
- .expect("couldn't query right index")
- .as_ref(),
- Some(&e2)
- );
- assert_eq!(
- db.entries
- .indexed(&db.right_index, "right1")
- .get()
- .expect("couldn't query right index")
- .as_ref(),
- Some(&e1)
- );
- }
|