From 20add003b16bdbaba279ef6286a0f0025658d1e2 Mon Sep 17 00:00:00 2001
From: Egor Tensin <Egor.Tensin@gmail.com>
Date: Sat, 25 Jun 2016 05:51:26 +0300
Subject: improve command line parsing errors

---
 plot.py | 16 +++++++++++-----
 test.py |  7 +++++--
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/plot.py b/plot.py
index 2681628..35fd6ed 100644
--- a/plot.py
+++ b/plot.py
@@ -29,22 +29,28 @@ def plot_algorithm(algorithm, input_kind=_DEFAULT_INPUT_KIND,
     params.plot_running_time(output_path)
 
 def _parse_natural_number(s):
-    n = int(s)
+    try:
+        n = int(s)
+    except ValueError:
+        raise argparse.ArgumentTypeError('must be a non-negative integer: ' + str(s))
     if n < 0:
-        raise argparse.ArgumentTypeError('must not be a negative number')
+        raise argparse.ArgumentTypeError('must be a non-negative integer')
     return n
 
 def _parse_positive_number(s):
-    n = int(s)
+    try:
+        n = int(s)
+    except ValueError:
+        raise argparse.ArgumentTypeError('must be a positive integer: ' + str(s))
     if n < 1:
-        raise argparse.ArgumentTypeError('must be positive')
+        raise argparse.ArgumentTypeError('must be a positive integer')
     return n
 
 def _parse_input_kind(s):
     try:
         return InputKind(s)
     except ValueError:
-        raise argparse.ArgumentTypeError('invalid input_kind: ' + str(s))
+        raise argparse.ArgumentTypeError('invalid input kind: ' + str(s))
 
 def _format_algorithm(codename):
     return '* {}: {}'.format(codename, registry.get(codename).display_name)
diff --git a/test.py b/test.py
index 0341bf3..a9bf401 100644
--- a/test.py
+++ b/test.py
@@ -22,9 +22,12 @@ def test(algorithm, input_kind=_DEFAULT_INPUT_KIND, length=_DEFAULT_LENGTH):
     print(output)
 
 def _parse_natural_number(s):
-    n = int(s)
+    try:
+        n = int(s)
+    except ValueError:
+        raise argparse.ArgumentTypeError('must be a non-negative integer: ' + str(s))
     if n < 0:
-        raise argparse.ArgumentTypeError('must not be a negative number')
+        raise argparse.ArgumentTypeError('must be a non-negative integer')
     return n
 
 def _parse_input_kind(s):
-- 
cgit v1.2.3