use tokitai_operator::object::Tensor;
#[test]
fn tensor_into_iter_consumes_data() {
let v = Tensor::vector(
tokitai_operator::domain::DomainId::new("integer"),
3,
vec![1_i64, 2, 3],
);
let collected: Vec<i64> = v.into_iter().collect();
assert_eq!(collected, vec![1, 2, 3]);
}
#[test]
fn tensor_from_iter_collects_i64_values() {
let t: Tensor<i64> = (0..6).collect();
assert_eq!(t.rank(), 1);
assert_eq!(t.as_slice(), &[0, 1, 2, 3, 4, 5]);
}
#[test]
fn tensor_from_iter_with_explicit_collect_preserves_order() {
let source = vec![10, 20, 30, 40];
let t: Tensor<i64> = source.iter().copied().collect();
assert_eq!(t.as_slice(), &[10, 20, 30, 40]);
}
#[test]
fn empty_tensor_from_iter_works() {
let t: Tensor<i64> = std::iter::empty::<i64>().collect();
assert!(t.is_empty());
assert_eq!(t.len(), 0);
assert_eq!(t.rank(), 1);
}
#[test]
fn tensor_into_iter_supports_iterator_chains() {
let t: Tensor<i64> = (1..=5).collect();
let sum: i64 = t.into_iter().sum();
assert_eq!(sum, 15);
}
#[test]
fn tensor_from_iter_with_filter_and_map() {
let t: Tensor<i64> = (0..10).filter(|x| x % 2 == 0).map(|x| x * x).collect();
assert_eq!(t.as_slice(), &[0, 4, 16, 36, 64]);
}