|
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 |