diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/test_language_base.py | 26 | ||||
-rw-r--r-- | test/test_language_websocket.py | 6 |
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() |