OER support and randomized testing for the REAL (floating point) type
diff --git a/tests/tests-randomized/bundles/04-REAL-bundle.txt b/tests/tests-randomized/bundles/04-REAL-bundle.txt
new file mode 100644
index 0000000..dc659d1
--- /dev/null
+++ b/tests/tests-randomized/bundles/04-REAL-bundle.txt
@@ -0,0 +1,2 @@
+-- Test the REAL (floating point) type.
+T ::= REAL
diff --git a/tests/tests-randomized/bundles/05-BIT-STRING-bundle.txt b/tests/tests-randomized/bundles/05-BIT-STRING-bundle.txt
new file mode 100644
index 0000000..f2d253e
--- /dev/null
+++ b/tests/tests-randomized/bundles/05-BIT-STRING-bundle.txt
@@ -0,0 +1,25 @@
+-- Test encoding/decoding/transcoding of everything concerning the BIT STRING.
+T ::= BIT STRING { foo(0) }
+T ::= BIT STRING { foo(0) } (SIZE(0..1))
+T ::= BIT STRING { foo(0) } (SIZE(1))
+T ::= BIT STRING { foo(0) } (SIZE(1..MAX))
+T ::= BIT STRING { foo(0) } (SIZE(1..2))
+T ::= BIT STRING { foo(0) } (SIZE(2))
+T ::= BIT STRING { foo(0) } (SIZE(2,...))
+T ::= BIT STRING { foo(0), bar(65535) }
+T ::= BIT STRING { foo(0), bar(65535) } (SIZE(0..16))
+T ::= BIT STRING { foo(0), bar(65535) } (SIZE(16))
+T ::= BIT STRING { foo(0), bar(2147483647) }
+T ::= BIT STRING { foo(0), bar(2147483647) } (SIZE(1..MAX))
+T ::= BIT STRING { foo(2147483648), bar(0), baz(2147483647) }
+T ::= BIT STRING { foo(2147483648), baz(2147483647) }
+T ::= BIT STRING { foo(2147483648), baz(2147483647) } (SIZE(32))
+T ::= BIT STRING { foo(2147483648), baz(2147483647) } (SIZE(31,...))
+T ::= BIT STRING { foo(2147483648), baz(2147483647) } (SIZE(0..32))
+T ::= BIT STRING { foo(2147483648), baz(2147483647) } (SIZE(0..31,...))
+T ::= BIT STRING { foo(0) } (SIZE(65535))       -- RMAX=65540
+T ::= BIT STRING { foo(0) } (SIZE(65536))       -- RMAX=65540
+T ::= BIT STRING { foo(0) } (SIZE(65537))       -- RMAX=65540
+T ::= BIT STRING { foo(0) } (SIZE(65535,...))   -- RMAX=65540
+T ::= BIT STRING { foo(0) } (SIZE(65536,...))   -- RMAX=65540
+T ::= BIT STRING { foo(0) } (SIZE(65537,...))   -- RMAX=65540
diff --git a/tests/tests-randomized/bundles/06-OCTET-STRING-bundle.txt b/tests/tests-randomized/bundles/06-OCTET-STRING-bundle.txt
new file mode 100644
index 0000000..192ebac
--- /dev/null
+++ b/tests/tests-randomized/bundles/06-OCTET-STRING-bundle.txt
@@ -0,0 +1,19 @@
+-- Test encoding/decoding/transcoding of a primitive byte string type
+T ::= OCTET STRING
+T ::= OCTET STRING ("Value Constraint")
+T ::= OCTET STRING (SIZE(0))
+T ::= OCTET STRING (SIZE(0,...))
+T ::= OCTET STRING (SIZE(1))
+T ::= OCTET STRING (SIZE(1,...))
+T ::= OCTET STRING (SIZE(2))
+T ::= OCTET STRING (SIZE(2,...))
+T ::= OCTET STRING (SIZE(1..2))
+T ::= OCTET STRING (SIZE(1..2,...))
+T ::= OCTET STRING (SIZE(1..127))
+T ::= OCTET STRING (SIZE(1..128))
+T ::= OCTET STRING (SIZE(1..129))
+T ::= OCTET STRING (SIZE(64000))           -- RMAX=64000, #11.9.3.3
+T ::= OCTET STRING (SIZE(32000..32002))    -- RMAX=33000
+T ::= OCTET STRING (SIZE(65530..65535))    -- RMAX=65536
+T ::= OCTET STRING (SIZE(65530..65536))    -- RMAX=65536
+T ::= OCTET STRING (SIZE(65535..65550))    -- RMAX=66000
diff --git a/tests/tests-randomized/bundles/07-VisibleString-bundle.txt b/tests/tests-randomized/bundles/07-VisibleString-bundle.txt
new file mode 100644
index 0000000..b94c1ea
--- /dev/null
+++ b/tests/tests-randomized/bundles/07-VisibleString-bundle.txt
@@ -0,0 +1,27 @@
+-- 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(4..6) INTERSECTION (FROM("A".."B")))
+T ::= VisibleString (SIZE(4..6,...) INTERSECTION (FROM("A".."B")))
+T ::= VisibleString (SIZE(64000))           -- RMAX=64000, #11.9.3.3
+T ::= VisibleString (SIZE(32000..32002))    -- RMAX=33000
+T ::= VisibleString (SIZE(32000..32002)) (FROM("A".."B"))       -- RMAX=33000
+T ::= VisibleString (SIZE(32000..32002,...)) (FROM("A".."B"))   -- RMAX=33000
+T ::= VisibleString (SIZE(65530..65535))    -- RMAX=65536
+T ::= VisibleString (SIZE(65530..65536))    -- RMAX=65536
+T ::= VisibleString (SIZE(65535..65550))    -- RMAX=66000