lz77_symbolic.t 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!perl -T
  2. use utf8;
  3. use 5.036;
  4. use Test::More;
  5. use Compression::Util qw(:all);
  6. plan tests => 3;
  7. foreach my $file (__FILE__) {
  8. my $str = do {
  9. local $/;
  10. open my $fh, '<:utf8', $file;
  11. <$fh>;
  12. };
  13. my @symbols = map { ord($_) } $str =~ /(\X)/g;
  14. my $enc = lz77_compress_symbolic(\@symbols);
  15. my $dec = lz77_decompress_symbolic($enc);
  16. my $dec2 = lz77_decode_symbolic(lz77_encode_symbolic(\@symbols));
  17. ok(length($enc) < length($str));
  18. is($str, join('', map { chr($_) } @$dec));
  19. is($str, join('', map { chr($_) } @$dec2));
  20. }
  21. __END__
  22. # International class; name and street
  23. class 国際( なまえ, Straße ) {
  24. # Say who am I!
  25. method 言え {
  26. say "I am #{self.なまえ} from #{self.Straße}";
  27. }
  28. }
  29. # all the people of the world!
  30. var 民族 = [
  31. 国際( "高田 Friederich", "台湾" ),
  32. 国際( "Smith Σωκράτης", "Cantù" ),
  33. 国際( "Stanisław Lec", "południow" ),
  34. ];
  35. 民族.each { |garçon|
  36. garçon.言え;
  37. }