diff options
Diffstat (limited to 'shared/ossp_uuid/perl/uuid.ts')
-rw-r--r-- | shared/ossp_uuid/perl/uuid.ts | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/shared/ossp_uuid/perl/uuid.ts b/shared/ossp_uuid/perl/uuid.ts new file mode 100644 index 00000000..298e26de --- /dev/null +++ b/shared/ossp_uuid/perl/uuid.ts @@ -0,0 +1,171 @@ +## +## OSSP uuid - Universally Unique Identifier +## Copyright (c) 2004-2007 Ralf S. Engelschall <rse@engelschall.com> +## Copyright (c) 2004-2007 The OSSP Project <http://www.ossp.org/> +## +## This file is part of OSSP uuid, a library for the generation +## of UUIDs which can found at http://www.ossp.org/pkg/lib/uuid/ +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## +## uuid.ts: Perl Binding (Perl test suite part) +## + +use Test::More tests => 36; + +## +## Module Loading +## + +BEGIN { + use_ok('OSSP::uuid'); +}; +BEGIN { + use OSSP::uuid qw(:all); + ok(defined(UUID_VERSION), "UUID_VERSION"); + ok(UUID_RC_OK == 0, "UUID_RC_OK"); +}; + +## +## C-Style API +## + +my ($rc, $result, $uuid, $uuid_ns, $str, $ptr, $len); + +$rc = uuid_create($uuid); +ok($rc == UUID_RC_OK, "uuid_create (1)"); +$rc = uuid_create($uuid_ns); +ok($rc == UUID_RC_OK, "uuid_create (2)"); + +$rc = uuid_isnil($uuid, $result); +ok(($rc == UUID_RC_OK and $result == 1), "uuid_isnil (1)"); +$rc = uuid_isnil($uuid_ns, $result); +ok(($rc == UUID_RC_OK and $result == 1), "uuid_isnil (2)"); +$rc = uuid_compare($uuid, $uuid_ns, $result); +ok(($rc == UUID_RC_OK and $result == 0), "uuid_compare (1)"); +$rc = uuid_export($uuid, UUID_FMT_STR, $ptr, $len); +ok(( $rc == UUID_RC_OK + and $ptr eq "00000000-0000-0000-0000-000000000000" + and $len == UUID_LEN_STR), "uuid_export (1)"); + +$rc = uuid_load($uuid_ns, "ns:URL"); +ok($rc == UUID_RC_OK, "uuid_load (1)"); +$rc = uuid_export($uuid_ns, UUID_FMT_STR, $ptr, $len); +ok(( $rc == UUID_RC_OK + and $ptr eq "6ba7b811-9dad-11d1-80b4-00c04fd430c8" + and $len == UUID_LEN_STR), "uuid_export (2)"); + +$rc = uuid_make($uuid, UUID_MAKE_V3, $uuid_ns, "http://www.ossp.org/"); +ok($rc == UUID_RC_OK, "uuid_make (1)"); +$rc = uuid_export($uuid, UUID_FMT_STR, $ptr, $len); +ok(( $rc == UUID_RC_OK + and $ptr eq "02d9e6d5-9467-382e-8f9b-9300a64ac3cd" + and $len == UUID_LEN_STR), "uuid_export (3)"); + +$rc = uuid_export($uuid, UUID_FMT_BIN, $ptr, $len); +ok(( $rc == UUID_RC_OK + and $len == UUID_LEN_BIN), "uuid_export (4)"); +$rc = uuid_import($uuid_ns, UUID_FMT_BIN, $ptr, $len); +ok($rc == UUID_RC_OK, "uuid_import (1)"); +$rc = uuid_export($uuid_ns, UUID_FMT_STR, $ptr, $len); +ok(( $rc == UUID_RC_OK + and $ptr eq "02d9e6d5-9467-382e-8f9b-9300a64ac3cd" + and $len == UUID_LEN_STR), "uuid_export (5)"); +$rc = uuid_export($uuid_ns, UUID_FMT_SIV, $ptr, $len); +ok(( $rc == UUID_RC_OK + and $ptr eq "3789866285607910888100818383505376205" + and $len <= UUID_LEN_SIV), "uuid_export (6)"); + +$rc = uuid_destroy($uuid_ns); +ok($rc == UUID_RC_OK, "uuid_destroy (1)"); +$rc = uuid_destroy($uuid); +ok($rc == UUID_RC_OK, "uuid_destroy (2)"); + +## +## OO-style API +## + +$uuid = new OSSP::uuid; +ok(defined($uuid), "new OSSP::uuid (1)"); +$uuid_ns = new OSSP::uuid; +ok(defined($uuid_ns), "new OSSP::uuid (2)"); + +$rc = $uuid->isnil(); +ok((defined($rc) and $rc == 1), "isnil (1)"); +$rc = $uuid_ns->isnil(); +ok((defined($rc) and $rc == 1), "isnil (2)"); + +$rc = $uuid->compare($uuid_ns); +ok((defined($rc) and $rc == 0), "compare (1)"); + +$ptr = $uuid->export("str"); +ok(( defined($ptr) + and $ptr eq "00000000-0000-0000-0000-000000000000" + and length($ptr) == UUID_LEN_STR), "export (1)"); + +$rc = $uuid_ns->load("ns:URL"); +ok(defined($rc), "uuid_load (1)"); +$ptr = $uuid_ns->export("str"); +ok(( defined($ptr) + and $ptr eq "6ba7b811-9dad-11d1-80b4-00c04fd430c8" + and length($ptr) == UUID_LEN_STR), "export (2)"); + +$rc = $uuid->make("v3", $uuid_ns, "http://www.ossp.org/"); +ok(defined($rc), "make (1)"); +$ptr = $uuid->export("str"); +ok(( defined($ptr) + and $ptr eq "02d9e6d5-9467-382e-8f9b-9300a64ac3cd" + and length($ptr) == UUID_LEN_STR), "export (3)"); + +$ptr = $uuid->export("bin"); +ok(( defined($ptr) + and length($ptr) == UUID_LEN_BIN), "export (4)"); +$rc = $uuid_ns->import("bin", $ptr); +ok(defined($rc), "import (1)"); +$ptr = $uuid_ns->export("str"); +ok(( defined($ptr) + and $ptr eq "02d9e6d5-9467-382e-8f9b-9300a64ac3cd" + and length($ptr) == UUID_LEN_STR), "export (5)"); + +undef $uuid; +undef $uuid_ns; + +## +## TIE API +## + +$uuid = new OSSP::uuid; + +tie my $var, 'OSSP::uuid::tie'; + +my $val_get1 = $var; +my $val_get2 = $var; +ok($val_get1 ne $val_get2, "subsequent generation"); + +$uuid->import("str", $val_get1); +my $val_cmp1 = $uuid->export("str"); +$uuid->import("str", $val_get2); +my $val_cmp2 = $uuid->export("str"); +ok($val_get1 eq $val_cmp1, "validity comparison 1"); +ok($val_get2 eq $val_cmp2, "validity comparison 2"); + +$var = [ "v3", "ns:URL", "http://www.ossp.org/" ]; +$val_get1 = $var; +ok($val_get1 eq "02d9e6d5-9467-382e-8f9b-9300a64ac3cd", "generation of UUID v3"); + |