Forum jest zablokowane. Podczas blokady nie można dodawać ani edytować wiadomości.
Temat: [KOL] Testy
Potwierdzam
Ale Kamil, tu jest jeszcze paczka small, którą pominąłeś. Co mam zrobić aby i na niej przetestować?
A tak na poważnie, to można jeszcze trochę uwygodnić tę testerkę
for t in $2/*.in; do
echo $q
o=${t%.in}.out
diff -bsq $o <(./$1 < $t) || break
done
aby nie trzeba było jej za każdym razem zmieniać jak zmieniamy testowany program i folder tylko można je podawać jako argumenty uruchamiania, przykładowe użycie "./test.sh kol big"
for t in $2/*.in; do
echo $q
o=${t%.in}.out
diff -bsq $o <(./$1 < $t) || break
done
aby nie trzeba było jej za każdym razem zmieniać jak zmieniamy testowany program i folder tylko można je podawać jako argumenty uruchamiania, przykładowe użycie "./test.sh kol big"
Potwierdzam obydwie paczki
Potwierdzam
To ja też potwierdzam :)
To ja też wrzucę swoją sprawdzaczkę do testów:
#!/bin/bash
PROG_OUT=out
if [ $# == 0 ] ; then
echo "using: $0 PROG [PROG_test]"
exit
fi
if [ $# == 1 ] ; then
PROG=$1
FILES="${PROG}_test"
else
PROG=$1
FILES=$2
fi
echo "Program name: $PROG"
echo "Test folder: $FILES"
echo "Processing..."
let good=0
let bad=0
FILES="${FILES}/*.in"
for INPUT in $FILES
do
OUTPUT=${INPUT/%.in/.out}
./$PROG < $INPUT > $PROG_OUT
if diff $OUTPUT $PROG_OUT --ignore-trailing-space --ignore-space-change &>/dev/null ; then
let good++
else
let bad++
echo "błąd: $INPUT"
fi
done
echo "Test passed: $good"
echo "Test failed: $bad"
#!/bin/bash
PROG_OUT=out
if [ $# == 0 ] ; then
echo "using: $0 PROG [PROG_test]"
exit
fi
if [ $# == 1 ] ; then
PROG=$1
FILES="${PROG}_test"
else
PROG=$1
FILES=$2
fi
echo "Program name: $PROG"
echo "Test folder: $FILES"
echo "Processing..."
let good=0
let bad=0
FILES="${FILES}/*.in"
for INPUT in $FILES
do
OUTPUT=${INPUT/%.in/.out}
./$PROG < $INPUT > $PROG_OUT
if diff $OUTPUT $PROG_OUT --ignore-trailing-space --ignore-space-change &>/dev/null ; then
let good++
else
let bad++
echo "błąd: $INPUT"
fi
done
echo "Test passed: $good"
echo "Test failed: $bad"
Potwierdzam
potwierdzam
Potwierdzam obie paki. Moja sprawdzaczka wygląda tak (plik Makefile, \t to tabulator):
------8<------
TARGET = $(basename $(wildcard *.cpp))
.PHONY: all clean test check %.check
all: $(TARGET)
%: %.cpp
\tg++ -std=c++17 -static -O3 $< -lm -Wall -o $@
clean:
\t-rm $(TARGET)
test: $(addsuffix .out,$(basename $(shell ls -v *.in 2>/dev/null)))
%.out: %.in $(TARGET)
\t./$(TARGET) < $< > $@
check: $(addsuffix .check,$(basename $(shell ls -v *.out 2>/dev/null)))
%.check: %.in $(TARGET)
\t./$(TARGET) < $< | diff - $(addsuffix .out,$(basename $@)) || true
time: $(addsuffix .time,$(basename $(shell ls -v *.in 2>/dev/null)))
%.time: %.in $(TARGET)
#\ttime -f%U ./$(TARGET) < $< > /dev/null
\tsh -c "time ./$(TARGET) < $< > /dev/null" 2>&1 | grep user
%.in: %
\t./$< > $@
------8<------
Uruchamianie:
make # kompilacja
make clean # usunięcie skompilowanych programów
make check # sprawdzenie testów (uruchomienie dla *.in i porównanie wyników z *.out)
make test # utworzenie wyników *.out na podstawie *.in
make time # test wydajnościowy (zmierzenie czasów wykonania dla wszystkich *.in)
------8<------
TARGET = $(basename $(wildcard *.cpp))
.PHONY: all clean test check %.check
all: $(TARGET)
%: %.cpp
\tg++ -std=c++17 -static -O3 $< -lm -Wall -o $@
clean:
\t-rm $(TARGET)
test: $(addsuffix .out,$(basename $(shell ls -v *.in 2>/dev/null)))
%.out: %.in $(TARGET)
\t./$(TARGET) < $< > $@
check: $(addsuffix .check,$(basename $(shell ls -v *.out 2>/dev/null)))
%.check: %.in $(TARGET)
\t./$(TARGET) < $< | diff - $(addsuffix .out,$(basename $@)) || true
time: $(addsuffix .time,$(basename $(shell ls -v *.in 2>/dev/null)))
%.time: %.in $(TARGET)
#\ttime -f%U ./$(TARGET) < $< > /dev/null
\tsh -c "time ./$(TARGET) < $< > /dev/null" 2>&1 | grep user
%.in: %
\t./$< > $@
------8<------
Uruchamianie:
make # kompilacja
make clean # usunięcie skompilowanych programów
make check # sprawdzenie testów (uruchomienie dla *.in i porównanie wyników z *.out)
make test # utworzenie wyników *.out na podstawie *.in
make time # test wydajnościowy (zmierzenie czasów wykonania dla wszystkich *.in)
Potwierdzam
Ciekawe testy, potwierdzam poprawność.
Potwierdzam.
Potwierdzam
Potwierdzam
Potwierdzam
Potwierdzam
Potwierdzam
Potwierdzam