From e565af54b1ebba7c6c9e69a984e739f57c12135a Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 15 Jul 2013 15:33:32 -0400 Subject: sync test suite --- t/magic.t | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ t/warnings.t | 21 +++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 t/warnings.t diff --git a/t/magic.t b/t/magic.t index 4318f58..df3012a 100644 --- a/t/magic.t +++ b/t/magic.t @@ -29,4 +29,52 @@ use Package::Stash; is(eval q["@foo"], 'a-b-c'); } +SKIP: { + skip "only need to test for magic in the xs version", 10 + unless $Package::Stash::IMPLEMENTATION eq 'XS'; + skip "magic stashes require perl 5.10+", 10 + unless $] >= 5.010; + skip "magic stashes require Variable::Magic", 10 + unless eval { require Variable::Magic; 1 }; + + my ($fetch, $store); + my $wiz = Variable::Magic::wizard( + fetch => sub { $fetch++ }, + store => sub { $store++ }, + ); + Variable::Magic::cast(\%MagicStashTest::, $wiz); + + my $stash = Package::Stash->new('MagicStashTest'); + + $fetch = 0; + $store = 0; + $stash->get_symbol('@foo'); + is($fetch, 1, "get_symbol fetches (empty slot)"); + is($store, 0, "get_symbol stores (empty slot)"); + + $fetch = 0; + $store = 0; + $stash->get_or_add_symbol('@bar'); + is($fetch, 0, "get_or_add_symbol fetches (empty slot)"); + is($store, 1, "get_or_add_symbol stores (empty slot)"); + + $fetch = 0; + $store = 0; + $stash->add_symbol('@baz', ['baz']); + is($fetch, 0, "add_symbol fetches"); + is($store, 1, "add_symbol stores"); + + $fetch = 0; + $store = 0; + $stash->get_symbol('@baz'); + is($fetch, 1, "get_symbol fetches (populated slot)"); + is($store, 0, "get_symbol stores (populated slot)"); + + $fetch = 0; + $store = 0; + $stash->get_or_add_symbol('@baz'); + is($fetch, 1, "get_or_add_symbol fetches (populated slot)"); + is($store, 0, "get_or_add_symbol stores (populated slot)"); +} + done_testing; diff --git a/t/warnings.t b/t/warnings.t new file mode 100644 index 0000000..2dd5929 --- /dev/null +++ b/t/warnings.t @@ -0,0 +1,21 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Package::Stash; + +my $warnings; +BEGIN { + $warnings = ''; + $SIG{__WARN__} = sub { $warnings .= $_[0] }; +} + +BEGIN { + my $stash = Package::Stash->new('Foo'); + $stash->get_or_add_symbol('$bar'); +} + +is($warnings, ''); + +done_testing; -- cgit v1.2.3