[duplicates] enable duplicates analysis in PyCharm/WebStorm/PhpStorm/RubyMine
[idea/community.git] / platform / diff-impl / tests / com / intellij / diff / comparison / CharComparisonMergeUtilTest.kt
1 /*
2  * Copyright 2000-2015 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.diff.comparison
17
18 class CharComparisonMergeUtilTest : ComparisonMergeUtilTestBase() {
19   fun testSimpleCases() {
20     chars {
21       ("" - "" - "")
22       ("" - "" - "").matching()
23       changes()
24       test()
25     }
26
27     chars {
28       ("xyz" - "xyz" - "xyz")
29       ("   " - "   " - "   ").matching()
30       changes()
31       test()
32     }
33
34     chars {
35       ("" - "" - "x")
36       ("" - "" - "-").matching()
37       changes(mod(0, 0, 0, 0, 0, 1))
38       test()
39     }
40
41     chars {
42       ("x" - "yx" - "x")
43       (" " - "- " - " ").matching()
44       test()
45     }
46
47     chars {
48       ("x" - "xy" - "x")
49       (" " - " -" - " ").matching()
50       test()
51     }
52
53     chars {
54       ("xyz" - "xYz" - "xyz")
55       (" - " - " - " - " - ").matching()
56       test()
57     }
58
59     chars {
60       ("xyz" - "XyZ" - "xyz")
61       ("- -" - "- -" - "- -").matching()
62       test()
63     }
64   }
65
66   fun testConflictTYpes() {
67     chars {
68       ("abcd" - "abcd" - "abXcd")
69       ("    " - "    " - "  -  ").matching()
70       test()
71     }
72
73     chars {
74       ("abXcd" - "abcd" - "abXcd")
75       ("  -  " - "    " - "  -  ").matching()
76       test()
77     }
78
79     chars {
80       ("abcd" - "abXcd" - "abXcd")
81       ("    " - "  -  " - "  -  ").matching()
82       test()
83     }
84
85     chars {
86       ("abcd" - "abXcd" - "abcd")
87       ("    " - "  -  " - "    ").matching()
88       test()
89     }
90
91     chars {
92       ("abcd" - "abXcd" - "abYcd")
93       ("    " - "  -  " - "  -  ").matching()
94       test()
95     }
96
97     chars {
98       ("abXcd" - "abXcd" - "abYcd")
99       ("  -  " - "  -  " - "  -  ").matching()
100       test()
101     }
102
103     chars {
104       ("abYcd" - "abXcd" - "abYcd")
105       ("  -  " - "  -  " - "  -  ").matching()
106       test()
107     }
108
109     chars {
110       ("abYcd" - "abXcd" - "abZcd")
111       ("  -  " - "  -  " - "  -  ").matching()
112       test()
113     }
114
115     chars {
116       ("abXcd" - "abcd" - "abYcd")
117       ("  -  " - "    " - "  -  ").matching()
118       test()
119     }
120   }
121
122   fun testBoundaryConflicts() {
123     chars {
124       ("abcd" - "abcd" - "abcdx")
125       ("    " - "    " - "    -").matching()
126       test()
127     }
128
129     chars {
130       ("abcd" - "abcdx" - "abcdx")
131       ("    " - "    -" - "    -").matching()
132       test()
133     }
134
135     chars {
136       ("abcd" - "abcdx" - "abcdy")
137       ("    " - "    -" - "    -").matching()
138       test()
139     }
140
141     chars {
142       ("abcdz" - "abcdx" - "abcdy")
143       ("    -" - "    -" - "    -").matching()
144       test()
145     }
146
147     chars {
148       ("xabcd" - "abcd" - "abcd")
149       ("-    " - "    " - "    ").matching()
150       test()
151     }
152
153     chars {
154       ("xabcd" - "yabcd" - "abcd")
155       ("-    " - "-    " - "    ").matching()
156       test()
157     }
158
159     chars {
160       ("abcd" - "yabcd" - "abcd")
161       ("    " - "-    " - "    ").matching()
162       test()
163     }
164   }
165
166   fun testMultipleChanges() {
167     chars {
168       ("XXbXcXXeX" - "XyXzXXnXkX" - "XqXXeXrXX")
169       ("  - -  - " - " - -  - - " - " -  - -  ").matching()
170       test()
171     }
172
173     chars {
174       ("Ax" - "z" - "zA")
175       ("--" - "-" - "--").matching()
176       test()
177     }
178
179     chars {
180       ("ayz" - "xyz" - "xyq")
181       ("- -" - "- -" - "- -").matching()
182       test()
183     }
184   }
185 }