API test for find_rundefsv()
authorZefram <zefram@fysh.org>
Sun, 12 Dec 2010 20:09:00 +0000 (20:09 +0000)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 13 Jul 2011 04:46:51 +0000 (21:46 -0700)
MANIFEST
ext/XS-APItest/APItest.xs
ext/XS-APItest/t/underscore_length.t [new file with mode: 0644]

index 60a60b4..291409f 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -3763,6 +3763,7 @@ ext/XS-APItest/t/svsetsv.t        Test behaviour of sv_setsv with/without PERL_CORE
 ext/XS-APItest/t/swaplabel.t   test recursive descent label parsing
 ext/XS-APItest/t/swaptwostmts.t        test recursive descent statement parsing
 ext/XS-APItest/t/temp_lv_sub.t XS::APItest: tests for lvalue subs returning temps
+ext/XS-APItest/t/underscore_length.t   Test find_rundefsv()
 ext/XS-APItest/t/utf16_to_utf8.t       Test behaviour of utf16_to_utf8{,reversed}
 ext/XS-APItest/t/utf8.t                Tests for code in utf8.c
 ext/XS-APItest/t/xs_special_subs_require.t     for require too
index 0b3a6cb..d3d7274 100644 (file)
@@ -2861,6 +2861,20 @@ CODE:
 OUTPUT:
     RETVAL
 
+STRLEN
+underscore_length()
+PROTOTYPE:
+PREINIT:
+    SV *u;
+    U8 *pv;
+    STRLEN bytelen;
+CODE:
+    u = find_rundefsv();
+    pv = (U8*)SvPV(u, bytelen);
+    RETVAL = SvUTF8(u) ? utf8_length(pv, pv+bytelen) : bytelen;
+OUTPUT:
+    RETVAL
+
 MODULE = XS::APItest           PACKAGE = XS::APItest::Magic
 
 PROTOTYPES: DISABLE
diff --git a/ext/XS-APItest/t/underscore_length.t b/ext/XS-APItest/t/underscore_length.t
new file mode 100644 (file)
index 0000000..7ca6906
--- /dev/null
@@ -0,0 +1,20 @@
+use warnings;
+use strict;
+
+use Test::More tests => 4;
+
+use XS::APItest qw(underscore_length);
+
+$_ = "foo";
+is underscore_length(), 3;
+
+$_ = "snowman \x{2603}";
+is underscore_length(), 9;
+
+my $_ = "xyzzy";
+is underscore_length(), 5;
+
+$_ = "pile of poo \x{1f4a9}";
+is underscore_length(), 13;
+
+1;