summaryrefslogtreecommitdiff
path: root/vendor/itertools/tests/test_core.rs
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-15 16:37:08 -0600
committermo khan <mo@mokhan.ca>2025-07-17 16:30:22 -0600
commit45df4d0d9b577fecee798d672695fe24ff57fb1b (patch)
tree1b99bf645035b58e0d6db08c7a83521f41f7a75b /vendor/itertools/tests/test_core.rs
parentf94f79608393d4ab127db63cc41668445ef6b243 (diff)
feat: migrate from Cedar to SpiceDB authorization system
This is a major architectural change that replaces the Cedar policy-based authorization system with SpiceDB's relation-based authorization. Key changes: - Migrate from Rust to Go implementation - Replace Cedar policies with SpiceDB schema and relationships - Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks - Update build system and dependencies for Go ecosystem - Maintain Envoy integration for external authorization This change enables more flexible permission modeling through SpiceDB's Google Zanzibar inspired relation-based system, supporting complex hierarchical permissions that were difficult to express in Cedar. Breaking change: Existing Cedar policies and Rust-based configuration will no longer work and need to be migrated to SpiceDB schema.
Diffstat (limited to 'vendor/itertools/tests/test_core.rs')
-rw-r--r--vendor/itertools/tests/test_core.rs399
1 files changed, 0 insertions, 399 deletions
diff --git a/vendor/itertools/tests/test_core.rs b/vendor/itertools/tests/test_core.rs
deleted file mode 100644
index 49361608..00000000
--- a/vendor/itertools/tests/test_core.rs
+++ /dev/null
@@ -1,399 +0,0 @@
-//! Licensed under the Apache License, Version 2.0
-//! https://www.apache.org/licenses/LICENSE-2.0 or the MIT license
-//! https://opensource.org/licenses/MIT, at your
-//! option. This file may not be copied, modified, or distributed
-//! except according to those terms.
-#![no_std]
-#![allow(deprecated)]
-
-use crate::it::chain;
-use crate::it::free::put_back;
-use crate::it::interleave;
-use crate::it::intersperse;
-use crate::it::intersperse_with;
-use crate::it::iproduct;
-use crate::it::izip;
-use crate::it::multizip;
-use crate::it::Itertools;
-use core::iter;
-use itertools as it;
-
-#[allow(dead_code)]
-fn get_esi_then_esi<I: ExactSizeIterator + Clone>(it: I) {
- fn is_esi(_: impl ExactSizeIterator) {}
- is_esi(it.clone().get(1..4));
- is_esi(it.clone().get(1..=4));
- is_esi(it.clone().get(1..));
- is_esi(it.clone().get(..4));
- is_esi(it.clone().get(..=4));
- is_esi(it.get(..));
-}
-
-#[allow(dead_code)]
-fn get_dei_esi_then_dei_esi<I: DoubleEndedIterator + ExactSizeIterator + Clone>(it: I) {
- fn is_dei_esi(_: impl DoubleEndedIterator + ExactSizeIterator) {}
- is_dei_esi(it.clone().get(1..4));
- is_dei_esi(it.clone().get(1..=4));
- is_dei_esi(it.clone().get(1..));
- is_dei_esi(it.clone().get(..4));
- is_dei_esi(it.clone().get(..=4));
- is_dei_esi(it.get(..));
-}
-
-#[test]
-fn get_1_max() {
- let mut it = (0..5).get(1..=usize::MAX);
- assert_eq!(it.next(), Some(1));
- assert_eq!(it.next_back(), Some(4));
-}
-
-#[test]
-#[should_panic]
-fn get_full_range_inclusive() {
- let _it = (0..5).get(0..=usize::MAX);
-}
-
-#[test]
-fn product0() {
- let mut prod = iproduct!();
- assert_eq!(prod.next(), Some(()));
- assert!(prod.next().is_none());
-}
-
-#[test]
-fn iproduct1() {
- let s = "αβ";
-
- let mut prod = iproduct!(s.chars());
- assert_eq!(prod.next(), Some(('α',)));
- assert_eq!(prod.next(), Some(('β',)));
- assert!(prod.next().is_none());
-}
-
-#[test]
-fn product2() {
- let s = "αβ";
-
- let mut prod = iproduct!(s.chars(), 0..2);
- assert!(prod.next() == Some(('α', 0)));
- assert!(prod.next() == Some(('α', 1)));
- assert!(prod.next() == Some(('β', 0)));
- assert!(prod.next() == Some(('β', 1)));
- assert!(prod.next().is_none());
-}
-
-#[test]
-fn product_temporary() {
- for (_x, _y, _z) in iproduct!(
- [0, 1, 2].iter().cloned(),
- [0, 1, 2].iter().cloned(),
- [0, 1, 2].iter().cloned()
- ) {
- // ok
- }
-}
-
-#[test]
-fn izip_macro() {
- let mut zip = izip!(2..3);
- assert!(zip.next() == Some(2));
- assert!(zip.next().is_none());
-
- let mut zip = izip!(0..3, 0..2, 0..2i8);
- for i in 0..2 {
- assert!((i as usize, i, i as i8) == zip.next().unwrap());
- }
- assert!(zip.next().is_none());
-
- let xs: [isize; 0] = [];
- let mut zip = izip!(0..3, 0..2, 0..2i8, &xs);
- assert!(zip.next().is_none());
-}
-
-#[test]
-fn izip2() {
- let _zip1: iter::Zip<_, _> = izip!(1.., 2..);
- let _zip2: iter::Zip<_, _> = izip!(1.., 2..,);
-}
-
-#[test]
-fn izip3() {
- let mut zip: iter::Map<iter::Zip<_, _>, _> = izip!(0..3, 0..2, 0..2i8);
- for i in 0..2 {
- assert!((i as usize, i, i as i8) == zip.next().unwrap());
- }
- assert!(zip.next().is_none());
-}
-
-#[test]
-fn multizip3() {
- let mut zip = multizip((0..3, 0..2, 0..2i8));
- for i in 0..2 {
- assert!((i as usize, i, i as i8) == zip.next().unwrap());
- }
- assert!(zip.next().is_none());
-
- let xs: [isize; 0] = [];
- let mut zip = multizip((0..3, 0..2, 0..2i8, xs.iter()));
- assert!(zip.next().is_none());
-
- for (_, _, _, _, _) in multizip((0..3, 0..2, xs.iter(), &xs, xs.to_vec())) {
- /* test compiles */
- }
-}
-
-#[test]
-fn chain_macro() {
- let mut chain = chain!(2..3);
- assert!(chain.next() == Some(2));
- assert!(chain.next().is_none());
-
- let mut chain = chain!(0..2, 2..3, 3..5i8);
- for i in 0..5i8 {
- assert_eq!(Some(i), chain.next());
- }
- assert!(chain.next().is_none());
-
- let mut chain = chain!();
- assert_eq!(chain.next(), Option::<()>::None);
-}
-
-#[test]
-fn chain2() {
- let _ = chain!(1.., 2..);
- let _ = chain!(1.., 2..,);
-}
-
-#[test]
-fn write_to() {
- let xs = [7, 9, 8];
- let mut ys = [0; 5];
- let cnt = ys.iter_mut().set_from(xs.iter().copied());
- assert!(cnt == xs.len());
- assert!(ys == [7, 9, 8, 0, 0]);
-
- let cnt = ys.iter_mut().set_from(0..10);
- assert!(cnt == ys.len());
- assert!(ys == [0, 1, 2, 3, 4]);
-}
-
-#[test]
-fn test_interleave() {
- let xs: [u8; 0] = [];
- let ys = [7u8, 9, 8, 10];
- let zs = [2u8, 77];
- let it = interleave(xs.iter(), ys.iter());
- it::assert_equal(it, ys.iter());
-
- let rs = [7u8, 2, 9, 77, 8, 10];
- let it = interleave(ys.iter(), zs.iter());
- it::assert_equal(it, rs.iter());
-}
-
-#[test]
-fn test_intersperse() {
- let xs = [1u8, 2, 3];
- let ys = [1u8, 0, 2, 0, 3];
- let it = intersperse(&xs, &0);
- it::assert_equal(it, ys.iter());
-}
-
-#[test]
-fn test_intersperse_with() {
- let xs = [1u8, 2, 3];
- let ys = [1u8, 10, 2, 10, 3];
- let i = 10;
- let it = intersperse_with(&xs, || &i);
- it::assert_equal(it, ys.iter());
-}
-
-#[test]
-fn dropping() {
- let xs = [1, 2, 3];
- let mut it = xs.iter().dropping(2);
- assert_eq!(it.next(), Some(&3));
- assert!(it.next().is_none());
- let mut it = xs.iter().dropping(5);
- assert!(it.next().is_none());
-}
-
-#[test]
-fn batching() {
- let xs = [0, 1, 2, 1, 3];
- let ys = [(0, 1), (2, 1)];
-
- // An iterator that gathers elements up in pairs
- let pit = xs
- .iter()
- .cloned()
- .batching(|it| it.next().and_then(|x| it.next().map(|y| (x, y))));
- it::assert_equal(pit, ys.iter().cloned());
-}
-
-#[test]
-fn test_put_back() {
- let xs = [0, 1, 1, 1, 2, 1, 3, 3];
- let mut pb = put_back(xs.iter().cloned());
- pb.next();
- pb.put_back(1);
- pb.put_back(0);
- it::assert_equal(pb, xs.iter().cloned());
-}
-
-#[test]
-fn merge() {
- it::assert_equal((0..10).step_by(2).merge((1..10).step_by(2)), 0..10);
-}
-
-#[test]
-fn repeatn() {
- let s = "α";
- let mut it = it::repeat_n(s, 3);
- assert_eq!(it.len(), 3);
- assert_eq!(it.next(), Some(s));
- assert_eq!(it.next(), Some(s));
- assert_eq!(it.next(), Some(s));
- assert_eq!(it.next(), None);
- assert_eq!(it.next(), None);
-}
-
-#[test]
-fn count_clones() {
- // Check that RepeatN only clones N - 1 times.
-
- use core::cell::Cell;
- #[derive(PartialEq, Debug)]
- struct Foo {
- n: Cell<usize>,
- }
-
- impl Clone for Foo {
- fn clone(&self) -> Self {
- let n = self.n.get();
- self.n.set(n + 1);
- Self {
- n: Cell::new(n + 1),
- }
- }
- }
-
- for n in 0..10 {
- let f = Foo { n: Cell::new(0) };
- let it = it::repeat_n(f, n);
- // drain it
- let last = it.last();
- if n == 0 {
- assert_eq!(last, None);
- } else {
- assert_eq!(
- last,
- Some(Foo {
- n: Cell::new(n - 1)
- })
- );
- }
- }
-}
-
-#[test]
-fn part() {
- let mut data = [7, 1, 1, 9, 1, 1, 3];
- let i = it::partition(&mut data, |elt| *elt >= 3);
- assert_eq!(i, 3);
- assert_eq!(data, [7, 3, 9, 1, 1, 1, 1]);
-
- let i = it::partition(&mut data, |elt| *elt == 1);
- assert_eq!(i, 4);
- assert_eq!(data, [1, 1, 1, 1, 9, 3, 7]);
-
- let mut data = [1, 2, 3, 4, 5, 6, 7, 8, 9];
- let i = it::partition(&mut data, |elt| *elt % 3 == 0);
- assert_eq!(i, 3);
- assert_eq!(data, [9, 6, 3, 4, 5, 2, 7, 8, 1]);
-}
-
-#[test]
-fn tree_reduce() {
- for i in 0..100 {
- assert_eq!((0..i).tree_reduce(|x, y| x + y), (0..i).fold1(|x, y| x + y));
- }
-}
-
-#[test]
-fn exactly_one() {
- assert_eq!((0..10).filter(|&x| x == 2).exactly_one().unwrap(), 2);
- assert!((0..10)
- .filter(|&x| x > 1 && x < 4)
- .exactly_one()
- .unwrap_err()
- .eq(2..4));
- assert!((0..10)
- .filter(|&x| x > 1 && x < 5)
- .exactly_one()
- .unwrap_err()
- .eq(2..5));
- assert!((0..10)
- .filter(|&_| false)
- .exactly_one()
- .unwrap_err()
- .eq(0..0));
-}
-
-#[test]
-fn at_most_one() {
- assert_eq!((0..10).filter(|&x| x == 2).at_most_one().unwrap(), Some(2));
- assert!((0..10)
- .filter(|&x| x > 1 && x < 4)
- .at_most_one()
- .unwrap_err()
- .eq(2..4));
- assert!((0..10)
- .filter(|&x| x > 1 && x < 5)
- .at_most_one()
- .unwrap_err()
- .eq(2..5));
- assert_eq!((0..10).filter(|&_| false).at_most_one().unwrap(), None);
-}
-
-#[test]
-fn sum1() {
- let v: &[i32] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
- assert_eq!(v[..0].iter().cloned().sum1::<i32>(), None);
- assert_eq!(v[1..2].iter().cloned().sum1::<i32>(), Some(1));
- assert_eq!(v[1..3].iter().cloned().sum1::<i32>(), Some(3));
- assert_eq!(v.iter().cloned().sum1::<i32>(), Some(55));
-}
-
-#[test]
-fn product1() {
- let v: &[i32] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
- assert_eq!(v[..0].iter().cloned().product1::<i32>(), None);
- assert_eq!(v[..1].iter().cloned().product1::<i32>(), Some(0));
- assert_eq!(v[1..3].iter().cloned().product1::<i32>(), Some(2));
- assert_eq!(v[1..5].iter().cloned().product1::<i32>(), Some(24));
-}
-
-#[test]
-fn next_array() {
- let v = [1, 2, 3, 4, 5];
- let mut iter = v.iter();
- assert_eq!(iter.next_array(), Some([]));
- assert_eq!(iter.next_array().map(|[&x, &y]| [x, y]), Some([1, 2]));
- assert_eq!(iter.next_array().map(|[&x, &y]| [x, y]), Some([3, 4]));
- assert_eq!(iter.next_array::<2>(), None);
-}
-
-#[test]
-fn collect_array() {
- let v = [1, 2];
- let iter = v.iter().cloned();
- assert_eq!(iter.collect_array(), Some([1, 2]));
-
- let v = [1];
- let iter = v.iter().cloned();
- assert_eq!(iter.collect_array::<2>(), None);
-
- let v = [1, 2, 3];
- let iter = v.iter().cloned();
- assert_eq!(iter.collect_array::<2>(), None);
-}