encode BIT STRING in a minimum number of bits for CANONICAL-UPER
diff --git a/tests/tests-randomized/bundles/04-VisibleString-bundle.txt b/tests/tests-randomized/bundles/04-VisibleString-bundle.txt
new file mode 100644
index 0000000..c86aa79
--- /dev/null
+++ b/tests/tests-randomized/bundles/04-VisibleString-bundle.txt
@@ -0,0 +1,26 @@
+-- Test encoding/decoding/transcoding of a simple string type
+T ::= VisibleString
+T ::= VisibleString ("Value Constraint")
+T ::= VisibleString (SIZE(0))
+T ::= VisibleString (SIZE(0,...))
+T ::= VisibleString (SIZE(1))
+T ::= VisibleString (SIZE(1)) (FROM("A".."B"))
+T ::= VisibleString (SIZE(1,..))
+T ::= VisibleString (SIZE(2))
+T ::= VisibleString (SIZE(2,...))
+T ::= VisibleString (SIZE(1..2))
+T ::= VisibleString (SIZE(1..2,...))
+T ::= VisibleString (SIZE(4..6,...)) (FROM("A".."B"))
+T ::= VisibleString (SIZE(1..MAX)) FROM("A".."B"))
+T ::= VisibleString (SIZE(1..127))
+T ::= VisibleString (SIZE(1..128))
+T ::= VisibleString (SIZE(1..129))
+T ::= VisibleString (SIZE(5) INTERSECTION FROM("A".."Z"))
+T ::= VisibleString (SIZE(64000))   -- Length is not encoded, #11.9.3.3
+T ::= VisibleString (SIZE(32000..32002))
+T ::= VisibleString (SIZE(32000..32002)) (FROM("A".."B"))
+T ::= VisibleString (SIZE(32000..32002,...)) (FROM("A".."B"))
+T ::= VisibleString (SIZE(65530..65535))
+T ::= VisibleString (SIZE(65530..65536))
+T ::= VisibleString (SIZE(4..6) INTERSECTION (FROM("A".."B")))
+T ::= VisibleString (SIZE(4..6,...) INTERSECTION (FROM("A".."B")))