#!/bin/bash
cd $(dirname $0)
source ./colors.sh
mkdir -p test_log
EXECUTABLE="sed"

# RUN TESTS
	function run_tests
	{
		touch $TESTNAME
		echo "$CONTENT" > $TESTNAME

		../$EXECUTABLE $TESTNAME "$FIND" "$REPLACEMENT"
		OUTPUT=$( cat $TESTNAME.replace )
		if [ "$OUTPUT" == "$RESULT" ]
		then
			echo -e $B_GREEN"$TESTNAME success"$ENDCO
		else
			echo -e $B_RED"$TESTNAME 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 4 ########################################
TESTNAME="test4"
FIND=".."
REPLACEMENT="++"
CONTENT=$(cat << EOF
...................................................;
. . . . . . . . . . . . . . . . . . . . . . . . . .;
EOF
)
RESULT=$(cat << EOF
++++++++++++++++++++++++++++++++++++++++++++++++++.;
. . . . . . . . . . . . . . . . . . . . . . . . . .;
EOF
)
run_tests

# TEST 5 ########################################
TESTNAME="test5"
FIND="mdr"
REPLACEMENT="|||"
CONTENT=$(cat << EOF
test de mmdr foubar
EOF
)
RESULT=$(cat << EOF
test de m||| foubar
EOF
)
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

