initial import
[vuplus_webkit] / Tools / Scripts / webkitperl / VCSUtils_unittest / prepareParsedPatch.pl
1 #!/usr/bin/perl -w
2 #
3 # Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 # 1.  Redistributions of source code must retain the above copyright
9 #     notice, this list of conditions and the following disclaimer.
10 # 2.  Redistributions in binary form must reproduce the above copyright
11 #     notice, this list of conditions and the following disclaimer in the
12 #     documentation and/or other materials provided with the distribution.
13 #
14 # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
15 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 # DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
21 # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
25 # Unit tests of prepareParsedPatch().
26
27 use strict;
28 use warnings;
29
30 use Test::More;
31 use VCSUtils;
32
33 my $diffHashRef1 = { # not a copy, no source revision
34     copiedFromPath => undef,
35     indexPath => "indexPath1",
36     sourceRevision => undef,
37     svnConvertedText => "diff1",
38 };
39 my $diffHashRef2 = { # not a copy, has source revision
40     copiedFromPath => undef,
41     indexPath => "indexPath2",
42     sourceRevision => 20,
43     svnConvertedText => "diff2",
44 };
45 my $diffHashRef3 = { # a copy (copies always have source revision)
46     copiedFromPath => "sourcePath3",
47     indexPath => "indexPath2", # Deliberately choosing same as $diffHashRef2
48     sourceRevision => 3,
49     svnConvertedText => "diff3",
50 };
51
52 my @testCases = (
53 {
54     # New test
55     testName => "zero diffs: empty array",
56     diffHashRefsInput => [],
57     expected => {
58         copyDiffHashRefs => [],
59         nonCopyDiffHashRefs => [],
60         sourceRevisionHash => {},
61     },
62 },
63 {
64     # New test
65     testName => "one diff: non-copy, no revision",
66     diffHashRefsInput => [$diffHashRef1],
67     expected => {
68         copyDiffHashRefs => [],
69         nonCopyDiffHashRefs => [$diffHashRef1],
70         sourceRevisionHash => {},
71     },
72 },
73 {
74     # New test
75     testName => "one diff: non-copy, has revision",
76     diffHashRefsInput => [$diffHashRef2],
77     expected => {
78         copyDiffHashRefs => [],
79         nonCopyDiffHashRefs => [$diffHashRef2],
80         sourceRevisionHash => {
81             "indexPath2" => 20,
82         }
83     },
84 },
85 {
86     # New test
87     testName => "one diff: copy (has revision)",
88     diffHashRefsInput => [$diffHashRef3],
89     expected => {
90         copyDiffHashRefs => [$diffHashRef3],
91         nonCopyDiffHashRefs => [],
92         sourceRevisionHash => {
93             "sourcePath3" => 3,
94         }
95     },
96 },
97 {
98     # New test
99     testName => "two diffs: two non-copies",
100     diffHashRefsInput => [$diffHashRef1, $diffHashRef2],
101     expected => {
102         copyDiffHashRefs => [],
103         nonCopyDiffHashRefs => [$diffHashRef1, $diffHashRef2],
104         sourceRevisionHash => {
105             "indexPath2" => 20,
106         }
107     },
108 },
109 {
110     # New test
111     testName => "two diffs: non-copy and copy",
112     diffHashRefsInput => [$diffHashRef2, $diffHashRef3],
113     expected => {
114         copyDiffHashRefs => [$diffHashRef3],
115         nonCopyDiffHashRefs => [$diffHashRef2],
116         sourceRevisionHash => {
117             "sourcePath3" => 3,
118             "indexPath2" => 20,
119         }
120     },
121 },
122 );
123
124 my $testCasesCount = @testCases;
125 plan(tests => $testCasesCount);
126
127 foreach my $testCase (@testCases) {
128     my $testName = $testCase->{testName};
129     my @diffHashRefs = @{$testCase->{diffHashRefsInput}};
130     my $expected = $testCase->{expected};
131
132     my $got = prepareParsedPatch(0, @diffHashRefs);
133
134     is_deeply($got, $expected, $testName);
135 }
136