From 7745105a9c426e8c8daba5dc698de3be0ca54d6e Mon Sep 17 00:00:00 2001
From: J08nY
Date: Tue, 11 Apr 2017 16:40:45 +0200
Subject: Add basicc exhaustive generation test
---
CMakeLists.txt | 2 +-
test/ecgen.sh | 14 +++-
test/econvert.sh | 8 ++-
test/fp_10_a.csv | 1 +
test/fp_10_a.csv.in | 1 +
test/lib/assert.sh | 199 ++++++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 218 insertions(+), 7 deletions(-)
create mode 100644 test/fp_10_a.csv
create mode 100644 test/fp_10_a.csv.in
create mode 100644 test/lib/assert.sh
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7d8f8dc..dec4b32 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 2.8.11)
-project(ecgen)
+project(ecgen C)
set(CMAKE_LIBRARY_PATH ${CMAKE_SOURCE_DIR}/lib)
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG -g -Wall -Werror -pedantic")
diff --git a/test/ecgen.sh b/test/ecgen.sh
index 6a2d53e..d6d019f 100755
--- a/test/ecgen.sh
+++ b/test/ecgen.sh
@@ -1,10 +1,18 @@
#!/usr/bin/env bash
+. lib/assert.sh
ecgen="../ecgen"
function runs() {
- ${ecgen} --help
- ${ecgen} --version
+ assert_raises "${ecgen} --help"
+ assert_raises "${ecgen} --version"
+ assert_raises "${ecgen}" 64
}
-runs >/dev/null
\ No newline at end of file
+function csv() {
+ assert_matches "${ecgen} --fp -tcsv --input=fp_10_a.csv.in 10" "$(cat fp_10_a.csv)"
+}
+
+runs
+csv
+assert_end ecgen
diff --git a/test/econvert.sh b/test/econvert.sh
index 236543f..2c8354f 100755
--- a/test/econvert.sh
+++ b/test/econvert.sh
@@ -1,10 +1,12 @@
#!/usr/bin/env bash
+. lib/assert.sh
econvert="../econvert"
function runs() {
- ${econvert} --help
- ${econvert} --version
+ assert_raises "${econvert} --help"
+ assert_raises "${econvert} --version"
}
-runs >/dev/null
\ No newline at end of file
+runs
+assert_end econvert
diff --git a/test/fp_10_a.csv b/test/fp_10_a.csv
new file mode 100644
index 0000000..d90d75a
--- /dev/null
+++ b/test/fp_10_a.csv
@@ -0,0 +1 @@
+0xb,0x1,0x2,0x[0-9a-f],0x[0-9a-f],0x8,0x2,0x[0-9a-f],0x[0-9a-f],0x[0-9a-f],0x[0-9a-f],0x10,0x[0-9a-f],0x[0-9a-f],0x2
diff --git a/test/fp_10_a.csv.in b/test/fp_10_a.csv.in
new file mode 100644
index 0000000..4f4cff3
--- /dev/null
+++ b/test/fp_10_a.csv.in
@@ -0,0 +1 @@
+b,1,2
diff --git a/test/lib/assert.sh b/test/lib/assert.sh
new file mode 100644
index 0000000..c9c8f31
--- /dev/null
+++ b/test/lib/assert.sh
@@ -0,0 +1,199 @@
+#!/bin/bash
+# assert.sh 1.1 - bash unit testing framework
+# Copyright (C) 2009-2015 Robert Lehmann
+#
+# http://github.com/lehmannro/assert.sh
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program. If not, see .
+
+export DISCOVERONLY=${DISCOVERONLY:-}
+export DEBUG=${DEBUG:-}
+export STOP=${STOP:-}
+export INVARIANT=${INVARIANT:-}
+export CONTINUE=${CONTINUE:-}
+
+args="$(getopt -n "$0" -l \
+ verbose,help,stop,discover,invariant,continue vhxdic $*)" \
+|| exit -1
+for arg in $args; do
+ case "$arg" in
+ -h)
+ echo "$0 [-vxidc]" \
+ "[--verbose] [--stop] [--invariant] [--discover] [--continue]"
+ echo "`sed 's/./ /g' <<< "$0"` [-h] [--help]"
+ exit 0;;
+ --help)
+ cat < [stdin]
+ (( tests_ran++ )) || :
+ [[ -z "$DISCOVERONLY" ]] || return
+ expected=$(echo -ne "${2:-}")
+ result="$(eval 2>/dev/null $1 <<< ${3:-})" || true
+ if [[ "$result" == "$expected" ]]; then
+ [[ -z "$DEBUG" ]] || echo -n .
+ return
+ fi
+ result="$(sed -e :a -e '$!N;s/\n/\\n/;ta' <<< "$result")"
+ [[ -z "$result" ]] && result="nothing" || result="\"$result\""
+ [[ -z "$2" ]] && expected="nothing" || expected="\"$2\""
+ _assert_fail "expected $expected${_indent}got $result" "$1" "$3"
+}
+
+assert_matches() {
+ # assert_matches