diff --git a/test/assert.sh b/test/assert.sh
index acceebf..30e158d 100644
--- a/test/assert.sh
+++ b/test/assert.sh
@@ -52,9 +52,12 @@
   local msg="${3-}"
 
   if [ "$expected" == "$actual" ]; then
+    [ "${#msg}" -gt 0 ] && log_success "$msg" || true
+    ((PASSED++))
     return 0
   else
-    [ "${#msg}" -gt 0 ] && log_failure "$expected == $actual :: $msg" || true
+    [ "${#msg}" -gt 0 ] && log_failure "$expected != $actual :: $msg is not the case" || true
+    ((ERRORS++))
     return 1
   fi
 }
@@ -65,9 +68,12 @@
   local msg="${3-}"
 
   if [ ! "$expected" == "$actual" ]; then
+    [ "${#msg}" -gt 0 ] && log_success "$msg" || true
+    ((PASSED++))
     return 0
   else
     [ "${#msg}" -gt 0 ] && log_failure "$expected != $actual :: $msg" || true
+    ((ERRORS++))
     return 1
   fi
 }
@@ -171,6 +177,7 @@
   fi
 
   if [ -z "${haystack##*$needle*}" ]; then
+    ((PASSED++))
     return 0
   else
     [ "${#msg}" -gt 0 ] && log_failure "$haystack doesn't contain $needle :: $msg" || true
@@ -188,9 +195,12 @@
   fi
 
   if [ "${haystack##*$needle*}" ]; then
+    [ "${#msg}" -gt 0 ] && log_success "$msg" || true
+    ((PASSED++))
     return 0
   else
-    [ "${#msg}" -gt 0 ] && log_failure "$haystack contains $needle :: $msg" || true
+    [ "${#msg}" -gt 0 ] && log_failure "$haystack not contains $needle :: $msg" || true
+    ((ERRORS++))
     return 1
   fi
 }
@@ -201,9 +211,12 @@
   local msg="${3-}"
 
   if [[ "$first" -gt  "$second" ]]; then
+    [ "${#msg}" -gt 0 ] && log_success "$msg" || true
+    ((PASSED++))
     return 0
   else
     [ "${#msg}" -gt 0 ] && log_failure "$first > $second :: $msg" || true
+    ((ERRORS++))
     return 1
   fi
 }
@@ -214,9 +227,12 @@
   local msg="${3-}"
 
   if [[ "$first" -ge  "$second" ]]; then
+    [ "${#msg}" -gt 0 ] && log_success "$msg" || true
+    ((PASSED++))
     return 0
   else
     [ "${#msg}" -gt 0 ] && log_failure "$first >= $second :: $msg" || true
+    ((ERRORS++))
     return 1
   fi
 }
@@ -227,9 +243,12 @@
   local msg="${3-}"
 
   if [[ "$first" -lt  "$second" ]]; then
+    [ "${#msg}" -gt 0 ] && log_success "$msg" || true
+    ((PASSED++))
     return 0
   else
     [ "${#msg}" -gt 0 ] && log_failure "$first < $second :: $msg" || true
+    ((ERRORS++))
     return 1
   fi
 }
@@ -240,9 +259,21 @@
   local msg="${3-}"
 
   if [[ "$first" -le  "$second" ]]; then
+    [ "${#msg}" -gt 0 ] && log_success "$msg" || true
+    ((PASSED++))
     return 0
   else
     [ "${#msg}" -gt 0 ] && log_failure "$first <= $second :: $msg" || true
+    ((ERRORS++))
     return 1
   fi
 }
+
+exit_with_test_summary() {
+  if [ "$ERRORS" -gt 0 ]; then
+    log_failure "There were $ERRORS errors"
+  else
+    log_success "All $PASSED tests passed"
+  fi
+  exit $ERRORS
+}
\ No newline at end of file
