2015-10-04 02:59:26 -04:00
|
|
|
extern crate sigils;
|
|
|
|
|
2015-10-09 13:02:54 -04:00
|
|
|
use std::ops::{Add, Sub, Mul, Div, Rem};
|
2016-05-12 15:49:24 -04:00
|
|
|
use std::ops::{AddAssign, SubAssign, MulAssign, DivAssign, RemAssign};
|
2015-10-04 23:33:37 -04:00
|
|
|
use sigils::vector::*;
|
2015-10-04 02:59:26 -04:00
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_creation()
|
|
|
|
{
|
2015-10-04 23:33:37 -04:00
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(1.0f32);
|
2015-10-04 02:59:26 -04:00
|
|
|
|
|
|
|
assert_eq!(v.x, 1.0f32);
|
|
|
|
}
|
2015-10-09 13:02:54 -04:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_add()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(1.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(4.0f32);
|
|
|
|
let scalar: f32 = 4.0f32;
|
|
|
|
|
|
|
|
let v_three = v.add(&v_two);
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v.add(v_two);
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v + &v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v + v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v + &v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v + v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v + 4.0f32;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v + 4.0f32;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v + scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v + scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v + &scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v + &scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_sub()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(9.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(4.0f32);
|
|
|
|
let scalar: f32 = 4.0f32;
|
|
|
|
|
|
|
|
let v_three = v.sub(&v_two);
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v.sub(v_two);
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v - &v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v - v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v - &v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v - v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v - 4.0f32;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v - 4.0f32;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v - scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v - scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = &v - &scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let v_three = v - &scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_mul()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(3.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(5.0f32);
|
|
|
|
let scalar: f32 = 5.0f32;
|
|
|
|
|
|
|
|
let v_three = v.mul(&v_two);
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = v.mul(v_two);
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = v * &v_two;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = v * v_two;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = &v * &v_two;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = &v * v_two;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = &v * 5.0f32;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = v * 5.0f32;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = &v * scalar;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = v * scalar;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = &v * &scalar;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let v_three = v * &scalar;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_div()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(15.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(5.0f32);
|
|
|
|
let scalar: f32 = 5.0f32;
|
|
|
|
|
|
|
|
let v_three = v.div(&v_two);
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v.div(v_two);
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v / &v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v / v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v / &v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v / v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v / 5.0f32;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v / 5.0f32;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v / scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v / scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v / &scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v / &scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_rem()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(15.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(6.0f32);
|
|
|
|
let scalar: f32 = 6.0f32;
|
|
|
|
|
|
|
|
let v_three = v.rem(&v_two);
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v.rem(v_two);
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v % &v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v % v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v % &v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v % v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v % 6.0f32;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v % 6.0f32;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v % scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v % scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = &v % &scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let v_three = v % &scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
}
|
2016-05-12 15:49:24 -04:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_add_assign()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(1.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(4.0f32);
|
|
|
|
let scalar: f32 = 4.0f32;
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.add_assign(&v_two);
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.add_assign(v_two);
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three += &v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three += v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three += 4.0f32;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three += scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three += &scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_sub_assign()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(9.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(4.0f32);
|
|
|
|
let scalar: f32 = 4.0f32;
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.sub_assign(&v_two);
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.sub_assign(v_two);
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three -= &v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three -= v_two;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three -= 4.0f32;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three -= scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three -= &scalar;
|
|
|
|
assert_eq!(v_three.x, 5.0f32);
|
|
|
|
assert_eq!(v_three.y, 5.0f32);
|
|
|
|
assert_eq!(v_three.z, 5.0f32);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_mul_assign()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(3.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(5.0f32);
|
|
|
|
let scalar: f32 = 5.0f32;
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.mul_assign(&v_two);
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.mul_assign(v_two);
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three *= &v_two;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three *= v_two;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three *= 5.0f32;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three*= scalar;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three *= &scalar;
|
|
|
|
assert_eq!(v_three.x, 15.0f32);
|
|
|
|
assert_eq!(v_three.y, 15.0f32);
|
|
|
|
assert_eq!(v_three.z, 15.0f32);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_div_assign()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(15.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(5.0f32);
|
|
|
|
let scalar: f32 = 5.0f32;
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.div_assign(&v_two);
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.div_assign(v_two);
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three /= &v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three /= v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three /= 5.0f32;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three /= scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three /= &scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn vector_rem_assign()
|
|
|
|
{
|
|
|
|
let v: Vector3<f32> = Vector3::<f32>::from_value(15.0f32);
|
|
|
|
|
|
|
|
let v_two: Vector3<f32> = Vector3::<f32>::from_value(6.0f32);
|
|
|
|
let scalar: f32 = 6.0f32;
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.rem_assign(&v_two);
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three.rem_assign(v_two);
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three %= &v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three %= v_two;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three %= 6.0f32;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three %= scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
|
|
|
|
let mut v_three = v.clone();
|
|
|
|
v_three %= &scalar;
|
|
|
|
assert_eq!(v_three.x, 3.0f32);
|
|
|
|
assert_eq!(v_three.y, 3.0f32);
|
|
|
|
assert_eq!(v_three.z, 3.0f32);
|
|
|
|
}
|