// // use wtools::vector; // use wtools::vector::{ left_index, append_vectors_once }; // // // #[test] // fn append_vectors_once() // { // println!( "empty vector" ); // let mut appender: append_vectors_once = append_vectors_once::default(); // let got = appender.call(); // let exp: Vec = vec![]; // a_id!( got, exp ); // println!( "dst - filled, src - empty" ); // let mut appender: append_vectors_once = append_vectors_once::default(); // appender.dst( vec![ 1, 2 ] ); // let got = appender.call(); // a_id!( got, vec![ 1, 2 ] ); // println!( "dst - filled, src - filled, all is unical elements" ); // let mut appender: append_vectors_once = append_vectors_once::default(); // appender.dst( vec![ 1, 2 ] ); // appender.src( vec![ vec![ 3, 4 ], vec![ 5, 6 ] ] ); // let got = appender.call(); // a_id!( *got, vec![ 1, 2, 3, 4, 5, 6 ] ); // println!( "dst - filled, src - filled, some is duplicated" ); // let mut appender: append_vectors_once = append_vectors_once::default(); // appender.dst( vec![ 1, 2 ] ); // appender.src( vec![ vec![ 1, 3 ], vec![ 2, 4 ] ] ); // let got = appender.call(); // a_id!( got, vec![ 1, 2, 3, 4 ] ); // println!( "dst - filled, src - filled, all is duplicated" ); // let mut appender: append_vectors_once = append_vectors_once::default(); // appender.dst( vec![ 1, 2 ] ); // appender.src( vec![ vec![ 1, 1 ], vec![ 2, 2 ] ] ); // let got = appender.call(); // a_id!( got, vec![ 1, 2 ] ); // println!( "dst - filled, src - filled, all is duplicated" ); // let mut appender: append_vectors_once = append_vectors_once::default(); // appender.dst( vec![ 1, 2 ] ); // appender.src( vec![ vec![ 1, 2 ], vec![ 2, 1 ] ] ); // let got = appender.call(); // a_id!( got, vec![ 1, 2 ] ); // } // // // #[test] // fn left_index() // { // println!( "empty vector" ); // let mut src : left_index = left_index::default(); // src.ins( 1 ); // let got = src.call(); // a_id!( got, None ); // println!( "filled vector, not matches" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 3 ] ); // src.ins( 4 ); // let got = src.call(); // a_id!( got, None ); // println!( "filled vector, matches one" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 3 ] ); // src.ins( 2 ); // let got = src.call(); // a_id!( got, Some( 1 ) ); // println!( "filled vector, matches several" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 2 ] ); // src.ins( 2 ); // let got = src.call(); // a_id!( got, Some( 1 ) ); // println!( "filled vector, matches all" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 2, 2, 2 ] ); // src.ins( 2 ); // let got = src.call(); // a_id!( got, Some( 0 ) ); // } // // // #[test] // fn left_index_with_equalizer() // { // fn equalizer( src1 : &u8, src2 : &u8 ) -> bool // { // *src1 == *src2 // } // /* */ // println!( "empty vector" ); // let mut src : left_index = left_index::default(); // src.ins( 1 ); // src.on_equalize( equalizer ); // let got = src.call(); // a_id!( got, None ); // println!( "filled vector, not matches" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 3 ] ); // src.ins( 4 ); // src.on_equalize( equalizer ); // let got = src.call(); // a_id!( got, None ); // println!( "filled vector, matches one" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 3 ] ); // src.ins( 2 ); // src.on_equalize( equalizer ); // let got = src.call(); // a_id!( got, Some( 1 ) ); // println!( "filled vector, matches several" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 2 ] ); // src.ins( 2 ); // src.on_equalize( equalizer ); // let got = src.call(); // a_id!( got, Some( 1 ) ); // println!( "filled vector, matches all" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 2, 2, 2 ] ); // src.ins( 2 ); // src.on_equalize( equalizer ); // let got = src.call(); // a_id!( got, Some( 0 ) ); // } // // // #[test] // fn left_index_with_evaluator() // { // fn evaluator1( src : &u8 ) -> u8 // { // *src // } // /* */ // println!( "empty vector" ); // let mut src : left_index = left_index::default(); // src.ins( 1 ); // src.on_evaluate1( evaluator1 ); // let got = src.call(); // a_id!( got, None ); // println!( "filled vector, not matches" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 3 ] ); // src.ins( 4 ); // src.on_evaluate1( evaluator1 ); // let got = src.call(); // a_id!( got, None ); // println!( "filled vector, matches one" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 3 ] ); // src.ins( 2 ); // src.on_evaluate1( evaluator1 ); // let got = src.call(); // a_id!( got, Some( 1 ) ); // println!( "filled vector, matches several" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 2 ] ); // src.ins( 2 ); // src.on_evaluate1( evaluator1 ); // let got = src.call(); // a_id!( got, Some( 1 ) ); // println!( "filled vector, matches all" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 2, 2, 2 ] ); // src.ins( 2 ); // src.on_evaluate1( evaluator1 ); // let got = src.call(); // a_id!( got, Some( 0 ) ); // } // // // #[test] // fn left_index_with_two_evaluators() // { // fn evaluator1( src : &u8 ) -> u8 // { // *src // } // fn evaluator2( src : &u8 ) -> u8 // { // *src // } // /* */ // println!( "empty vector" ); // let mut src : left_index = left_index::default(); // src.ins( 1 ); // src.on_evaluate1( evaluator1 ); // src.on_evaluate1( evaluator2 ); // let got = src.call(); // a_id!( got, None ); // println!( "filled vector, not matches" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 3 ] ); // src.ins( 4 ); // src.on_evaluate1( evaluator1 ); // src.on_evaluate1( evaluator2 ); // let got = src.call(); // a_id!( got, None ); // println!( "filled vector, matches one" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 3 ] ); // src.ins( 2 ); // src.on_evaluate1( evaluator1 ); // src.on_evaluate1( evaluator2 ); // let got = src.call(); // a_id!( got, Some( 1 ) ); // println!( "filled vector, matches several" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 1, 2, 2 ] ); // src.ins( 2 ); // src.on_evaluate1( evaluator1 ); // src.on_evaluate1( evaluator2 ); // let got = src.call(); // a_id!( got, Some( 1 ) ); // println!( "filled vector, matches all" ); // let mut src : left_index = left_index::default(); // src.src( vec![ 2, 2, 2 ] ); // src.ins( 2 ); // src.on_evaluate1( evaluator1 ); // src.on_evaluate1( evaluator2 ); // let got = src.call(); // a_id!( got, Some( 0 ) ); // } // /* // append_vectors_once // left_index // left_index_with_equalizer // left_index_with_evaluator // left_index_with_two_evaluators // */