[duplicates] enable duplicates analysis in PyCharm/WebStorm/PhpStorm/RubyMine
[idea/community.git] / platform / diff-impl / tests / com / intellij / diff / comparison / LineComparisonMergeUtilTest.kt
1 // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.diff.comparison
3
4 class LineComparisonMergeUtilTest : ComparisonMergeUtilTestBase() {
5   fun testSimpleCases() {
6     lines_merge {
7       ("" - "" - "")
8       ("" - "" - "").matching()
9       changes()
10       test()
11     }
12
13     lines_merge {
14       ("x_y_z" - "x_y_z" - "x_y_z")
15       (" _ _ " - " _ _ " - " _ _ ").matching()
16       changes()
17       test()
18     }
19
20     lines_merge {
21       ("" - "" - "x")
22       changes(mod(0, 0, 0, 1, 1, 1))
23       test()
24     }
25
26     lines_merge {
27       ("" - "" - "_x")
28       ("" - "" - "_-").matching()
29       changes(mod(1, 1, 1, 0, 0, 1))
30       test()
31     }
32
33     lines_merge {
34       ("x" - "y" - "x")
35       ("-" - "-" - "-").matching()
36       test()
37     }
38
39     lines_merge {
40       ("x" - "x_y" - "x")
41       (" " - " _-" - " ").matching()
42       test()
43     }
44
45     lines_merge {
46       ("x" - "y_x" - "x")
47       (" " - "-_ " - " ").matching()
48       test()
49     }
50
51     lines_merge {
52       ("x_y_z" - "x_Y_z" - "x_y_z")
53       (" _-_ " - " _-_ " - " _-_ ").matching()
54       test()
55     }
56
57     lines_merge {
58       ("x_y_z" - "X_y_Z" - "x_y_z")
59       ("-_ _-" - "-_ _-" - "-_ _-").matching()
60       test()
61     }
62   }
63
64   fun testIgnoreWhitespaces() {
65     lines_diff {
66       ("x_ y _z" - "x_y_z" - "x_  y_  z")
67       changes()
68       test(ComparisonPolicy.IGNORE_WHITESPACES)
69     }
70
71     lines_merge {
72       ("x_ y _z" - "x_y_z" - "x_  y_  z")
73       changes(mod(1, 1, 1, 2, 2, 2))
74       test(ComparisonPolicy.IGNORE_WHITESPACES)
75     }
76
77
78     lines_diff {
79       ("x_ y _z" - "x_Y_z" - "x_  y_  z")
80       changes(mod(1, 1, 1, 1, 1, 1))
81       test(ComparisonPolicy.IGNORE_WHITESPACES)
82     }
83
84     lines_merge {
85       ("x_ y _z" - "x_Y_z" - "x_  y_  z")
86       changes(mod(1, 1, 1, 1, 1, 1),
87               mod(2, 2, 2, 1, 1, 1))
88       test(ComparisonPolicy.IGNORE_WHITESPACES)
89     }
90
91
92     lines_merge {
93       ("x_ y _z" - "x_Y_z" - "x_  y_z")
94       changes(mod(1, 1, 1, 1, 1, 1))
95       test(ComparisonPolicy.IGNORE_WHITESPACES)
96     }
97
98     lines_merge {
99       ("x_ y _z" - "x_y_z" - "x_  y_z")
100       changes(mod(1, 1, 1, 1, 1, 1))
101       test(ComparisonPolicy.IGNORE_WHITESPACES)
102     }
103
104     lines_merge {
105       (" x _y_z" - "x_y_z" - "x_y_  z")
106       changes(mod(0, 0, 0, 1, 1, 1),
107               mod(2, 2, 2, 1, 1, 1))
108       test(ComparisonPolicy.IGNORE_WHITESPACES)
109     }
110
111
112     lines_diff {
113       (" x_new_y_z" - "x_ y _z" - "x_y_new_ z")
114       changes(mod(1, 1, 1, 1, 0, 0),
115               mod(3, 2, 2, 0, 0, 1))
116       test(ComparisonPolicy.IGNORE_WHITESPACES)
117     }
118
119     lines_merge {
120       (" x_new_y_z" - "x_ y _z" - "x_y_new_ z")
121       changes(mod(0, 0, 0, 1, 1, 1),
122               mod(1, 1, 1, 1, 0, 0),
123               mod(2, 1, 1, 1, 1, 1),
124               mod(3, 2, 2, 0, 0, 1),
125               mod(3, 2, 3, 1, 1, 1))
126       test(ComparisonPolicy.IGNORE_WHITESPACES)
127     }
128
129
130     lines_diff {
131       (" x_new_y1_z" - "x_ y _z" - "x_y2_new_ z")
132       changes(mod(1, 1, 1, 2, 1, 2))
133       test(ComparisonPolicy.IGNORE_WHITESPACES)
134     }
135
136     lines_merge {
137       (" x_new_y1_z" - "x_ y _z" - "x_y2_new_ z")
138       changes(mod(0, 0, 0, 1, 1, 1),
139               mod(1, 1, 1, 2, 1, 2),
140               mod(3, 2, 3, 1, 1, 1))
141       test(ComparisonPolicy.IGNORE_WHITESPACES)
142     }
143   }
144 }