use scirs2_sparse::{CooArray, CsrArray, SparseArray};
#[test]
fn test_u8_csr_array() {
let rows = vec![0, 0, 1, 2, 2];
let cols = vec![0, 2, 1, 0, 2];
let data: Vec<u8> = vec![1, 1, 1, 1, 1];
let shape = (3, 3);
let csr = CsrArray::from_triplets(&rows, &cols, &data, shape, false).expect("Operation failed");
assert_eq!(csr.shape(), (3, 3));
assert_eq!(csr.nnz(), 5);
assert_eq!(csr.get(0, 0), 1);
assert_eq!(csr.get(0, 1), 0);
assert_eq!(csr.get(1, 1), 1);
}
#[test]
fn test_i32_coo_array() {
let rows = vec![0, 0, 1, 2];
let cols = vec![0, 1, 1, 2];
let data: Vec<i32> = vec![2, -1, 3, 4];
let shape = (3, 3);
let coo = CooArray::from_triplets(&rows, &cols, &data, shape, false).expect("Operation failed");
assert_eq!(coo.shape(), (3, 3));
assert_eq!(coo.nnz(), 4);
assert_eq!(coo.get(0, 0), 2);
assert_eq!(coo.get(0, 1), -1);
assert_eq!(coo.get(2, 2), 4);
}
#[test]
fn test_u64_sparse_operations() {
let rows = vec![0, 1, 2];
let cols = vec![0, 1, 2];
let data: Vec<u64> = vec![10, 20, 30];
let shape = (3, 3);
let sparse =
CsrArray::from_triplets(&rows, &cols, &data, shape, false).expect("Operation failed");
let dense = sparse.to_array();
assert_eq!(dense[[0, 0]], 10);
assert_eq!(dense[[1, 1]], 20);
assert_eq!(dense[[2, 2]], 30);
assert_eq!(dense[[0, 1]], 0);
}
#[test]
fn test_u8_pauli_matrix() {
let rows = vec![0, 1];
let cols = vec![1, 0];
let data: Vec<u8> = vec![1, 1]; let shape = (2, 2);
let pauli_x =
CsrArray::from_triplets(&rows, &cols, &data, shape, false).expect("Operation failed");
assert_eq!(pauli_x.get(0, 0), 0);
assert_eq!(pauli_x.get(0, 1), 1);
assert_eq!(pauli_x.get(1, 0), 1);
assert_eq!(pauli_x.get(1, 1), 0);
assert_eq!(pauli_x.nnz(), 2);
}
#[test]
fn test_integer_zero_handling() {
let rows = vec![0, 1, 2];
let cols = vec![0, 1, 2];
let data: Vec<i32> = vec![1, 0, 3]; let shape = (3, 3);
let mut sparse =
CsrArray::from_triplets(&rows, &cols, &data, shape, false).expect("Operation failed");
assert_eq!(sparse.nnz(), 3);
sparse.eliminate_zeros();
assert_eq!(sparse.nnz(), 2);
assert_eq!(sparse.get(0, 0), 1);
assert_eq!(sparse.get(1, 1), 0); assert_eq!(sparse.get(2, 2), 3);
}