matrix_2d 0.1.0

A matrix implementation that mimics what the canvas matrix functions do on html5 canvas.
Documentation
use crate::matrix_2d::Matrix2D;

fn setup() -> Matrix2D {
  Matrix2D::new()
}

#[test]
fn new_returns_identity() {
  let m = setup();
  assert_eq!(m.a, 1.0);
  assert_eq!(m.b, 0.0);
  assert_eq!(m.c, 0.0);
  assert_eq!(m.d, 1.0);
  assert_eq!(m.e, 0.0);
  assert_eq!(m.f, 0.0);
}

#[test]
fn translate_mut_performs_translation() {
  let mut m = setup();
  assert_eq!(m.e, 0.0);
  assert_eq!(m.f, 0.0);
  m.translate_mut(100.0, 100.0);
  assert_eq!(m.e, 100.0);
  assert_eq!(m.f, 100.0);
}

#[test]
fn translate_performs_translation_on_new_matrix() {
  let m = setup();
  let n = m.translate(100.0, 100.0);
  assert_ne!(m.e, n.e);
  assert_ne!(m.f, n.f);
}

#[test]
fn scale_mut_performs_scale() {
  let mut m = setup();
  m.scale_mut(2.0, 3.0);
  assert_eq!(m.a, 2.0);
  assert_eq!(m.b, 0.0);
  assert_eq!(m.c, 0.0);
  assert_eq!(m.d, 3.0);
}

#[test]
fn scale_performs_scale_on_new_matrix() {
  let m = setup();
  let n = m.scale(2.0, 3.0);
  assert_ne!(m.a, n.a);
  assert_ne!(m.d, n.d);
  assert_eq!(n.a, 2.0);
  assert_eq!(n.d, 3.0);
}