The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use warnings;
use strict;
use utf8;
use Test::More;
use Mojo::Redis;

plan skip_all => 'Setup $REDIS_SERVER' unless $ENV{REDIS_SERVER};
plan tests => 6;

binmode STDOUT, ':utf8'; # because of use utf8;

{
  my $redis = Mojo::Redis->new(server => $ENV{REDIS_SERVER});
  my $str = "æøå";

  print "# $str\n";
  is length $str, 3, 'input got the correct length';
  ok utf8::is_utf8($str), 'input $str is utf8';

  $redis->set(test => $str);
  $redis->get(test => sub {
    is $_[1], $str, 'got $str back';
    ok utf8::is_utf8($_[1]), 'output $str is utf8';
    Mojo::IOLoop->stop;
  });

  Mojo::IOLoop->start;

  my $s = $redis->subscribe('s1');

  $s->on(data => sub {
    my($s, $res) = @_;
    print "# ", join('|', @$res), "\n";
    $redis->publish(s1 => "data: $str") unless grep { /data:/ } @$res;
    if(grep { /data:/ } @$res) {
      is $res->[2], "data: $str", 's1 deliver unicode';
      ok utf8::is_utf8($res->[2]), 's1 $str is utf8';
      Mojo::IOLoop->stop;
    }
  });
  Mojo::IOLoop->start;
}