d01 ex04 tout change et ajouts de tests

This commit is contained in:
Hugo LAMY
2022-02-08 13:58:59 +01:00
parent ea0f9b085a
commit eac083ff7e
18 changed files with 130 additions and 47 deletions

View File

@@ -14,29 +14,31 @@ void Sed::replace() {
std::ifstream file(this->_file.c_str()); std::ifstream file(this->_file.c_str());
std::ofstream new_file(this->_new_file.c_str()); std::ofstream new_file(this->_new_file.c_str());
char str[this->_find.length() - 1];
int len = this->_find.length(); int len = this->_find.length();
char tmp; std::string str;
char c_str[len + 1];
while (file.get(str, 1 + 1, EOF)) if (file.fail() || new_file.fail())
return;
file.get(c_str, len + 1, EOF);
str.assign(c_str);
while (!file.eof())
{ {
if (str[0] == this->_find[0]) if (this->_find.compare(str) == 0)
{ {
if (len == 1) new_file << this->_replacement;
new_file << this->_replacement; file.get(c_str, len + 1, EOF);
else str.assign(c_str);
{ continue;
tmp = str[0];
file.get(str, len, EOF);
if (this->_find.compare(1, len - 1, str) == 0)
new_file << this->_replacement;
else
new_file << tmp << str;
}
} }
else else
new_file << str; new_file << str[0];
str.erase(str.begin());
str.push_back(file.get());
} }
for (int i = 0; str[i + 1]; i++)
new_file << str[i];
} }

Binary file not shown.

View File

@@ -1 +0,0 @@

View File

@@ -1,5 +0,0 @@
ce fichier
contient
plusieurs lignes
les unes au dessus des autres
youhouuu ioieux

View File

@@ -1 +0,0 @@
....................................................;

View File

@@ -1,2 +0,0 @@
...................................................;
. . . . . . . . . . . . . . . . . . . . . . . . . .;

View File

@@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
cd $(dirname $0) cd $(dirname $0)
source ./colors.sh source ./colors.sh
mkdir -p test_log mkdir -p test_log
EXECUTABLE="sed"
# RUN TESTS # RUN TESTS
function run_tests function run_tests
@@ -10,7 +10,7 @@ mkdir -p test_log
touch $TESTNAME touch $TESTNAME
echo "$CONTENT" > $TESTNAME echo "$CONTENT" > $TESTNAME
../sed $TESTNAME "$FIND" "$REPLACEMENT" ../$EXECUTABLE $TESTNAME "$FIND" "$REPLACEMENT"
OUTPUT=$( cat $TESTNAME.replace ) OUTPUT=$( cat $TESTNAME.replace )
if [ "$OUTPUT" == "$RESULT" ] if [ "$OUTPUT" == "$RESULT" ]
then then
@@ -96,3 +96,113 @@ EOF
) )
run_tests run_tests
# TEST 6 ########################################
TESTNAME="test6"
FIND="toutouille"
REPLACEMENT="||||||||||"
CONTENT=$(cat << EOF
trouve ce mot toutouille
et celui-la toutoutouille
EOF
)
RESULT=$(cat << EOF
trouve ce mot ||||||||||
et celui-la tou||||||||||
EOF
)
run_tests
# TEST 7 ########################################
TESTNAME="test7"
FIND="n't"
REPLACEMENT="000"
CONTENT=$(cat << EOF
No more tears, my heart is dry
I don't laugh and I don't cry
I don't think about you all the time
But when I do - I wonder why
You have to go out of my door
And leave just like you did before
I know I said that I was sure
But rich men can't imagine poor.
One day baby, we'll be old
Oh baby, we'll be old
And think of all the stories that we could have told
Little me and little you
Kept doing all the things they do
They never really think it through
Like I can never think you're true
Here I go again - the blame
The guilt, the pain, the hurt, the shame
The founding fathers of our plane
That's stuck in heavy clouds of rain.
One day baby, we'll be old
Oh baby, we'll be old
And think of all the stories that we could have told
EOF
)
RESULT=$(cat << EOF
No more tears, my heart is dry
I do000 laugh and I do000 cry
I do000 think about you all the time
But when I do - I wonder why
You have to go out of my door
And leave just like you did before
I know I said that I was sure
But rich men ca000 imagine poor.
One day baby, we'll be old
Oh baby, we'll be old
And think of all the stories that we could have told
Little me and little you
Kept doing all the things they do
They never really think it through
Like I can never think you're true
Here I go again - the blame
The guilt, the pain, the hurt, the shame
The founding fathers of our plane
That's stuck in heavy clouds of rain.
One day baby, we'll be old
Oh baby, we'll be old
And think of all the stories that we could have told
EOF
)
run_tests
# TEST 8 ########################################
TESTNAME="test8"
FIND=$(cat << EOF
ry
I don't
EOF
)
REPLACEMENT=$(cat << EOF
oo
oooooooo
EOF
)
CONTENT=$(cat << EOF
No more tears, my heart is dry
I don't laugh and I don't cry
I don't think about you all the time
But when I do - I wonder why
EOF
)
RESULT=$(cat << EOF
No more tears, my heart is doo
oooooooolaugh and I don't coo
oooooooothink about you all the time
But when I do - I wonder why
EOF
)
run_tests

View File

@@ -1 +0,0 @@

View File

@@ -1 +0,0 @@
hello

View File

@@ -1,5 +0,0 @@
ce fichier
contient
plusieurs lignes
les unes au dessus des autres
youhouuu ioieux

View File

@@ -1,5 +0,0 @@
ce fich++r
cont++nt
plus++urs lignes
les unes au dessus des autres
youhouuu io++ux

View File

@@ -1 +0,0 @@
....................................................;

View File

@@ -1 +0,0 @@
++++++++++++++++++++++++++++++++++++++++++++++++++++;

View File

@@ -1,2 +0,0 @@
...................................................;
. . . . . . . . . . . . . . . . . . . . . . . . . .;

View File

@@ -1,2 +0,0 @@
++++++++++++++++++++++++++++++++++++++++++++++++++.;
. . . . . . . . . . . . . . . . . . . . . . . . . .;

View File

@@ -1 +0,0 @@
test de mmdr foubar

View File

@@ -1 +0,0 @@
test de mmdr foubar