From dc144127a94902b7a81505ce461cdb7c3f40bbf9 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Mon, 7 Feb 2022 18:42:28 +0100 Subject: [PATCH] d01 ex04 a peu pres ok mais une erreure, et unitests ok --- d01/ex04/Sed.cpp | 33 +++++---- d01/ex04/Sed.hpp | 2 + d01/ex04/sed | Bin 33088 -> 36992 bytes d01/ex04/test.txt | 27 -------- d01/ex04/unitests/colors.sh | 19 ++++++ d01/ex04/unitests/test.sh | 83 +++++++++++++++++++++++ d01/ex04/unitests/test_log/test1 | 1 + d01/ex04/unitests/test_log/test1.replace | 1 + d01/ex04/unitests/test_log/test2 | 5 ++ d01/ex04/unitests/test_log/test2.replace | 5 ++ d01/ex04/unitests/test_log/test3 | 1 + d01/ex04/unitests/test_log/test3.replace | 1 + d01/ex04/unitests/test_log/test4 | 2 + d01/ex04/unitests/test_log/test4.replace | 2 + 14 files changed, 141 insertions(+), 41 deletions(-) delete mode 100644 d01/ex04/test.txt create mode 100644 d01/ex04/unitests/colors.sh create mode 100644 d01/ex04/unitests/test.sh create mode 100644 d01/ex04/unitests/test_log/test1 create mode 100644 d01/ex04/unitests/test_log/test1.replace create mode 100644 d01/ex04/unitests/test_log/test2 create mode 100644 d01/ex04/unitests/test_log/test2.replace create mode 100644 d01/ex04/unitests/test_log/test3 create mode 100644 d01/ex04/unitests/test_log/test3.replace create mode 100644 d01/ex04/unitests/test_log/test4 create mode 100644 d01/ex04/unitests/test_log/test4.replace diff --git a/d01/ex04/Sed.cpp b/d01/ex04/Sed.cpp index 748c9ca..b4acbed 100644 --- a/d01/ex04/Sed.cpp +++ b/d01/ex04/Sed.cpp @@ -2,30 +2,35 @@ Sed::Sed(char *file, char *find, char *replacement) : _file( file ) -// , _new_file( file.append(".replace") ) + , _new_file( std::string(file).append(".replace") ) , _find( find ) - , _replacement( replacement ) -{ + , _replacement( replacement ) { -// this->_buf = return; - -} -Sed::~Sed() { - -// delete[] this->_buf; - return; - } +Sed::~Sed() {return;} void Sed::replace() { std::ifstream file(this->_file.c_str()); - char c; + std::ofstream new_file(this->_new_file.c_str()); + char str[this->_find.length() - 1]; + int len = this->_find.length(); + char tmp; - while (file.get(c)) + while (file.get(str, 1 + 1, EOF)) { - std::cout << c; + if (str[0] == this->_find[0]) + { + 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 + new_file << str; } } diff --git a/d01/ex04/Sed.hpp b/d01/ex04/Sed.hpp index e197139..79ae005 100644 --- a/d01/ex04/Sed.hpp +++ b/d01/ex04/Sed.hpp @@ -2,6 +2,7 @@ # define SED_HPP #include +#include #include #include @@ -17,6 +18,7 @@ public: private: // std::string _buf; + std::string _tmp; std::string const _file; std::string const _new_file; std::string const _find; diff --git a/d01/ex04/sed b/d01/ex04/sed index df9acd25764587661983e50d3be759ef3825d60b..6ef7124fc1faae6163e8f9f0e86b2739eed79790 100755 GIT binary patch literal 36992 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 literal 33088 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 $TESTNAME + + ../sed $TESTNAME "$FIND" "$REPLACEMENT" + OUTPUT=$( cat $TESTNAME.replace ) + if [ "$OUTPUT" == "$RESULT" ] + then + echo -e $B_GREEN"test1 success"$ENDCO + else + echo -e $B_RED"test1 faillure"$ENDCO + fi + + mv $TESTNAME $TESTNAME.replace ./test_log + } + +# TEST 1 ######################################## +TESTNAME="test1" +FIND=" " +REPLACEMENT="hello" +CONTENT=" " +RESULT="hello" +run_tests + +# TEST 2 ######################################## +TESTNAME="test2" +FIND="ie" +REPLACEMENT="++" +CONTENT=$(cat << EOF +ce fichier +contient +plusieurs lignes +les unes au dessus des autres +youhouuu ioieux +EOF +) +RESULT=$(cat << EOF +ce fich++r +cont++nt +plus++urs lignes +les unes au dessus des autres +youhouuu io++ux +EOF +) +run_tests + +# TEST 3 ######################################## +TESTNAME="test3" +FIND="." +REPLACEMENT="+" +CONTENT=$(cat << EOF +....................................................; +EOF +) +RESULT=$(cat << EOF +++++++++++++++++++++++++++++++++++++++++++++++++++++; +EOF +) +run_tests + +# TEST 3 ######################################## +TESTNAME="test4" +FIND=".." +REPLACEMENT="++" +CONTENT=$(cat << EOF +...................................................; +. . . . . . . . . . . . . . . . . . . . . . . . . .; +EOF +) +RESULT=$(cat << EOF +++++++++++++++++++++++++++++++++++++++++++++++++++.; +. . . . . . . . . . . . . . . . . . . . . . . . . .; +EOF +) +run_tests + diff --git a/d01/ex04/unitests/test_log/test1 b/d01/ex04/unitests/test_log/test1 new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/d01/ex04/unitests/test_log/test1 @@ -0,0 +1 @@ + diff --git a/d01/ex04/unitests/test_log/test1.replace b/d01/ex04/unitests/test_log/test1.replace new file mode 100644 index 0000000..b6fc4c6 --- /dev/null +++ b/d01/ex04/unitests/test_log/test1.replace @@ -0,0 +1 @@ +hello \ No newline at end of file diff --git a/d01/ex04/unitests/test_log/test2 b/d01/ex04/unitests/test_log/test2 new file mode 100644 index 0000000..23b0c96 --- /dev/null +++ b/d01/ex04/unitests/test_log/test2 @@ -0,0 +1,5 @@ +ce fichier +contient +plusieurs lignes +les unes au dessus des autres +youhouuu ioieux diff --git a/d01/ex04/unitests/test_log/test2.replace b/d01/ex04/unitests/test_log/test2.replace new file mode 100644 index 0000000..a573c23 --- /dev/null +++ b/d01/ex04/unitests/test_log/test2.replace @@ -0,0 +1,5 @@ +ce fich++r +cont++nt +plus++urs lignes +les unes au dessus des autres +youhouuu io++ux diff --git a/d01/ex04/unitests/test_log/test3 b/d01/ex04/unitests/test_log/test3 new file mode 100644 index 0000000..922f88c --- /dev/null +++ b/d01/ex04/unitests/test_log/test3 @@ -0,0 +1 @@ +....................................................; diff --git a/d01/ex04/unitests/test_log/test3.replace b/d01/ex04/unitests/test_log/test3.replace new file mode 100644 index 0000000..9b26e9b --- /dev/null +++ b/d01/ex04/unitests/test_log/test3.replace @@ -0,0 +1 @@ ++ \ No newline at end of file diff --git a/d01/ex04/unitests/test_log/test4 b/d01/ex04/unitests/test_log/test4 new file mode 100644 index 0000000..0880dee --- /dev/null +++ b/d01/ex04/unitests/test_log/test4 @@ -0,0 +1,2 @@ +...................................................; +. . . . . . . . . . . . . . . . . . . . . . . . . .; diff --git a/d01/ex04/unitests/test_log/test4.replace b/d01/ex04/unitests/test_log/test4.replace new file mode 100644 index 0000000..80f497e --- /dev/null +++ b/d01/ex04/unitests/test_log/test4.replace @@ -0,0 +1,2 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++.; +. . . . . . . . . . . . . . . . . . . . . . . . . .;