#![allow(clippy::float_cmp)]
mod particles;
use self::particles::{Particle, ParticleVec};
#[test]
fn iter() {
let mut particles = ParticleVec::new();
particles.push(Particle::new(String::from("Na"), 56.0));
particles.push(Particle::new(String::from("Cl"), 56.0));
particles.push(Particle::new(String::from("Zn"), 56.0));
let mut iter = particles.iter();
assert_eq!(iter.next().unwrap().name, "Na");
assert_eq!(iter.next().unwrap().name, "Cl");
assert_eq!(iter.next().unwrap().name, "Zn");
assert!(iter.next().is_none());
let slice = particles.as_slice();
let mut iter = slice.iter();
assert_eq!(iter.next().unwrap().name, "Na");
assert_eq!(iter.next().unwrap().name, "Cl");
assert_eq!(iter.next().unwrap().name, "Zn");
assert!(iter.next().is_none());
}
#[test]
fn iter_mut() {
let mut particles = ParticleVec::new();
particles.push(Particle::new(String::from("Na"), 0.0));
particles.push(Particle::new(String::from("Cl"), 0.0));
particles.push(Particle::new(String::from("Zn"), 0.0));
for particle in particles.iter_mut() {
*particle.mass += 1.0;
}
assert_eq!(*particles.index(0).mass, 1.0);
assert_eq!(*particles.index(1).mass, 1.0);
assert_eq!(*particles.index(2).mass, 1.0);
{
let mut slice = particles.as_mut_slice();
for particle in slice.iter_mut() {
*particle.mass += 1.0;
}
}
assert_eq!(*particles.index(0).mass, 2.0);
assert_eq!(*particles.index(1).mass, 2.0);
assert_eq!(*particles.index(2).mass, 2.0);
}
#[test]
fn from_iter() {
let vec_with_particles = vec![
Particle::new(String::from("Na"), 0.0),
Particle::new(String::from("Cl"), 0.0),
Particle::new(String::from("Zn"), 0.0),
];
let particles_from_iter: ParticleVec = vec_with_particles.into_iter().collect();
let mut particles = ParticleVec::new();
particles.push(Particle::new(String::from("Na"), 0.0));
particles.push(Particle::new(String::from("Cl"), 0.0));
particles.push(Particle::new(String::from("Zn"), 0.0));
assert_eq!(particles, particles_from_iter)
}