143003dfeSmillert#!perl -w 243003dfeSmillert 343003dfeSmillertBEGIN { 4*b8851fccSafresh1 chdir 't' if -d 't'; 5b39c5158Smillert require './test.pl'; 643003dfeSmillert} 743003dfeSmillert 8898184e3Ssthenplan (tests => 10); 943003dfeSmillertuse strict; 1043003dfeSmillert 1143003dfeSmillert{ 1243003dfeSmillert package UTF8Toggle; 1343003dfeSmillert 1443003dfeSmillert sub TIESCALAR { 1543003dfeSmillert my $class = shift; 1643003dfeSmillert my $value = shift; 1743003dfeSmillert my $state = shift||0; 1843003dfeSmillert return bless [$value, $state], $class; 1943003dfeSmillert } 2043003dfeSmillert 2143003dfeSmillert sub FETCH { 2243003dfeSmillert my $self = shift; 2343003dfeSmillert $self->[1] = ! $self->[1]; 2443003dfeSmillert if ($self->[1]) { 2543003dfeSmillert utf8::downgrade($self->[0]); 2643003dfeSmillert } else { 2743003dfeSmillert utf8::upgrade($self->[0]); 2843003dfeSmillert } 2943003dfeSmillert $self->[0]; 3043003dfeSmillert } 3143003dfeSmillert} 3243003dfeSmillert 3343003dfeSmillertforeach my $t ("ASCII", "B\366se") { 3443003dfeSmillert my $length = length $t; 3543003dfeSmillert 3643003dfeSmillert my $u; 3743003dfeSmillert tie $u, 'UTF8Toggle', $t; 3843003dfeSmillert is (length $u, $length, "length of '$t'"); 3943003dfeSmillert is (length $u, $length, "length of '$t'"); 4043003dfeSmillert is (length $u, $length, "length of '$t'"); 4143003dfeSmillert is (length $u, $length, "length of '$t'"); 4243003dfeSmillert} 4343003dfeSmillert 4443003dfeSmillert{ 45898184e3Ssthen use utf8; 46898184e3Ssthen use open qw( :utf8 :std ); 47898184e3Ssthen package Tìè::UTF8 { 48898184e3Ssthen sub TIESCALAR { 49898184e3Ssthen return bless {}, shift; 50898184e3Ssthen } 51898184e3Ssthen } 52898184e3Ssthen 53898184e3Ssthen my $t; 54898184e3Ssthen tie $t, 'Tìè::UTF8'; 55898184e3Ssthen is ref(tied($t)), 'Tìè::UTF8', "Tie'ing to a UTF8 package works."; 56898184e3Ssthen} 57898184e3Ssthen{ 58b39c5158Smillert local $::TODO = "Need more tests!"; 5943003dfeSmillert fail(); 6043003dfeSmillert} 61