Data-Cuid

 view release on metacpan or  search on metacpan

xt/02_collisions.t  view on Meta::CPAN

#!/usr/bin/env perl
use strict;
use warnings;

use Test::More;

BEGIN {
    plan skip_all => 'Testing collisions only upon release'
        unless $ENV{RELEASE_TESTING};
}

use Sub::Util;

use Data::Cuid;

my $max = 1_200_000;
plan tests => $max * 2;

my $test = sub {
    my $fn = shift;
    my %ids;

    my $fn_name = Sub::Util::subname $fn;
    for ( my $i = 0; $i < $max; $i++ ) {
        my $id = $fn->();

        ok !$ids{$id}, "$id is unique in $i iterations ($fn_name)";
        ++$ids{$id};
    }
};

$test->( \&Data::Cuid::cuid );

TODO: {
    local $TODO = 'slug() can easily get collisions due to less precision';

    $test->( \&Data::Cuid::slug );
}



( run in 0.785 second using v1.01-cache-2.11-cpan-71847e10f99 )