From 49e6ba6e1b5a43617ce769eca5da8d4f157908f1 Mon Sep 17 00:00:00 2001 From: theHumanBorch Date: Fri, 5 Apr 2024 07:10:09 -0500 Subject: [PATCH] Add geometric testthat --- tests/testthat/test-runIbex.R | 11 +++++++++++ .../runIbex_Heavy_geometric_reduction.rds | Bin 0 -> 19452 bytes 2 files changed, 11 insertions(+) create mode 100644 tests/testthat/testdata/runIbex/runIbex_Heavy_geometric_reduction.rds diff --git a/tests/testthat/test-runIbex.R b/tests/testthat/test-runIbex.R index ceb8c36..d745702 100644 --- a/tests/testthat/test-runIbex.R +++ b/tests/testthat/test-runIbex.R @@ -43,4 +43,15 @@ test_that("runIbex works with seurat objects", { tolerance=1e-2 ) + ibex_example <- runIbex(ibex_example, + chains = "Heavy", + method = "geometric", + reduction.name = "Heavy_Geometric") + + expect_equal( + ibex_example@reductions$Heavy_Geometric@cell.embeddings, + getdata("runIbex", "runIbex_Heavy_geometric_reduction"), + tolerance=1e-2 + ) + }) diff --git a/tests/testthat/testdata/runIbex/runIbex_Heavy_geometric_reduction.rds b/tests/testthat/testdata/runIbex/runIbex_Heavy_geometric_reduction.rds new file mode 100644 index 0000000000000000000000000000000000000000..f28b24574d328834cedcee57622580fa05fd3849 GIT binary patch literal 19452 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 literal 0 HcmV?d00001