From 5efc2e4075df980e11f36f0dd2573627b71a377e Mon Sep 17 00:00:00 2001 From: ickk Date: Thu, 2 May 2024 16:35:20 +1000 Subject: [PATCH] remove `approx` from default-features - allow `approx` in tests test various feature configurations in ci impl `Div` for multivector/scalar --- .github/workflows/rust.yml | 16 +++++++++++++--- ega/Cargo.toml | 7 ++++++- ega/src/lib.rs | 2 +- ega/src/operators/div.rs | 3 +++ ega/src/operators/ideal_norm.rs | 6 ++++++ ega/src/operators/norm.rs | 5 +++++ ega/src/operators/normalise.rs | 6 ++++++ ega/src/optional_features/mod.rs | 2 +- 8 files changed, 41 insertions(+), 6 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a69c7e3..6ac9add 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -10,13 +10,23 @@ env: CARGO_TERM_COLOR: always jobs: - build: - + test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + - name: Build run: cargo build --verbose - - name: Run tests + + - name: test run: cargo test --verbose + + - name: test no-default-features + run: cargo test --no-default-features + + - name: test libm + run: cargo test --no-default-features --features=libm + + - name: test all-features + run: cargo test --all-features diff --git a/ega/Cargo.toml b/ega/Cargo.toml index 7c9fbbc..85997d5 100644 --- a/ega/Cargo.toml +++ b/ega/Cargo.toml @@ -9,5 +9,10 @@ libm = { version = "0.2.0", optional = true } approx = { version = "0.5", optional = true } [features] -default = ["std", "approx"] +default = ["std"] std = [] +libm = ["dep:libm"] +approx = ["dep:approx"] + +[dev-dependencies] +approx = { version = "0.5" } diff --git a/ega/src/lib.rs b/ega/src/lib.rs index 765dbde..5c91a72 100644 --- a/ega/src/lib.rs +++ b/ega/src/lib.rs @@ -1,7 +1,7 @@ #![cfg_attr(not(any(feature = "std", test, doctest)), no_std)] #[cfg(feature = "libm")] -use libm::Libm; +use ::libm::Libm; mod operators; mod optional_features; diff --git a/ega/src/operators/div.rs b/ega/src/operators/div.rs index 0d377f9..a16a062 100644 --- a/ega/src/operators/div.rs +++ b/ega/src/operators/div.rs @@ -49,3 +49,6 @@ impl_div! { Trivector, f32 => Trivector } impl_div! { Trivector, Scalar => Trivector } impl_div! { Trivector, Vector => Multivector } impl_div! { Trivector, Trivector => Multivector } + +impl_div! { Multivector, f32 => Multivector } +impl_div! { Multivector, Scalar => Multivector } diff --git a/ega/src/operators/ideal_norm.rs b/ega/src/operators/ideal_norm.rs index ee4795d..2f0347c 100644 --- a/ega/src/operators/ideal_norm.rs +++ b/ega/src/operators/ideal_norm.rs @@ -99,6 +99,7 @@ mod tests { use super::*; use crate::test_values::*; + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn ideal_norm_multivector_1() { let result = MULTIVECTOR_A.ideal_norm(); @@ -108,6 +109,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn ideal_norm_scalar_1() { let result = SCALAR_A.ideal_norm(); @@ -116,6 +118,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn ideal_norm_vector_1() { let result = VECTOR_A.ideal_norm(); @@ -124,6 +127,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn ideal_norm_bivector_1() { let result = BIVECTOR_A.ideal_norm(); @@ -132,6 +136,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn ideal_norm_trivector_1() { let result = TRIVECTOR_A.ideal_norm(); @@ -141,6 +146,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn ideal_norm_pseudoscalar_1() { let result = PSEUDOSCALAR_A.ideal_norm(); diff --git a/ega/src/operators/norm.rs b/ega/src/operators/norm.rs index bbb52c9..0bc08ea 100644 --- a/ega/src/operators/norm.rs +++ b/ega/src/operators/norm.rs @@ -97,6 +97,7 @@ mod tests { use super::*; use crate::test_values::*; + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn norm_multivector() { let result = MULTIVECTOR_A.norm(); @@ -116,6 +117,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected_dot_product)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn norm_scalar() { let result = SCALAR_A.norm(); @@ -123,6 +125,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn norm_vector() { let result = VECTOR_A.norm(); @@ -139,6 +142,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected_dot_product)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn norm_bivector() { let result = BIVECTOR_A.norm(); @@ -155,6 +159,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected_dot_product)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn norm_trivector() { let result = TRIVECTOR_A.norm(); diff --git a/ega/src/operators/normalise.rs b/ega/src/operators/normalise.rs index 6324c11..98402be 100644 --- a/ega/src/operators/normalise.rs +++ b/ega/src/operators/normalise.rs @@ -6,6 +6,7 @@ pub trait Normalise { fn normalise(self) -> Self; } +#[cfg(any(feature = "std", feature = "libm"))] impl Normalise for Scalar { #[inline] fn normalise(self) -> Self { @@ -13,6 +14,7 @@ impl Normalise for Scalar { } } +#[cfg(any(feature = "std", feature = "libm"))] impl Normalise for Vector { #[inline] fn normalise(self) -> Self { @@ -20,6 +22,7 @@ impl Normalise for Vector { } } +#[cfg(any(feature = "std", feature = "libm"))] impl Normalise for Trivector { #[inline] fn normalise(self) -> Self { @@ -43,6 +46,7 @@ mod tests { use super::*; use crate::test_values::*; + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn normalise_scalar() { let result = SCALAR_A.normalise(); @@ -50,6 +54,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn normalise_vector() { let result = VECTOR_A.normalise(); @@ -62,6 +67,7 @@ mod tests { assert_eq!(dbg!(result), dbg!(expected)); } + #[cfg(any(feature = "std", feature = "libm"))] #[test] fn normalise_trivector() { let result = TRIVECTOR_A.normalise(); diff --git a/ega/src/optional_features/mod.rs b/ega/src/optional_features/mod.rs index 86d5706..30285e5 100644 --- a/ega/src/optional_features/mod.rs +++ b/ega/src/optional_features/mod.rs @@ -1,2 +1,2 @@ -#[cfg(feature = "approx")] +#[cfg(any(feature = "approx", test))] mod approx;