--- /dev/null
+#!/usr/bin/env perl
+
+use warnings;
+use strict;
+
+use lib 't/lib';
+use TestCommon;
+
+use File::KDBX;
+use Test::More;
+
+my $kdbx = File::KDBX->new;
+my $entry1 = $kdbx->add_entry(
+ title => 'Sun Valley Bank Inc.',
+ username => 'fred',
+ password => 'secr3t',
+);
+my $entry2 = $kdbx->add_entry(
+ title => 'Donut Shoppe',
+ username => 'freddy',
+ password => '1234',
+ testcustom => 'a custom string',
+);
+my $entry3 = $kdbx->add_entry(
+ title => 'Sun Clinic Inc.',
+ username => 'jerry',
+ password => 'password',
+ mycustom => 'this is another custom string',
+);
+
+for my $test (
+ ['{REF:U@T:donut}', 'freddy'],
+ ['U@T:donut', 'freddy'],
+ [[U => T => 'donut'], 'freddy', 'A reference can be pre-parsed parameters'],
+
+ ['{REF:U@T:sun inc}', 'fred'],
+ ['{REF:U@T:"Sun Clinic Inc."}', 'jerry'],
+
+ ['{REF:U@I:' . $entry2->id . '}', 'freddy', 'Resolve a field by UUID'],
+
+ ['{REF:U@O:custom}', 'freddy'],
+ ['{REF:U@O:"another custom"}', 'jerry'],
+
+ ['{REF:U@T:donut meh}', undef],
+ ['{REF:O@U:freddy}', undef],
+) {
+ my ($ref, $expected, $note) = @$test;
+ $note //= "Reference: $ref";
+ is $kdbx->resolve_reference(ref $ref eq 'ARRAY' ? @$ref : $ref), $expected, $note;
+}
+
+done_testing;