tests/testthat/test-minkowski.R

context("minkowski")

test_that("minkowski metric works as expected", {
  x <- matrix(rnorm(200), nrow = 100)
  
  # p = 2
  p <- 2
  dist_dist <- dist(x, method = "minkowski", p = p)
  dist_mat <- as.matrix(dist_dist)
  attr(dist_mat, "dimnames") <- NULL
  # check pdist and cdist 
  expect_equivalent(dist_dist, rdist(x, metric = "minkowski", p = p))
  expect_equivalent(dist_mat, pdist(x, metric = "minkowski", p = p))
  expect_equivalent(dist_mat, cdist(x, x, metric = "minkowski", p = p))
  expect_equivalent(dist_mat[1:2, 3:100], 
                    cdist(x[1:2, ], x[3:100, ], metric = "minkowski", p = p))
  expect_equivalent(dist_mat[1, 2:100, drop = FALSE], 
                    cdist(x[1, , drop = FALSE], x[2:100, , drop = FALSE], metric = "minkowski", p = p))
  
  # p = 1:
  p <- 1
  dist_dist <- dist(x, method = "minkowski", p = p)
  dist_mat <- as.matrix(dist_dist)
  attr(dist_mat, "dimnames") <- NULL
  # check pdist and cdist 
  expect_equivalent(dist_dist, rdist(x, metric = "minkowski", p = p))
  expect_equivalent(dist_mat, pdist(x, metric = "minkowski", p = p))
  expect_equivalent(dist_mat, cdist(x, x, metric = "minkowski", p = p))
  expect_equivalent(dist_mat[1:2, 3:100], 
                    cdist(x[1:2, ], x[3:100, ], metric = "minkowski", p = p))
  expect_equivalent(dist_mat[1, 2:100, drop = FALSE], 
                    cdist(x[1, , drop = FALSE], x[2:100, , drop = FALSE], metric = "minkowski", p = p))
  
  # p = 100:
  p <- 100
  dist_dist <- dist(x, method = "minkowski", p = p)
  dist_mat <- as.matrix(dist_dist)
  attr(dist_mat, "dimnames") <- NULL
  # check pdist and cdist 
  expect_equivalent(dist_dist, rdist(x, metric = "minkowski", p = p))
  expect_equivalent(dist_mat, pdist(x, metric = "minkowski", p = p))
  expect_equivalent(dist_mat, cdist(x, x, metric = "minkowski", p = p))
  expect_equivalent(dist_mat[1:2, 3:100], 
                    cdist(x[1:2, ], x[3:100, ], metric = "minkowski", p = p))
  expect_equivalent(dist_mat[1, 2:100, drop = FALSE], 
                    cdist(x[1, , drop = FALSE], x[2:100, , drop = FALSE], metric = "minkowski", p = p))
})
blasern/fastmetrics documentation built on Aug. 29, 2023, 12:27 p.m.