aboutsummaryrefslogtreecommitdiffstats
path: root/test/pathod/language/test_generators.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/pathod/language/test_generators.py')
-rw-r--r--test/pathod/language/test_generators.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/pathod/language/test_generators.py b/test/pathod/language/test_generators.py
new file mode 100644
index 00000000..b3ce0335
--- /dev/null
+++ b/test/pathod/language/test_generators.py
@@ -0,0 +1,45 @@
+import os
+
+from pathod.language import generators
+from mitmproxy.test import tutils
+
+
+def test_randomgenerator():
+ g = generators.RandomGenerator("bytes", 100)
+ assert repr(g)
+ assert g[0]
+ assert len(g[0]) == 1
+ assert len(g[:10]) == 10
+ assert len(g[1:10]) == 9
+ assert len(g[:1000]) == 100
+ assert len(g[1000:1001]) == 0
+
+
+def test_filegenerator():
+ with tutils.tmpdir() as t:
+ path = os.path.join(t, "foo")
+ f = open(path, "wb")
+ f.write(b"x" * 10000)
+ f.close()
+ g = generators.FileGenerator(path)
+ assert len(g) == 10000
+ assert g[0] == b"x"
+ assert g[-1] == b"x"
+ assert g[0:5] == b"xxxxx"
+ assert len(g[1:10]) == 9
+ assert len(g[10000:10001]) == 0
+ assert repr(g)
+ # remove all references to FileGenerator instance to close the file
+ # handle.
+ del g
+
+
+def test_transform_generator():
+ def trans(offset, data):
+ return "a" * len(data)
+ g = "one"
+ t = generators.TransformGenerator(g, trans)
+ assert len(t) == len(g)
+ assert t[0] == "a"
+ assert t[:] == "a" * len(g)
+ assert repr(t)