MLBEDSW-3832: mlw_codec: improve C API

- Removed unnecessary casts
- Added more error handling

Signed-off-by: Louis Verhaard <louis.verhaard@arm.com>
Change-Id: I30cc37a2fb1e855b9f67599c280c1f383f0b059e
diff --git a/ethosu/mlw_codec/test/test_mlw_codec.py b/ethosu/mlw_codec/test/test_mlw_codec.py
index d37462d..18c828a 100644
--- a/ethosu/mlw_codec/test/test_mlw_codec.py
+++ b/ethosu/mlw_codec/test/test_mlw_codec.py
@@ -60,3 +60,17 @@
     def _call_mlw_codec_method(self, method_name, test_input, expected):
         output = method_name(test_input)
         assert output == expected
+
+    invalid_encode_test_data = [None, 3, [4, 5, None, 7], [0, 1, "two", 3], [1, 2, 256, 4], [2, 4, 8, -256]]
+
+    @pytest.mark.parametrize("input", invalid_encode_test_data)
+    def test_encode_invalid_input(self, input):
+        with pytest.raises(Exception):
+            mlw_codec.encode(input)
+
+    invalid_decode_test_data = [None, 3, []]
+
+    @pytest.mark.parametrize("input", invalid_decode_test_data)
+    def test_decode_invalid_input(self, input):
+        with pytest.raises(Exception):
+            mlw_codec.decode(input)