aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tests
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2019-07-25 10:10:32 +0200
committerRenaud G <renaud@rolisteam.org>2019-07-25 10:10:32 +0200
commit611aa0defd63ebc3b4e3d16a86c495a9af120728 (patch)
tree08dbfc737c2ca3ffd34e64558229ab1e68d1b375 /tests
parentd64ad7bb3e8fd632217ba0e8aae0586d8ed72ac6 (diff)
downloadOneRoll-611aa0defd63ebc3b4e3d16a86c495a9af120728.tar.gz
OneRoll-611aa0defd63ebc3b4e3d16a86c495a9af120728.zip
add fuzzer test
Diffstat (limited to 'tests')
-rw-r--r--tests/fuzzer/CMakeLists.txt25
-rwxr-xr-xtests/fuzzer/run_test.sh21
-rw-r--r--tests/fuzzer/testcase.cpp37
-rw-r--r--tests/fuzzer/testcase_dir/gooddata.txt79
4 files changed, 162 insertions, 0 deletions
diff --git a/tests/fuzzer/CMakeLists.txt b/tests/fuzzer/CMakeLists.txt
new file mode 100644
index 0000000..14386dc
--- /dev/null
+++ b/tests/fuzzer/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required(VERSION 3.10)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra")
+set(CMAKE_AUTOMOC ON)
+
+find_package(Qt5Core REQUIRED)
+find_package(Qt5Gui REQUIRED)
+find_package(Qt5Svg REQUIRED)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_AUTOMOC ON)
+
+#SET (CMAKE_EXE_LINKER_FLAGS "-static")
+
+add_definitions(-DPAINTER_OP)
+set(MODE "cli")
+
+
+
+set(fdsource testcase.cpp)
+
+add_executable(fuzzTestCase ${fdsource} )
+
+
+target_link_libraries(fuzzTestCase libdiceparser.a Qt5::Core Qt5::Gui Qt5::Svg)
+#target_link_libraries(fuzzTestCase )
diff --git a/tests/fuzzer/run_test.sh b/tests/fuzzer/run_test.sh
new file mode 100755
index 0000000..16579fd
--- /dev/null
+++ b/tests/fuzzer/run_test.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+rm -rf build
+mkdir build
+cd build
+CC=afl-gcc CXX=afl-g++ cmake ../ && make
+#export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
+
+
+#./fuzzTestCase ../testcase_dir/gooddata.txt
+afl-fuzz -m 2G -i ../testcase_dir -o ../findings_dir ./fuzzTestCase @@
+
+
+
+# as root
+
+# echo core >/proc/sys/kernel/core_pattern
+
+# echo performance | tee cpu*/cpufreq/scaling_governor
+
+# echo ondemand | tee cpu*/cpufreq/scaling_governor
diff --git a/tests/fuzzer/testcase.cpp b/tests/fuzzer/testcase.cpp
new file mode 100644
index 0000000..2660496
--- /dev/null
+++ b/tests/fuzzer/testcase.cpp
@@ -0,0 +1,37 @@
+#include <QCoreApplication>
+#include <QDebug>
+#include <QFile>
+#include <diceparser.h>
+
+static DiceParser* parser= new DiceParser();
+
+void runCommand(const QString& cmd)
+{
+ if(parser->parseLine(cmd))
+ {
+ // qDebug() << "valide cmd" << cmd;
+ parser->start();
+ }
+}
+
+int main(int argc, char** argv)
+{
+ // qDebug() << "first";
+ QCoreApplication app(argc, argv);
+
+ // qDebug() << "start";
+ QFile file(app.arguments().at(1));
+ // qDebug() << "file" << app.arguments().at(1);
+ if(!file.open(QIODevice::ReadOnly))
+ return 1;
+
+ auto line= file.readLine();
+ while(!line.isEmpty())
+ {
+ // qDebug() << line;
+ runCommand(QString::fromUtf8(line));
+ line= file.readLine();
+ }
+
+ return 0;
+}
diff --git a/tests/fuzzer/testcase_dir/gooddata.txt b/tests/fuzzer/testcase_dir/gooddata.txt
new file mode 100644
index 0000000..13f6911
--- /dev/null
+++ b/tests/fuzzer/testcase_dir/gooddata.txt
@@ -0,0 +1,79 @@
+1L[cheminée,chocolat,épée,arc,chute de pierre]
+10d10c[>=6]-@c[=1]
+10d10c[>=6]-@c[=1]-@c[=1]
+10d10c[>6]+@c[=10]
+1+1D10
+3d10c[>=5]
+1+(4*3)D10
+2+4/4
+2D10*2D20*8
+1+(4*3)D10
+(4D6)D10
+1D100a[>=95]a[>=96]a[>=97]a[>=98]a[>=99]e[>=100]
+3D100
+4k3
+10D10e[>=6]sc[>=6]
+10D10e10s
+10D10s
+15D10e10c[8-10]
+10d10e10
+(4+4)^4
+(1d20+20)*7/10
+20*7/10
+1D8+2D6+7
+D25
+1L[tete[10],ventre[50],jambe[40]]
+2d6c[%2=0]
+D25+D10
+D25;D10
+8+8+8
+1D20-88
+100*1D20*2D6
+2D6 # two 6sided dice
+100/28*3
+100/8
+100*3*8
+help
+la
+10D10c[<2|>7]
+10D6c[=2|=4|=6]
+10D10e[=1|=10]k4
+1L[tete,bras droit,bras gauche,jambe droite,jambe gauche,ventre[6-7],buste[8-10]]
+10+10s
+1d6e6;1d4e4mk1
+1d6e6;1d4e4mk1
+400D20/400000
+1d100e[>=95]i[<5]{-1d100e95}
+100*3*8
+1d100i[<70]{1d10i[=10]{1d100i[<70]{1d10e10}}}
+10d6c[<2|>5]
+5-5*5+5
+((3+4)*2)d6
+4d6i[=6]{+1d6}
+10d[-8--1]
+4d6e6i[=4]{-4}+2
+4d6e6f[!=4]+2
+5d10g10
+4d6p[4:blue]c[>=4];1d6p[1:#FFFFFF]c6-@c1;1d6p[1:#FF0000]c[>=4]+@c6-@c1
+10d[0-9]
+1d8e8;1d6e6mk1+2
+3d100g50
+3d100g33
+3d100g5
+3d100g40
+2d10k1+2d10k1+2d10k1
+2d10k1-2d10k1-2d10k1
+(2d10k1)-2d10k1-2d10k1
+2d10k1-(2d10k1)-2d10k1
+2d10k1-2d10k1-(2d10k1)
+1d6-2d6e6
+(1)-1d6e6
+(1)-(1d6e6)
+8d10o
+8d10o2,4
+8d10o2[>2]
+8d10ok2
+[100,200,300]k2
+100;200;300;[$1,$2,$3]k2
+0-15;$1|4;$1-($2*4)
+0-2;$1+$1;$2i:[<1]{1}{0}