aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test_language_base.py26
-rw-r--r--test/test_language_websocket.py6
2 files changed, 31 insertions, 1 deletions
diff --git a/test/test_language_base.py b/test/test_language_base.py
index c6cee7b3..bd67c010 100644
--- a/test/test_language_base.py
+++ b/test/test_language_base.py
@@ -168,7 +168,7 @@ class TestMisc:
assert base.TokValue.parseString('"val"')[0].val == "val"
assert base.TokValue.parseString('"\'val\'"')[0].val == "'val'"
- def test_prevalue(self):
+ def test_value(self):
class TT(base.Value):
preamble = "m"
e = TT.expr()
@@ -183,6 +183,30 @@ class TestMisc:
v3 = v2.freeze({})
assert v2.value.val == v3.value.val
+ def test_fixedlengthvalue(self):
+ class TT(base.FixedLengthValue):
+ preamble = "m"
+ length = 4
+
+ e = TT.expr()
+ assert e.parseString("m@4")
+ tutils.raises("invalid value length", e.parseString, "m@100")
+ tutils.raises("invalid value length", e.parseString, "m@1")
+
+ with tutils.tmpdir() as t:
+ p = os.path.join(t, "path")
+ s = base.Settings(staticdir=t)
+ with open(p, "wb") as f:
+ f.write("a" * 20)
+ v = e.parseString("m<path")[0]
+ tutils.raises("invalid value length", v.values, s)
+
+ p = os.path.join(t, "path")
+ with open(p, "wb") as f:
+ f.write("a" * 4)
+ v = e.parseString("m<path")[0]
+ assert v.values(s)
+
class TKeyValue(base.KeyValue):
preamble = "h"
diff --git a/test/test_language_websocket.py b/test/test_language_websocket.py
index 8abb55aa..4b384f61 100644
--- a/test/test_language_websocket.py
+++ b/test/test_language_websocket.py
@@ -21,6 +21,7 @@ class TestWebsocketFrame:
"wf:fin",
"wf:fin:rsv1:rsv2:rsv3:mask",
"wf:-fin:-rsv1:-rsv2:-rsv3:-mask",
+ "wf:k@4",
]
for i in specs:
wf = parse_request(i)
@@ -62,3 +63,8 @@ class TestWebsocketFrame:
frm = netlib.websockets.Frame.from_bytes(tutils.render(wf))
assert wf.opcode.value == frm.header.opcode
assert wf.opcode.value == netlib.websockets.OPCODE.BINARY
+
+ def test_auto_raw(self):
+ wf = parse_request("wf:b'foo':mask")
+ frm = netlib.websockets.Frame.from_bytes(tutils.render(wf))
+ print frm.human_readable()