Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
SDK
KDiff3
Commits
b9e3890a
Commit
b9e3890a
authored
Mar 26, 2019
by
Michael Reeves
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update test for new API
parent
91ec31df
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
44 additions
and
47 deletions
+44
-47
test/alignmenttest.cpp
test/alignmenttest.cpp
+44
-47
No files found.
test/alignmenttest.cpp
View file @
b9e3890a
...
...
@@ -54,31 +54,31 @@ void printDiff3List(const Diff3LineList &diff3LineList,
const
Diff3Line
&
d3l
=
*
i
;
if
(
d3l
.
lineA
!=
-
1
)
if
(
d3l
.
getLineA
().
isValid
()
)
{
const
LineData
*
pLineData
=
&
sd1
.
getLineDataForDiff
()[
d3l
.
l
ineA
];
lineAText
=
QString
(
pLineData
->
p
Line
,
pLineData
->
size
);
const
LineData
*
pLineData
=
&
sd1
.
getLineDataForDiff
()[
d3l
.
getL
ineA
()
];
lineAText
=
QString
(
pLineData
->
get
Line
()
,
pLineData
->
size
()
);
lineAText
.
replace
(
QString
(
"
\r
"
),
QString
(
"
\\
r"
));
lineAText
.
replace
(
QString
(
"
\n
"
),
QString
(
"
\\
n"
));
lineAText
=
QString
(
"%1 %2"
).
arg
(
d3l
.
l
ineA
,
linenumsize
).
arg
(
lineAText
.
left
(
columnsize
-
linenumsize
-
1
));
lineAText
=
QString
(
"%1 %2"
).
arg
(
d3l
.
getL
ineA
()
,
linenumsize
).
arg
(
lineAText
.
left
(
columnsize
-
linenumsize
-
1
));
}
if
(
d3l
.
lineB
!=
-
1
)
if
(
d3l
.
getLineB
().
isValid
()
)
{
const
LineData
*
pLineData
=
&
sd2
.
getLineDataForDiff
()[
d3l
.
l
ineB
];
lineBText
=
QString
(
pLineData
->
p
Line
,
pLineData
->
size
);
const
LineData
*
pLineData
=
&
sd2
.
getLineDataForDiff
()[
d3l
.
getL
ineB
()
];
lineBText
=
QString
(
pLineData
->
get
Line
()
,
pLineData
->
size
()
);
lineBText
.
replace
(
QString
(
"
\r
"
),
QString
(
"
\\
r"
));
lineBText
.
replace
(
QString
(
"
\n
"
),
QString
(
"
\\
n"
));
lineBText
=
QString
(
"%1 %2"
).
arg
(
d3l
.
l
ineB
,
linenumsize
).
arg
(
lineBText
.
left
(
columnsize
-
linenumsize
-
1
));
lineBText
=
QString
(
"%1 %2"
).
arg
(
d3l
.
getL
ineB
()
,
linenumsize
).
arg
(
lineBText
.
left
(
columnsize
-
linenumsize
-
1
));
}
if
(
d3l
.
lineC
!=
-
1
)
if
(
d3l
.
getLineC
().
isValid
()
)
{
const
LineData
*
pLineData
=
&
sd3
.
getLineDataForDiff
()[
d3l
.
l
ineC
];
lineCText
=
QString
(
pLineData
->
p
Line
,
pLineData
->
size
);
const
LineData
*
pLineData
=
&
sd3
.
getLineDataForDiff
()[
d3l
.
getL
ineC
()
];
lineCText
=
QString
(
pLineData
->
get
Line
()
,
pLineData
->
size
()
);
lineCText
.
replace
(
QString
(
"
\r
"
),
QString
(
"
\\
r"
));
lineCText
.
replace
(
QString
(
"
\n
"
),
QString
(
"
\\
n"
));
lineCText
=
QString
(
"%1 %2"
).
arg
(
d3l
.
l
ineC
,
linenumsize
).
arg
(
lineCText
.
left
(
columnsize
-
linenumsize
-
1
));
lineCText
=
QString
(
"%1 %2"
).
arg
(
d3l
.
getL
ineC
()
,
linenumsize
).
arg
(
lineCText
.
left
(
columnsize
-
linenumsize
-
1
));
}
out
<<
QString
(
"%1 %2 %3"
).
arg
(
lineAText
,
-
columnsize
)
...
...
@@ -116,19 +116,16 @@ void determineFileAlignment(SourceData &m_sd1, SourceData &m_sd2, SourceData &m_
// Run the diff.
if
(
m_sd3
.
isEmpty
()
)
{
runDiff
(
m_sd1
.
getLineDataForDiff
(),
m_sd1
.
getSizeLines
(),
m_sd2
.
getLineDataForDiff
(),
m_sd2
.
getSizeLines
(),
m_diffList12
,
1
,
2
,
&
m_manualDiffHelpList
,
m_pOptions
);
m_manualDiffHelpList
.
runDiff
(
m_sd1
.
getLineDataForDiff
(),
m_sd1
.
getSizeLines
(),
m_sd2
.
getLineDataForDiff
(),
m_sd2
.
getSizeLines
(),
m_diffList12
,
A
,
B
,
m_pOptions
);
calcDiff3LineListUsingAB
(
&
m_diffList12
,
m_diff3LineList
);
fineDiff
(
m_diff3LineList
,
1
,
m_sd1
.
getLineDataForDisplay
(),
m_sd2
.
getLineDataForDisplay
()
);
}
else
{
runDiff
(
m_sd1
.
getLineDataForDiff
(),
m_sd1
.
getSizeLines
(),
m_sd2
.
getLineDataForDiff
(),
m_sd2
.
getSizeLines
(),
m_diffList12
,
1
,
2
,
&
m_manualDiffHelpList
,
m_pOptions
);
runDiff
(
m_sd2
.
getLineDataForDiff
(),
m_sd2
.
getSizeLines
(),
m_sd3
.
getLineDataForDiff
(),
m_sd3
.
getSizeLines
(),
m_diffList23
,
2
,
3
,
&
m_manualDiffHelpList
,
m_pOptions
);
runDiff
(
m_sd1
.
getLineDataForDiff
(),
m_sd1
.
getSizeLines
(),
m_sd3
.
getLineDataForDiff
(),
m_sd3
.
getSizeLines
(),
m_diffList13
,
1
,
3
,
&
m_manualDiffHelpList
,
m_pOptions
);
m_manualDiffHelpList
.
runDiff
(
m_sd1
.
getLineDataForDiff
(),
m_sd1
.
getSizeLines
(),
m_sd2
.
getLineDataForDiff
(),
m_sd2
.
getSizeLines
(),
m_diffList12
,
A
,
B
,
m_pOptions
);
m_manualDiffHelpList
.
runDiff
(
m_sd2
.
getLineDataForDiff
(),
m_sd2
.
getSizeLines
(),
m_sd3
.
getLineDataForDiff
(),
m_sd3
.
getSizeLines
(),
m_diffList23
,
B
,
C
,
m_pOptions
);
m_manualDiffHelpList
.
runDiff
(
m_sd1
.
getLineDataForDiff
(),
m_sd1
.
getSizeLines
(),
m_sd3
.
getLineDataForDiff
(),
m_sd3
.
getSizeLines
(),
m_diffList13
,
A
,
C
,
m_pOptions
);
if
(
verbose
)
{
...
...
@@ -160,13 +157,13 @@ void determineFileAlignment(SourceData &m_sd1, SourceData &m_sd2, SourceData &m_
fineDiff
(
m_diff3LineList
,
2
,
m_sd2
.
getLineDataForDisplay
(),
m_sd3
.
getLineDataForDisplay
()
);
fineDiff
(
m_diff3LineList
,
3
,
m_sd3
.
getLineDataForDisplay
(),
m_sd1
.
getLineDataForDisplay
()
);
}
calcWhiteDiff3Lines
(
m_diff3LineList
,
m_sd1
.
getLineDataForDiff
(),
m_sd2
.
getLineDataForDiff
(),
m_sd3
.
getLineDataForDiff
()
);
m_diff3LineList
.
calcWhiteDiff3Lines
(
m_sd1
.
getLineDataForDiff
(),
m_sd2
.
getLineDataForDiff
(),
m_sd3
.
getLineDataForDiff
()
);
}
QString
getLineFromSourceData
(
const
SourceData
&
sd
,
int
line
)
{
const
LineData
*
pLineData
=
&
sd
.
getLineDataForDiff
()[
line
];
QString
lineText
=
QString
(
pLineData
->
p
Line
,
pLineData
->
size
);
QString
lineText
=
QString
(
pLineData
->
get
Line
()
,
pLineData
->
size
()
);
lineText
.
replace
(
QString
(
"
\r
"
),
QString
(
"
\\
r"
));
lineText
.
replace
(
QString
(
"
\n
"
),
QString
(
"
\\
n"
));
return
lineText
;
...
...
@@ -187,9 +184,9 @@ void loadExpectedAlignmentFile(QString expectedResultFileName, Diff3LineList &ex
while
(
!
t
.
atEnd
()
)
{
QStringList
lst
=
t
.
readLine
().
split
(
QRegExp
(
"
\\
s+"
));
d3l
.
l
ineA
=
lst
.
at
(
0
).
toInt
();
d3l
.
l
ineB
=
lst
.
at
(
1
).
toInt
();
d3l
.
l
ineC
=
lst
.
at
(
2
).
toInt
();
d3l
.
setL
ineA
(
lst
.
at
(
0
).
toInt
()
)
;
d3l
.
setL
ineB
(
lst
.
at
(
1
).
toInt
()
)
;
d3l
.
setL
ineC
(
lst
.
at
(
2
).
toInt
()
)
;
expectedDiff3LineList
.
push_back
(
d3l
);
}
...
...
@@ -209,7 +206,7 @@ void writeActualAlignmentFile(QString actualResultFileName, const Diff3LineList
for
(
p_d3l
=
actualDiff3LineList
.
begin
();
p_d3l
!=
actualDiff3LineList
.
end
();
p_d3l
++
)
{
t
<<
p_d3l
->
l
ineA
<<
" "
<<
p_d3l
->
l
ineB
<<
" "
<<
p_d3l
->
l
ineC
<<
endl
;
t
<<
p_d3l
->
getL
ineA
()
<<
" "
<<
p_d3l
->
getL
ineB
()
<<
" "
<<
p_d3l
->
getL
ineC
()
<<
endl
;
}
}
file
.
close
();
...
...
@@ -307,65 +304,65 @@ bool runTest(QString file1, QString file2, QString file3, QString expectedResult
while
(
equal
&&
(
p_actual
!=
actualDiff3LineList
.
end
()))
{
/* Check if all line numbers are in sequence */
if
(
p_actual
->
lineA
!=
-
1
)
if
(
p_actual
->
getLineA
().
isValid
()
)
{
if
(
p_actual
->
l
ineA
<=
latestLineA
)
if
(
p_actual
->
getL
ineA
()
<=
latestLineA
)
{
sequenceError
=
true
;
}
else
{
latestLineA
=
p_actual
->
l
ineA
;
latestLineA
=
p_actual
->
getL
ineA
()
;
}
}
if
(
p_actual
->
lineB
!=
-
1
)
if
(
p_actual
->
getLineB
().
isValid
()
)
{
if
(
p_actual
->
l
ineB
<=
latestLineB
)
if
(
p_actual
->
getL
ineB
()
<=
latestLineB
)
{
sequenceError
=
true
;
}
else
{
latestLineB
=
p_actual
->
l
ineB
;
latestLineB
=
p_actual
->
getL
ineB
()
;
}
}
if
(
p_actual
->
lineC
!=
-
1
)
if
(
p_actual
->
getLineC
().
isValid
()
)
{
if
(
p_actual
->
l
ineC
<=
latestLineC
)
if
(
p_actual
->
getL
ineC
()
<=
latestLineC
)
{
sequenceError
=
true
;
}
else
{
latestLineC
=
p_actual
->
l
ineC
;
latestLineC
=
p_actual
->
getL
ineC
()
;
}
}
/* Check if the booleans that indicate if lines are equal are consistent with the content of the lines */
QString
lineAText
=
(
p_actual
->
lineA
==
-
1
)
?
""
:
getLineFromSourceData
(
m_sd1
,
p_actual
->
l
ineA
).
simplified
().
replace
(
" "
,
""
);
QString
lineBText
=
(
p_actual
->
lineB
==
-
1
)
?
""
:
getLineFromSourceData
(
m_sd2
,
p_actual
->
l
ineB
).
simplified
().
replace
(
" "
,
""
);
QString
lineCText
=
(
p_actual
->
lineC
==
-
1
)
?
""
:
getLineFromSourceData
(
m_sd3
,
p_actual
->
l
ineC
).
simplified
().
replace
(
" "
,
""
);
QString
lineAText
=
(
!
p_actual
->
getLineA
().
isValid
()
)
?
""
:
getLineFromSourceData
(
m_sd1
,
p_actual
->
getL
ineA
()
).
simplified
().
replace
(
" "
,
""
);
QString
lineBText
=
(
!
p_actual
->
getLineB
().
isValid
()
)
?
""
:
getLineFromSourceData
(
m_sd2
,
p_actual
->
getL
ineB
()
).
simplified
().
replace
(
" "
,
""
);
QString
lineCText
=
(
!
p_actual
->
getLineC
().
isValid
()
)
?
""
:
getLineFromSourceData
(
m_sd3
,
p_actual
->
getL
ineC
()
).
simplified
().
replace
(
" "
,
""
);
if
(
!
dataIsConsistent
(
p_actual
->
l
ineA
,
lineAText
,
p_actual
->
l
ineB
,
lineBText
,
p_actual
->
isEqualAB
()))
if
(
!
dataIsConsistent
(
p_actual
->
getL
ineA
()
,
lineAText
,
p_actual
->
getL
ineB
()
,
lineBText
,
p_actual
->
isEqualAB
()))
{
if
(
verbose
)
out
<<
"inconsistency: line "
<<
p_actual
->
l
ineA
<<
" of A vs line "
<<
p_actual
->
l
ineB
<<
" of B"
<<
endl
;
if
(
verbose
)
out
<<
"inconsistency: line "
<<
p_actual
->
getL
ineA
()
<<
" of A vs line "
<<
p_actual
->
getL
ineB
()
<<
" of B"
<<
endl
;
consistencyError
=
true
;
}
if
(
!
dataIsConsistent
(
p_actual
->
l
ineB
,
lineBText
,
p_actual
->
l
ineC
,
lineCText
,
p_actual
->
isEqualBC
()))
if
(
!
dataIsConsistent
(
p_actual
->
getL
ineB
()
,
lineBText
,
p_actual
->
getL
ineC
()
,
lineCText
,
p_actual
->
isEqualBC
()))
{
if
(
verbose
)
out
<<
"inconsistency: line "
<<
p_actual
->
l
ineB
<<
" of B vs line "
<<
p_actual
->
l
ineC
<<
" of C"
<<
endl
;
if
(
verbose
)
out
<<
"inconsistency: line "
<<
p_actual
->
getL
ineB
()
<<
" of B vs line "
<<
p_actual
->
getL
ineC
()
<<
" of C"
<<
endl
;
consistencyError
=
true
;
}
if
(
!
dataIsConsistent
(
p_actual
->
l
ineA
,
lineAText
,
p_actual
->
l
ineC
,
lineCText
,
p_actual
->
isEqualAC
()))
if
(
!
dataIsConsistent
(
p_actual
->
getL
ineA
()
,
lineAText
,
p_actual
->
getL
ineC
()
,
lineCText
,
p_actual
->
isEqualAC
()))
{
if
(
verbose
)
out
<<
"inconsistency: line "
<<
p_actual
->
l
ineA
<<
" of A vs line "
<<
p_actual
->
l
ineC
<<
" of C"
<<
endl
;
if
(
verbose
)
out
<<
"inconsistency: line "
<<
p_actual
->
getL
ineA
()
<<
" of A vs line "
<<
p_actual
->
getL
ineC
()
<<
" of C"
<<
endl
;
consistencyError
=
true
;
}
/* Check if the actual output of the algorithm is equal to the expected output */
equal
=
(
p_actual
->
l
ineA
==
p_expected
->
l
ineA
)
&&
(
p_actual
->
l
ineB
==
p_expected
->
l
ineB
)
&&
(
p_actual
->
l
ineC
==
p_expected
->
l
ineC
);
equal
=
(
p_actual
->
getL
ineA
()
==
p_expected
->
getL
ineA
()
)
&&
(
p_actual
->
getL
ineB
()
==
p_expected
->
getL
ineB
()
)
&&
(
p_actual
->
getL
ineC
()
==
p_expected
->
getL
ineC
()
);
p_actual
++
;
p_expected
++
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment