The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/perl

# This tests that Unicode data can be written and retrieved successfully.

use strict;
use warnings;

use Test::More tests => 2;

use Plucene::TestCase;

{
	$ANALYZER = "Plucene::Analysis::WhitespaceAnalyzer";
	if ($] < 5.007) {
		new_index {
			add_document(text => "bar foo baz");
			add_document(text => "bar f\x{f2}o baz");
			add_document(text => "bar f\x{14d}o baz");
		};

		my $hits = search("text:f\x{14d}o");
		my @ids = sort map $_->{id}, @{ $hits->{hit_docs} };
		is_deeply(\@ids, [2], "Right documents");
		$hits = search("text:f\x{f2}o");
		@ids = sort map $_->{id}, @{ $hits->{hit_docs} };
		is_deeply(\@ids, [1], "Right documents");
	} else {
		use Encode;
		my $foo1 = encode('utf8',       'foo');
		my $foo2 = encode('iso-8859-1', 'foo');
		new_index {
			add_document(text => "bar foo baz");
			add_document(text => "bar $foo1 baz");
			add_document(text => "bar $foo2 baz");
		};
		my $hits = search("text:$foo1");
		my @ids = sort map $_->{id}, @{ $hits->{hit_docs} };
		is_deeply(\@ids, [ 0, 1, 2 ], "Right documents");
		$hits = search("text:$foo2");
		@ids = sort map $_->{id}, @{ $hits->{hit_docs} };
		is_deeply(\@ids, [ 0, 1, 2 ], "Right documents");
	}
}