From 864ad4d40bc91cb855fc24ce82cba931c7ca412c Mon Sep 17 00:00:00 2001 From: Jon Janzen Date: Sat, 23 Jan 2021 17:59:10 -0700 Subject: [PATCH] first tuple test --- .gitignore | 2 +- tuples/Cargo.lock | 5 +++++ tuples/Cargo.toml | 9 +++++++++ tuples/src/lib.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 tuples/Cargo.lock create mode 100644 tuples/Cargo.toml create mode 100644 tuples/src/lib.rs diff --git a/.gitignore b/.gitignore index ea8c4bf..eb5a316 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/target +target diff --git a/tuples/Cargo.lock b/tuples/Cargo.lock new file mode 100644 index 0000000..8ba689a --- /dev/null +++ b/tuples/Cargo.lock @@ -0,0 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "tuples" +version = "0.1.0" diff --git a/tuples/Cargo.toml b/tuples/Cargo.toml new file mode 100644 index 0000000..016dc20 --- /dev/null +++ b/tuples/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "tuples" +version = "0.1.0" +authors = ["Jon Janzen "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/tuples/src/lib.rs b/tuples/src/lib.rs new file mode 100644 index 0000000..d464b4d --- /dev/null +++ b/tuples/src/lib.rs @@ -0,0 +1,47 @@ +type PointVector = (f32, f32, f32, f32); + +fn tuple_x(tuple: PointVector) -> f32 { + tuple.0 +} + +fn tuple_y(tuple: PointVector) -> f32 { + tuple.1 +} + +fn tuple_z(tuple: PointVector) -> f32 { + tuple.2 +} + +fn tuple_is_point(tuple: PointVector) -> bool { + tuple.3 == 1.0 +} +fn tuple_is_vector(tuple: PointVector) -> bool { + tuple.3 == 0.0 +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn get_point() { + let tuple = (4.3, -4.2, 3.1, 1.0); + + assert_eq!( 4.3, tuple_x(tuple)); + assert_eq!(-4.2, tuple_y(tuple)); + assert_eq!( 3.1, tuple_z(tuple)); + assert_eq!(true, tuple_is_point(tuple)); + assert_eq!(false, tuple_is_vector(tuple)); + } + + #[test] + fn get_vector() { + let tuple = (4.3, -4.2, 3.1, 0.0); + + assert_eq!( 4.3, tuple_x(tuple)); + assert_eq!(-4.2, tuple_y(tuple)); + assert_eq!( 3.1, tuple_z(tuple)); + assert_eq!(false, tuple_is_point(tuple)); + assert_eq!(true, tuple_is_vector(tuple)); + } +}