Add enumeration corner-cases tests
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 6 Mar 2018 21:03:38 +0000 (16:03 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 6 Mar 2018 21:03:38 +0000 (16:03 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
tests/1.8/regression/metadata/pass/enum-multi-label/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-range-label/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-range-overlap-label/metadata [new file with mode: 0644]

diff --git a/tests/1.8/regression/metadata/pass/enum-multi-label/metadata b/tests/1.8/regression/metadata/pass/enum-multi-label/metadata
new file mode 100644 (file)
index 0000000..1b9e644
--- /dev/null
@@ -0,0 +1,28 @@
+/* CTF 1.8 */
+typealias integer { size = 8; align = 8; signed = false; base = 10; } := uint8_t;
+typealias integer { size = 32; align = 32; signed = false; base = hex; } := uint32_t;
+typealias integer { size = 32; align = 32; signed = true; base = hex; } := TYPE;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+/* It is valid to have many labels mapping to a single value. */
+event {
+       name = string;
+       fields := struct {
+          enum : TYPE {
+                 VAL1 = 2,
+                 VAL2 = 2,
+                 VAL3 = 2,
+                 VAL4 = 2,
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/pass/enum-range-label/metadata b/tests/1.8/regression/metadata/pass/enum-range-label/metadata
new file mode 100644 (file)
index 0000000..bae76c3
--- /dev/null
@@ -0,0 +1,26 @@
+/* CTF 1.8 */
+typealias integer { size = 8; align = 8; signed = false; base = 10; } := uint8_t;
+typealias integer { size = 32; align = 32; signed = false; base = hex; } := uint32_t;
+typealias integer { size = 32; align = 32; signed = true; base = hex; } := TYPE;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+/* Test label with non-overlapping range. */
+event {
+       name = string;
+       fields := struct {
+          enum : TYPE {
+                 VAL1 = 5 ... 8,
+                 VAL2 = 7 ... 10,
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/pass/enum-range-overlap-label/metadata b/tests/1.8/regression/metadata/pass/enum-range-overlap-label/metadata
new file mode 100644 (file)
index 0000000..72f215f
--- /dev/null
@@ -0,0 +1,26 @@
+/* CTF 1.8 */
+typealias integer { size = 8; align = 8; signed = false; base = 10; } := uint8_t;
+typealias integer { size = 32; align = 32; signed = false; base = hex; } := uint32_t;
+typealias integer { size = 32; align = 32; signed = true; base = hex; } := TYPE;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+/* Test label with overlapping range. */
+event {
+       name = string;
+       fields := struct {
+          enum : TYPE {
+                 VAL1 = 5 ... 9,
+                 VAL2 = 7 ... 10,
+          } field;
+       };
+};
This page took 0.025992 seconds and 4 git commands to generate.