Breaking out ex24 iofunctions files and writing a shell-based test thingy
This commit is contained in:
parent
b5b0213c5d
commit
2e0a5d5c99
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,3 +7,4 @@
|
|||||||
!*.h
|
!*.h
|
||||||
!*.mk
|
!*.mk
|
||||||
!test_*.sh
|
!test_*.sh
|
||||||
|
!*-input
|
||||||
|
1
Makefile
1
Makefile
@ -10,6 +10,7 @@ all: $(EXERCISES)
|
|||||||
|
|
||||||
test: all
|
test: all
|
||||||
$(MAKE) -f ex19.mk test
|
$(MAKE) -f ex19.mk test
|
||||||
|
./test_ex24_iofunctions.sh
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
19
ex24_iofunctions01.c
Normal file
19
ex24_iofunctions01.c
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "dbg.h"
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int a, b, rc;
|
||||||
|
char c;
|
||||||
|
printf("Reading from stdin: <a:number> <b:number> <c:letter>\n> ");
|
||||||
|
rc = fscanf(stdin, "%d %d %c", &a, &b, &c);
|
||||||
|
check(rc == 3, "Failed to read from stdin.");
|
||||||
|
|
||||||
|
printf("Read in: a=%d b=%d c=%c\n", a, b, c);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
return 1;
|
||||||
|
}
|
@ -2,28 +2,11 @@
|
|||||||
#include "dbg.h"
|
#include "dbg.h"
|
||||||
|
|
||||||
|
|
||||||
int fscanf_example01()
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int a, b, rc;
|
int a, b, rc;
|
||||||
char c;
|
char c;
|
||||||
printf("Reading from stdin: <a:number> <b:number> <c:letter>\n> ");
|
char filename[1024 * 2];
|
||||||
rc = fscanf(stdin, "%d %d %c", &a, &b, &c);
|
|
||||||
check(rc == 3, "Failed to read from stdin.");
|
|
||||||
|
|
||||||
printf("Read in: a=%d b=%d c=%c\n", a, b, c);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
error:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int fscanf_example02()
|
|
||||||
{
|
|
||||||
int a, b, rc;
|
|
||||||
char c;
|
|
||||||
char filename[1024];
|
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
|
||||||
printf("Provide filename from which to inputs\n> ");
|
printf("Provide filename from which to inputs\n> ");
|
||||||
@ -32,7 +15,7 @@ int fscanf_example02()
|
|||||||
fp = fopen(filename, "r");
|
fp = fopen(filename, "r");
|
||||||
check(fp != NULL, "Failed to open file %s", filename);
|
check(fp != NULL, "Failed to open file %s", filename);
|
||||||
|
|
||||||
printf("Reading from \"%s\": <a:number> <b:number> <c:letter>\n", filename);
|
printf("Reading from file: <a:number> <b:number> <c:letter>\n");
|
||||||
rc = fscanf(fp, "%d %d %c", &a, &b, &c);
|
rc = fscanf(fp, "%d %d %c", &a, &b, &c);
|
||||||
check(rc == 3, "Failed to read from \"%s\".", filename);
|
check(rc == 3, "Failed to read from \"%s\".", filename);
|
||||||
|
|
||||||
@ -40,18 +23,6 @@ int fscanf_example02()
|
|||||||
rc = fclose(fp);
|
rc = fclose(fp);
|
||||||
check(rc != EOF, "Failed to close file \"%s\"", filename);
|
check(rc != EOF, "Failed to close file \"%s\"", filename);
|
||||||
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
error:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
check(fscanf_example01() == 1, "Fail!");
|
|
||||||
check(fscanf_example02() == 1, "Fail!");
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
error:
|
error:
|
18
test_ex19.sh
18
test_ex19.sh
@ -5,20 +5,20 @@ EXIT_CODE=0
|
|||||||
run_test()
|
run_test()
|
||||||
{
|
{
|
||||||
echo -n " $1"
|
echo -n " $1"
|
||||||
cat $2 | ./ex19 >/dev/null
|
cat "$2" | ./ex19 >/dev/null
|
||||||
if [[ $? -eq 0 ]]
|
if [[ "$?" -eq "0" ]]
|
||||||
then
|
then
|
||||||
echo " ... OK"
|
echo " ... OK"
|
||||||
else
|
else
|
||||||
echo " ... FAIL"
|
echo " ... FAIL"
|
||||||
EXIT_CODE=1
|
EXIT_CODE=1
|
||||||
fi
|
fi
|
||||||
rm -f $2
|
rm -f "$2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp_01=`mktemp`
|
tmp_01="`mktemp`"
|
||||||
cat > $tmp_01 <<EOF
|
cat > "$tmp_01" <<EOF
|
||||||
l
|
l
|
||||||
n
|
n
|
||||||
w
|
w
|
||||||
@ -50,8 +50,8 @@ a
|
|||||||
a
|
a
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
tmp_02=`mktemp`
|
tmp_02="`mktemp`"
|
||||||
cat > $tmp_02 <<EOF
|
cat > "$tmp_02" <<EOF
|
||||||
l
|
l
|
||||||
a
|
a
|
||||||
a
|
a
|
||||||
@ -70,8 +70,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
run_test '01' $tmp_01
|
run_test '01' "$tmp_01"
|
||||||
run_test '02' $tmp_02
|
run_test '02' "$tmp_02"
|
||||||
|
|
||||||
|
|
||||||
exit $EXIT_CODE
|
exit $EXIT_CODE
|
||||||
|
56
test_ex24_iofunctions.sh
Executable file
56
test_ex24_iofunctions.sh
Executable file
@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
EXIT_CODE=0
|
||||||
|
|
||||||
|
run_test()
|
||||||
|
{
|
||||||
|
echo -n " $1"
|
||||||
|
out_tmp="$(mktemp)"
|
||||||
|
./ex24_iofunctions$1 < "$2" > "$out_tmp"
|
||||||
|
diff_out="$(mktemp)"
|
||||||
|
diff -u "$3" "$out_tmp" > "$diff_out"
|
||||||
|
diff_count="$(cat "$diff_out" | wc -l)"
|
||||||
|
if [[ "$?" == "0" ]] && [[ "$diff_count" == "0" ]]
|
||||||
|
then
|
||||||
|
echo " ... OK"
|
||||||
|
else
|
||||||
|
echo " ... FAIL"
|
||||||
|
echo " diff count => $diff_count"
|
||||||
|
cat "$diff_out"
|
||||||
|
EXIT_CODE=1
|
||||||
|
fi
|
||||||
|
rm -f "$2" "$out_tmp" "$diff_out"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tmp_01="$(mktemp)"
|
||||||
|
cat > "$tmp_01" <<EOF
|
||||||
|
2 8 n
|
||||||
|
EOF
|
||||||
|
expected_01="$(mktemp)"
|
||||||
|
cat > "$expected_01" <<EOF
|
||||||
|
Reading from stdin: <a:number> <b:number> <c:letter>
|
||||||
|
> Read in: a=2 b=8 c=n
|
||||||
|
EOF
|
||||||
|
|
||||||
|
tmp_02="$(mktemp)"
|
||||||
|
tmp_02in="$(mktemp)"
|
||||||
|
cat > "$tmp_02in" <<EOF
|
||||||
|
1 4 a
|
||||||
|
EOF
|
||||||
|
cat > "$tmp_02" <<EOF
|
||||||
|
$tmp_02in
|
||||||
|
EOF
|
||||||
|
expected_02="$(mktemp)"
|
||||||
|
cat > "$expected_02" <<EOF
|
||||||
|
Provide filename from which to inputs
|
||||||
|
> Reading from file: <a:number> <b:number> <c:letter>
|
||||||
|
Read in: a=1 b=4 c=a
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
run_test '01' "$tmp_01" "$expected_01"
|
||||||
|
run_test '02' "$tmp_02" "$expected_02"
|
||||||
|
|
||||||
|
|
||||||
|
exit $EXIT_CODE
|
Loading…
Reference in New Issue
Block a user