From 02e0eae396ab42e9db0f9f85756236bf9e674bd8 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 9 Sep 2019 21:08:31 +0100 Subject: [PATCH] New test --- implementations/javascript/src/codec.js | 1 + implementations/python/preserves/preserves.py | 5 ++++- tests/samples.bin | Bin 5561 -> 5600 bytes tests/samples.txt | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/implementations/javascript/src/codec.js b/implementations/javascript/src/codec.js index 9b265cd..53c1cb5 100644 --- a/implementations/javascript/src/codec.js +++ b/implementations/javascript/src/codec.js @@ -138,6 +138,7 @@ class Decoder { mapFromArray(vs) { return Map().withMutations((m) => { + if (vs.length % 2) throw new DecodeError("Missing dictionary value"); for (let i = 0; i < vs.length; i += 2) { m.set(vs[i], vs[i+1]); } diff --git a/implementations/python/preserves/preserves.py b/implementations/python/preserves/preserves.py index bbab159..43e6d2e 100644 --- a/implementations/python/preserves/preserves.py +++ b/implementations/python/preserves/preserves.py @@ -166,7 +166,10 @@ class ImmutableDict(dict): try: while True: k = next(i) - v = next(i) + try: + v = next(i) + except StopIteration: + raise DecodeError("Missing dictionary value") result_proxy.__setitem__(k, v) except StopIteration: pass diff --git a/tests/samples.bin b/tests/samples.bin index 3fcec9604238c1dc761bf9ae40cc1a7a77007e12..e476315c3465191deed1403ba28138c32f5d07eb 100644 GIT binary patch delta 57 zcmdm~{Xly{3ge57sWp7+r74-oC8n&gzL~|vnR)37Wr;bZsZG@`smb{%sjfvu`9&$4 N4ULR9Kjgc?1^}3_7SjL# delta 17 ZcmaE$y;FNa3gfelsWp6?Irwj|0RTpH2NM7Q diff --git a/tests/samples.txt b/tests/samples.txt index f44bc51..bdaee3a 100644 --- a/tests/samples.txt +++ b/tests/samples.txt @@ -36,6 +36,7 @@ dict2a: @"Missing close brace" dict3: @"Duplicate key" dict4: @"Unexpected close brace" + dict5: @"Missing value" double1: double2: float1: