Skip to content

Commit 2d14e46

Browse files
committed
basic tests working
- also made line number output 1-based
1 parent 57a61a3 commit 2d14e46

File tree

6 files changed

+69
-15
lines changed

6 files changed

+69
-15
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ duplo
1313
build
1414
.vscode
1515
out.txt
16+
out.xml
1617
files.lst
1718
CMakeFiles
1819
CMakeCache.txt

src/Duplo.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ void Duplo::Run(const Options& options) {
426426
<< std::endl;
427427
} else {
428428
outfile
429-
<< "Configuration: "
429+
<< "Configuration:"
430430
<< std::endl
431431
<< " Number of files: "
432432
<< files
@@ -444,7 +444,7 @@ void Duplo::Run(const Options& options) {
444444
<< options.GetIgnoreSameFilename()
445445
<< std::endl
446446
<< std::endl
447-
<< "Results: "
447+
<< "Results:"
448448
<< std::endl
449449
<< " Lines of code: "
450450
<< locsTotal

src/FileTypeBase.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ bool FileTypeBase::IsSourceLine(const std::string& line) const {
3535
std::vector<SourceLine> FileTypeBase::GetCleanedSourceLines(const std::vector<std::string>& lines) const {
3636
auto lineFilter = CreateLineFilter();
3737
std::vector<SourceLine> filteredLines;
38-
for (std::vector<std::string>::size_type i = 0; i < lines.size(); i++) {
38+
for (auto i = 0; i < lines.size(); i++) {
3939
auto filteredLine = GetCleanLine(lineFilter->ProcessSourceLine(lines[i]));
4040
if (IsSourceLine(filteredLine)) {
4141
filteredLines.emplace_back(filteredLine, i);

src/SourceLine.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include "SourceLine.h"
22
#include "HashUtil.h"
33
#include "SourceFile.h"
4-
5-
#include <algorithm>
4+
5+
#include <algorithm>
66

77
SourceLine::SourceLine(const std::string& line, int lineNumber) {
88
m_line = line;
@@ -11,16 +11,16 @@ SourceLine::SourceLine(const std::string& line, int lineNumber) {
1111
std::string cleanLine;
1212

1313
// Remove all white space and noise (tabs etc)
14-
std::copy_if(
15-
std::begin(line),
16-
std::end(line),
17-
std::back_inserter(cleanLine),
14+
std::copy_if(
15+
std::begin(line),
16+
std::end(line),
17+
std::back_inserter(cleanLine),
1818
[](char c) { return c > ' '; });
1919
m_hash = HashUtil::Hash(cleanLine.c_str(), cleanLine.size());
2020
}
2121

2222
int SourceLine::GetLineNumber() const {
23-
return m_lineNumber;
23+
return m_lineNumber + 1;
2424
}
2525

2626
bool SourceLine::operator==(const SourceLine& other) const {
@@ -30,7 +30,7 @@ bool SourceLine::operator==(const SourceLine& other) const {
3030
const std::string& SourceLine::GetLine() const {
3131
return m_line;
3232
}
33-
33+
3434
unsigned long SourceLine::GetHash() const {
3535
return m_hash;
3636
}

tests/Simple/test-xml.bats

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
setup() {
2+
run ./build/duplo -xml tests/Simple/LineNumbers.lst out.xml
3+
}
4+
5+
@test "LineNumbers.c" {
6+
[ "$status" -eq 0 ]
7+
[ "${lines[0]}" = "Loading and hashing files ... 2 done." ]
8+
[ "${lines[1]}" = "tests/Simple/LineNumbers.c found: 1 block(s)" ]
9+
}
10+
11+
@test "LineNumbers.c out.xml" {
12+
run cat out.xml
13+
printf 'Lines:\n'
14+
printf 'lines %s\n' "${lines[@]}" >&2
15+
[ "${lines[0]}" = "<?xml version=\"1.0\"?>" ]
16+
[ "${lines[1]}" = "<duplo>" ]
17+
[ "${lines[2]}" = " <set LineCount=\"5\">" ]
18+
[ "${lines[3]}" = " <block SourceFile=\"tests/Simple/LineNumbers.c\" StartLineNumber=\"7\"/>" ]
19+
[ "${lines[4]}" = " <block SourceFile=\"tests/Simple/LineNumbers.c\" StartLineNumber=\"1\"/>" ]
20+
[ "${lines[5]}" = " <lines xml:space=\"preserve\">" ]
21+
[ "${lines[6]}" = " <line Text=\"AAAAA\"/>" ]
22+
[ "${lines[7]}" = " <line Text=\"BBBBB\"/>" ]
23+
[ "${lines[8]}" = " <line Text=\"CCCCC\"/>" ]
24+
[ "${lines[9]}" = " <line Text=\"DDDDD\"/>" ]
25+
[ "${lines[10]}" = " <line Text=\"EEEEE\"/>" ]
26+
[ "${lines[11]}" = " </lines>" ]
27+
[ "${lines[12]}" = " </set>" ]
28+
[ "${lines[13]}" = "</duplo>" ]
29+
}

tests/Simple/tests.bats

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,33 @@
1+
setup() {
2+
run ./build/duplo tests/Simple/LineNumbers.lst out.txt
3+
}
4+
15
@test "LineNumbers.c" {
2-
run ./build/duplo tests/Simple/LineNumbers.lst out.txt && cat out.txt
3-
printf 'lines %s\n' "${lines[@]}" >&2
4-
echo "status = $status"
56
[ "$status" -eq 0 ]
67
[ "${lines[0]}" = "Loading and hashing files ... 2 done." ]
78
[ "${lines[1]}" = "tests/Simple/LineNumbers.c found: 1 block(s)" ]
8-
[ "${lines[1]}" = "tests/Simple/LineNumbers.c(6)" ]
9+
}
10+
11+
@test "LineNumbers.c out.txt" {
12+
run cat out.txt
13+
printf 'Lines:\n'
14+
printf 'lines %s\n' "${lines[@]}" >&2
15+
printf 'output %s\n' "${output[@]}" >&2
16+
[ "${lines[0]}" = "tests/Simple/LineNumbers.c(7)" ]
17+
[ "${lines[1]}" = "tests/Simple/LineNumbers.c(1)" ]
18+
[ "${lines[2]}" = "AAAAA" ]
19+
[ "${lines[3]}" = "BBBBB" ]
20+
[ "${lines[4]}" = "CCCCC" ]
21+
[ "${lines[5]}" = "DDDDD" ]
22+
[ "${lines[6]}" = "EEEEE" ]
23+
[ "${lines[7]}" = "Configuration:" ]
24+
[ "${lines[8]}" = " Number of files: 1" ]
25+
[ "${lines[9]}" = " Minimal block size: 4" ]
26+
[ "${lines[10]}" = " Minimal characters in line: 3" ]
27+
[ "${lines[11]}" = " Ignore preprocessor directives: 0" ]
28+
[ "${lines[12]}" = " Ignore same filenames: 0" ]
29+
[ "${lines[13]}" = "Results:" ]
30+
[ "${lines[14]}" = " Lines of code: 11" ]
31+
[ "${lines[15]}" = " Duplicate lines of code: 5" ]
32+
[ "${lines[16]}" = " Total 1 duplicate block(s) found." ]
933
}

0 commit comments

Comments
 (0)