summaryrefslogtreecommitdiffstats
path: root/xt/lib/Bugzilla/Test/Search/FakeCGI.pm
blob: e20a57daf37857169d9535e1c35a79472b782f1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Everything Solved, Inc.
# Portions created by the Initial Developer are Copyright (C) 2010 the
# Initial Developer. All Rights Reserved.
#
# Contributor(s):
#   Max Kanat-Alexander <mkanat@bugzilla.org>

# Calling CGI::param over and over turned out to be one of the slowest
# parts of search.t. So we create a simpler thing here that just supports
# "param" in a fast way.
package Bugzilla::Test::Search::FakeCGI;

sub new {
    my ($class) = @_;
    return bless {}, $class;
}

sub param {
    my ($self, $name, @values) = @_;
    if (!defined $name) {
        return keys %$self;
    }

    if (@values) {
        if (ref $values[0] eq 'ARRAY') {
            $self->{$name} = $values[0];
        }
        else {
            $self->{$name} = \@values;
        }
    }
    
    return () if !exists $self->{$name};
    
    my $item = $self->{$name};
    return wantarray ? @{ $item || [] } : $item->[0];
}

sub delete {
    my ($self, $name) = @_;
    delete $self->{$name};
}

# We don't need to do this, because we don't use old params in search.t.
sub convert_old_params {}

1;