hektor 0.2.2

A library for hekkin vectors.
Documentation
#![allow(bad_style)]
#![allow(clippy::float_cmp)]

use hektor::*;

#[test]
fn Vec2_mutators() {
  let mut v = Vec2::new(1.0, 2.0);
  *v.x_mut() = 7.0;
  assert_eq!(v.x(), 7.0);
  assert_eq!(v.y(), 2.0);
  *v.y_mut() = 12.0;
  assert_eq!(v.x(), 7.0);
  assert_eq!(v.y(), 12.0);
}

#[test]
fn Vec3_mutators() {
  let mut v = Vec3::new(1.0, 2.0, 3.0);
  *v.x_mut() = 7.0;
  assert_eq!(v.x(), 7.0);
  assert_eq!(v.y(), 2.0);
  assert_eq!(v.z(), 3.0);
  *v.y_mut() = 12.0;
  assert_eq!(v.x(), 7.0);
  assert_eq!(v.y(), 12.0);
  assert_eq!(v.z(), 3.0);
  *v.z_mut() = -1.0;
  assert_eq!(v.x(), 7.0);
  assert_eq!(v.y(), 12.0);
  assert_eq!(v.z(), -1.0);
}

#[test]
fn Vec4_mutators() {
  let mut v = Vec4::new(1.0, 2.0, 3.0, 4.0);
  *v.x_mut() = 7.0;
  assert_eq!(v.x(), 7.0);
  assert_eq!(v.y(), 2.0);
  assert_eq!(v.z(), 3.0);
  assert_eq!(v.w(), 4.0);
  *v.y_mut() = 12.0;
  assert_eq!(v.x(), 7.0);
  assert_eq!(v.y(), 12.0);
  assert_eq!(v.z(), 3.0);
  assert_eq!(v.w(), 4.0);
  *v.z_mut() = -1.0;
  assert_eq!(v.x(), 7.0);
  assert_eq!(v.y(), 12.0);
  assert_eq!(v.z(), -1.0);
  assert_eq!(v.w(), 4.0);
  *v.w_mut() = 20.0;
  assert_eq!(v.x(), 7.0);
  assert_eq!(v.y(), 12.0);
  assert_eq!(v.z(), -1.0);
  assert_eq!(v.w(), 20.0);
}

#[test]
fn Mat2_mutators() {
  let x_axis = Vec2::new(1.0, 2.0);
  let y_axis = Vec2::new(11.0, 12.0);
  let mut m = Mat2::new(x_axis, y_axis);
  *m.x_axis_mut() = Vec2::default();
  assert_eq!(m.x_axis(), Vec2::default());
  assert_eq!(m.y_axis(), y_axis);
  *m.y_axis_mut() = Vec2::default();
  assert_eq!(m.x_axis(), Vec2::default());
  assert_eq!(m.y_axis(), Vec2::default());
}

#[test]
fn Mat3_mutators() {
  let x_axis = Vec3::new(1.0, 2.0, 3.0);
  let y_axis = Vec3::new(11.0, 12.0, 13.0);
  let z_axis = Vec3::new(21.0, 22.0, 23.0);
  let mut m = Mat3::new(x_axis, y_axis, z_axis);
  *m.x_axis_mut() = Vec3::default();
  assert_eq!(m.x_axis(), Vec3::default());
  assert_eq!(m.y_axis(), y_axis);
  assert_eq!(m.z_axis(), z_axis);
  *m.y_axis_mut() = Vec3::default();
  assert_eq!(m.x_axis(), Vec3::default());
  assert_eq!(m.y_axis(), Vec3::default());
  assert_eq!(m.z_axis(), z_axis);
  *m.z_axis_mut() = Vec3::default();
  assert_eq!(m.x_axis(), Vec3::default());
  assert_eq!(m.y_axis(), Vec3::default());
  assert_eq!(m.z_axis(), Vec3::default());
}

#[test]
fn Mat4_mutators() {
  let x_axis = Vec4::new(1.0, 2.0, 3.0, 4.0);
  let y_axis = Vec4::new(11.0, 12.0, 13.0, 14.0);
  let z_axis = Vec4::new(21.0, 22.0, 23.0, 24.0);
  let w_axis = Vec4::new(31.0, 32.0, 33.0, 34.0);
  let mut m = Mat4::new(x_axis, y_axis, z_axis, w_axis);
  *m.x_axis_mut() = Vec4::default();
  assert_eq!(m.x_axis(), Vec4::default());
  assert_eq!(m.y_axis(), y_axis);
  assert_eq!(m.z_axis(), z_axis);
  assert_eq!(m.w_axis(), w_axis);
  *m.y_axis_mut() = Vec4::default();
  assert_eq!(m.x_axis(), Vec4::default());
  assert_eq!(m.y_axis(), Vec4::default());
  assert_eq!(m.z_axis(), z_axis);
  assert_eq!(m.w_axis(), w_axis);
  *m.z_axis_mut() = Vec4::default();
  assert_eq!(m.x_axis(), Vec4::default());
  assert_eq!(m.y_axis(), Vec4::default());
  assert_eq!(m.z_axis(), Vec4::default());
  assert_eq!(m.w_axis(), w_axis);
  *m.w_axis_mut() = Vec4::default();
  assert_eq!(m.x_axis(), Vec4::default());
  assert_eq!(m.y_axis(), Vec4::default());
  assert_eq!(m.z_axis(), Vec4::default());
  assert_eq!(m.w_axis(), Vec4::default());
}

#[test]
fn Quat_mutators() {
  let mut q = Quat::new(1.0, 2.0, 3.0, 4.0);
  *q.a_mut() = 7.0;
  assert_eq!(q.a(), 7.0);
  assert_eq!(q.b(), 2.0);
  assert_eq!(q.c(), 3.0);
  assert_eq!(q.d(), 4.0);
  *q.b_mut() = 12.0;
  assert_eq!(q.a(), 7.0);
  assert_eq!(q.b(), 12.0);
  assert_eq!(q.c(), 3.0);
  assert_eq!(q.d(), 4.0);
  *q.c_mut() = -1.0;
  assert_eq!(q.a(), 7.0);
  assert_eq!(q.b(), 12.0);
  assert_eq!(q.c(), -1.0);
  assert_eq!(q.d(), 4.0);
  *q.d_mut() = 20.0;
  assert_eq!(q.a(), 7.0);
  assert_eq!(q.b(), 12.0);
  assert_eq!(q.c(), -1.0);
  assert_eq!(q.d(), 20.0);
}