summaryrefslogtreecommitdiffstats
path: root/t
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@gmail.com>2011-11-19 01:00:50 +0100
committerFrédéric Buclin <LpSolit@gmail.com>2011-11-19 01:00:50 +0100
commit3972541751851348ee9895c841cfc9ff2919a608 (patch)
tree23918e7121fa6e6dfc12aa1aa67ade8067599fcd /t
parent242862cac73f0537e8b92f9bf6841c0e3179cf2b (diff)
downloadbugzilla-3972541751851348ee9895c841cfc9ff2919a608.tar.gz
bugzilla-3972541751851348ee9895c841cfc9ff2919a608.tar.xz
Bug 703788: Improve performance of diff_arrays() with large arrays
r/a=mkanat
Diffstat (limited to 't')
-rw-r--r--t/007util.t17
1 files changed, 15 insertions, 2 deletions
diff --git a/t/007util.t b/t/007util.t
index 742c2b2d2..b32a1b90c 100644
--- a/t/007util.t
+++ b/t/007util.t
@@ -18,7 +18,7 @@
#
# Contributor(s): Zach Lipton <zach@zachlipton.com>
# Max Kanat-Alexander <mkanat@bugzilla.org>
-
+# Frédéric Buclin <LpSolit@gmail.com>
#################
#Bugzilla Test 7#
@@ -26,7 +26,7 @@
use lib 't';
use Support::Files;
-use Test::More tests => 13;
+use Test::More tests => 15;
BEGIN {
use_ok(Bugzilla);
@@ -72,3 +72,16 @@ foreach my $input (keys %email_strings) {
is(Bugzilla::Util::email_filter($input), $email_strings{$input},
"email_filter('$input')");
}
+
+# diff_arrays():
+my @old_array = qw(alpha beta alpha gamma gamma beta alpha delta epsilon gamma);
+my @new_array = qw(alpha alpha beta gamma epsilon delta beta delta);
+# The order is not relevant when comparing both arrays for matching items,
+# i.e. (foo bar) and (bar foo) are the same arrays (same items).
+# But when returning data, we try to respect the initial order.
+# We remove the leftmost items first, and return what's left. This means:
+# Removed (in this order): gamma alpha gamma.
+# Added (in this order): delta
+my ($removed, $added) = diff_arrays(\@old_array, \@new_array);
+is_deeply($removed, [qw(gamma alpha gamma)], 'diff_array(\@old, \@new) (check removal)');
+is_deeply($added, [qw(delta)], 'diff_array(\@old, \@new) (check addition)');