coord2d 0.4.0

rust lib for coordinate in 2d system
Documentation
use crate::*;

#[test]
fn new_vector() {
    let start: coord::Coord = new_coord!(2.5, 3.3);
    let end: coord::Coord = new_coord!(2.5);

    let vec: vector::Vector = new_vector!(start, end);
    assert_eq!(vec.start, start);
    assert_eq!(vec.end, end);

    let vec: vector::Vector = new_vector!(end);
    assert_eq!(vec.start, new_coord!());
    assert_eq!(vec.end, end);

    let vec: vector::Vector = new_vector!();

    assert_eq!(vec.start, new_coord!());
    assert_eq!(vec.end, new_coord!());
}

#[test]
fn to_vec() {
    let start: coord::Coord = new_coord!(2.5, 3.3);
    let end: coord::Coord = new_coord!(2.5);

    let vec: vector::Vector = new_vector!(start, end);
    let g = vec.to_vec();
    assert_eq!(g[0], start);
    assert_eq!(g[1], end);
}

#[test]
fn to_tuple() {
    let start: coord::Coord = new_coord!(2.5, 3.3);
    let end: coord::Coord = new_coord!(2.5);

    let vec: vector::Vector = new_vector!(start, end);
    let g = vec.to_tuple();
    assert_eq!(g.0, start);
    assert_eq!(g.1, end);
}

#[test]
fn split() {
    let start: coord::Coord = new_coord!(2.5, 3.3);
    let end: coord::Coord = new_coord!(2.5);

    let vec: vector::Vector = new_vector!(start, end);
    let (s, e, m) = vec.to_tuple();
    assert_eq!(s, start);
    assert_eq!(e, end);
    assert_eq!(m, vec.magnitude);
}

#[test]
fn operations() {
    let start: coord::Coord = new_coord!(1, 2);
    let end: coord::Coord = new_coord!(1, 2);
    let vec1: vector::Vector = new_vector!(start, end);

    let vec2: vector::Vector = new_vector!(start, end);

    assert_eq!(vec1 + vec2, new_vector!(new_coord!(2, 4), new_coord!(2, 4)));
    assert_eq!(vec1 - vec2, new_vector!(new_coord!(0, 0), new_coord!(0, 0)));
    assert_eq!(vec1 * vec2, new_vector!(new_coord!(1, 4), new_coord!(1, 4)));
    assert_eq!(vec1 / vec2, new_vector!(new_coord!(1, 1), new_coord!(1, 1)));
}

#[test]
#[should_panic(expected = "[Vector]: division by 0")]
fn division_zero() {
    let start: coord::Coord = new_coord!(1, 0);
    let end: coord::Coord = new_coord!(1, 0);
    let vec1: vector::Vector = new_vector!(start, end);

    let vec2: vector::Vector = new_vector!(start, end);

    assert_eq!(vec1 / vec2, new_vector!());
}