]>
git.proxmox.com Git - rustc.git/blob - vendor/array_tool/tests/vec.rs
1 extern crate array_tool
;
4 fn it_implements_individual_uniq_on_vec() {
5 use array_tool
::vec
::Uniq
;
6 assert_eq
!(vec
![1,2,3,4,5,6].uniq(vec
![1,2,5,7,9]),vec
![3,4,6]);
7 assert_eq
!(vec
![1,2,3,1,3,2,1,3,1,2,3,1,2,3,3,1,2,3,3,1,2,3,1,2,3,3,4,1,5,4,6].uniq(vec
![3,5]),
13 fn it_can_return_its_own_unique() {
14 use array_tool
::vec
::Uniq
;
15 assert_eq
!(vec
![1,2,1,3,4,3,4,5,6].unique(),vec
![1,2,3,4,5,6]);
16 assert_eq
!(vec
![1,2,3,1,3,2,1,3,1,2,3,1,2,3,3,1,2,3,3,1,2,3,1,2,3,3,4,1,5,4,6].unique(),
22 fn it_answers_about_uniqueness() {
23 use array_tool
::vec
::Uniq
;
24 assert_eq
!(vec
![1,2,1,3,4,3,4,5,6].is_unique(), false);
25 assert_eq
!(vec
![1,2,3,4,5,6].is_unique(), true);
29 fn it_implements_individual_uniq_on_vec_via() {
30 use array_tool
::vec
::Uniq
;
31 assert_eq
!(vec
![1.1,2.6,3.7,4.7,5.4,6.6].uniq_via(vec
![1.5,2.7,5.0,7.1,9.4], |l
: &f64, r
: &f64| l
.floor() == r
.floor()),vec
![3.7,4.7,6.6]);
32 assert_eq
!(vec
![1.2,2.5,3.4,1.2,3.8,2.9,1.0,3.2,1.2,2.5,3.7,1.7,2.9,3.1,3.5,1.6,2.7,3.9,3.1,1.5,2.6,3.8,1.2,2.6,3.7,3.8,4.9,1.0,5.1,4.4,6.6]
33 .uniq_via(vec
![3.5,5.1], |l
: &f64, r
: &f64| l
.floor() == r
.floor()),
34 vec
![1.2,2.5,2.9,1.0,1.7,1.6,2.7,1.5,2.6,4.9,4.4, 6.6]
39 fn it_can_return_its_own_unique_via() {
40 use array_tool
::vec
::Uniq
;
41 assert_eq
!(vec
![1.2,2.5,1.4,3.2,4.8,3.9,4.0,5.2,6.2].unique_via(|l
: &f64, r
: &f64| l
.floor() == r
.floor()),vec
![1.2,2.5,3.2,4.8,5.2,6.2]);
42 assert_eq
!(vec
![1.2,2.5,3.4,1.2,3.8,2.9,1.0,3.2,1.2,2.5,3.7,1.7,2.9,3.1,3.5,1.6,2.7,3.9,3.1,1.5,2.6,3.8,1.2,2.6,3.7,3.8,4.9,1.0,5.1,4.4,6.6]
43 .unique_via(|l
: &f64, r
: &f64| l
.floor() == r
.floor()),
44 vec
![1.2,2.5,3.4,4.9,5.1,6.6]
49 fn it_answers_about_uniqueness_via() {
50 use array_tool
::vec
::Uniq
;
51 assert_eq
!(vec
![1.2,2.4,1.5,3.6,4.1,3.5,4.7,5.9,6.5].is_unique_via(|l
: &f64, r
: &f64| l
.floor() == r
.floor()), false);
52 assert_eq
!(vec
![1.2,2.4,3.5,4.6,5.1,6.5].is_unique_via(|l
: &f64, r
: &f64| l
.floor() == r
.floor()), true);
57 use array_tool
::vec
::Shift
;
58 let mut x
= vec
![1,2,3];
60 assert_eq
!(x
, vec
![0,1,2,3]);
61 assert_eq
!(x
.shift(), Some(0));
62 assert_eq
!(x
, vec
![1,2,3]);
66 fn it_handles_empty_shift() {
67 use array_tool
::vec
::Shift
;
68 let mut x
: Vec
<u8> = vec
![];
69 assert_eq
!(x
.shift(), None
);
74 use array_tool
::vec
::Intersect
;
75 assert_eq
!(vec
![1,1,3,5].intersect(vec
![1,2,3]), vec
![1,3])
78 #[allow(unused_imports)]
80 fn it_intersects_if() {
81 use array_tool
::vec
::Intersect
;
82 use std
::ascii
::AsciiExt
;
83 assert_eq
!(vec
!['a'
,'a'
,'c'
,'e'
].intersect_if(vec
!['A'
,'B'
,'C'
], |l
, r
| l
.eq_ignore_ascii_case(r
)), vec
!['a'
,'c'
]);
88 use array_tool
::vec
::Times
;
89 assert_eq
!(vec
![1,2,3].times(3), vec
![1,2,3,1,2,3,1,2,3]);
92 let vec1
: Vec
<i32> = Vec
::new();
93 let vec2
: Vec
<i32> = Vec
::new();
94 assert_eq
!(vec1
.times(4), vec2
)
99 use array_tool
::vec
::Join
;
100 assert_eq
!(vec
![1,2,3].join(","), "1,2,3")
104 fn it_creates_union() {
105 use array_tool
::vec
::Union
;
106 assert_eq
!(vec
!["a","b","c"].union(vec
!["c","d","a"]), vec
![ "a", "b", "c", "d" ]);
107 assert_eq
!(vec
![1,2,3,1,3,2,1,3,1,2,3,1,2,3,3,1,2,3,3,1,2,3,1,2,3,3,4,1,4,6].union(vec
![3,5,7,8,0]),
108 vec
![1,2,3,4,6,5,7,8,0]