You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
1.5 KiB

#include <test_common.h>
#include <igl/randperm.h>
#include <random>
TEST_CASE("randperm: default_rng_reproduce_identity", "[igl]")
{
int n = 100;
Eigen::VectorXi I1, I2;
std::srand(6);
igl::randperm(100, I1);
std::srand(6);
igl::randperm(100, I2);
test_common::assert_eq(I1, I2);
}
namespace randperm
{
template<typename URBG>
void test_reproduce()
{
int n = 100;
Eigen::VectorXi I1, I2;
Eigen::MatrixXi Ix1, Ix2;
URBG rng1(6);
URBG rng2(6);
igl::randperm(100, I1, rng1);
igl::randperm(100, I2, rng2);
igl::randperm(100, Ix1, rng1);
igl::randperm(100, Ix2, rng2);
test_common::assert_eq(I1, I2);
test_common::assert_eq(Ix1, Ix2);
test_common::assert_neq(I1, Ix1);
test_common::assert_neq(I2, Ix2);
}
}
TEST_CASE("randperm: minstd_rand0_reproduce_identity", "[igl]")
{
randperm::test_reproduce<std::minstd_rand0>();
}
TEST_CASE("randperm: minstd_rand_reproduce_identity", "[igl]")
{
randperm::test_reproduce<std::minstd_rand>();
}
TEST_CASE("randperm: mt19937_reproduce_identity", "[igl]")
{
randperm::test_reproduce<std::mt19937>();
}
TEST_CASE("randperm: mt19937_64_reproduce_identity", "[igl]")
{
randperm::test_reproduce<std::mt19937_64>();
}
TEST_CASE("randperm: default_identity", "[igl]")
{
int n = 100;
Eigen::VectorXi I1, I2;
Eigen::MatrixXi Ix1, Ix2;
std::srand(0);
igl::randperm(100, I1);
igl::randperm(100, Ix1);
std::srand(0);
igl::randperm(100, I2);
igl::randperm(100, Ix2);
test_common::assert_eq(I1, I2);
test_common::assert_eq(Ix1, Ix2);
}