Add tests from Etienne (enum metadata tests)
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Sun, 17 Nov 2013 19:41:34 +0000 (14:41 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Sun, 17 Nov 2013 19:41:34 +0000 (14:41 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
16 files changed:
tests/1.8/regression/metadata/fail/enum-untyped-missing-int/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/fail/enum-untyped-string/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/fail/enum-values-floating/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/fail/enum-values-token/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/fail/enum-values-too-big/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/fail/enum-values-too-small/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/fail/name-escaping-clashes/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/fail/name-escaping-empty/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-empty/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-nameless/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-token-kind/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-untyped-int/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-values-signed-big/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-values-signed-small/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-values-signed-value/metadata [new file with mode: 0644]
tests/1.8/regression/metadata/pass/enum-values-unsigned-big/metadata [new file with mode: 0644]

diff --git a/tests/1.8/regression/metadata/fail/enum-untyped-missing-int/metadata b/tests/1.8/regression/metadata/fail/enum-untyped-missing-int/metadata
new file mode 100644 (file)
index 0000000..5e71ab9
--- /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;
+
+// This is not defined, thus type 'int' doesn't exists.
+// typealias integer { size = 32; align = 32; signed = false; base = hex; } := int;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+event {
+       name = string;
+       fields := struct {
+         /* An untyped enum is typed with "int". */
+          enum {
+                 VAL1
+          } field;
+       };
+};
+
diff --git a/tests/1.8/regression/metadata/fail/enum-untyped-string/metadata b/tests/1.8/regression/metadata/fail/enum-untyped-string/metadata
new file mode 100644 (file)
index 0000000..6760c4d
--- /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;
+
+/* This is ugly: 'int' is defined as a 'string'. */
+typealias string { encoding = ascii; } := int;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+event {
+       name = string;
+       fields := struct {
+         /*  An untyped enum is typed with "int" (a string). */
+          enum {
+                 VAL1
+          } field;
+       };
+};
+
diff --git a/tests/1.8/regression/metadata/fail/enum-values-floating/metadata b/tests/1.8/regression/metadata/fail/enum-values-floating/metadata
new file mode 100644 (file)
index 0000000..aff1f40
--- /dev/null
@@ -0,0 +1,23 @@
+/* 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 floating_point { exp_dig = 8; mant_dig = 24; } := FLOAT;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+/* Enum can be nameless */
+event {
+       name = string;
+       fields := struct {
+               enum Z: FLOAT { X } Y; 
+       };
+};
diff --git a/tests/1.8/regression/metadata/fail/enum-values-token/metadata b/tests/1.8/regression/metadata/fail/enum-values-token/metadata
new file mode 100644 (file)
index 0000000..c236fa8
--- /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;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+/* Enum can be nameless */
+event {
+       name = string;
+       fields := struct {
+          enum : uint8_t {
+                 VAL1, 
+                 VAL2 = VAL1,
+                 VAL3 = VAL2
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/fail/enum-values-too-big/metadata b/tests/1.8/regression/metadata/fail/enum-values-too-big/metadata
new file mode 100644 (file)
index 0000000..7ba4a54
--- /dev/null
@@ -0,0 +1,27 @@
+/* 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 = false; 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];
+       };
+};
+
+/* Value 1024 is above the max value of TYPE. */
+event {
+       name = string;
+       fields := struct {
+          enum : TYPE {
+                 VAL1, 
+                 VAL2, 
+                 VAL3  = 1024
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/fail/enum-values-too-small/metadata b/tests/1.8/regression/metadata/fail/enum-values-too-small/metadata
new file mode 100644 (file)
index 0000000..dc82eda
--- /dev/null
@@ -0,0 +1,27 @@
+/* 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];
+       };
+};
+
+/* Value -1024 is below the min value of TYPE. */
+event {
+       name = string;
+       fields := struct {
+          enum : TYPE {
+                 VAL1, 
+                 VAL2, 
+                 VAL3  = -1024
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/fail/name-escaping-clashes/metadata b/tests/1.8/regression/metadata/fail/name-escaping-clashes/metadata
new file mode 100644 (file)
index 0000000..dc5a305
--- /dev/null
@@ -0,0 +1,24 @@
+/* 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;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+/* The first character is an escape char and is removed. */
+/* Thus str and _str are the same field, and should fail. */
+event {
+       name = string;
+       fields := struct {
+          string str;
+          string _str;
+       };
+};
diff --git a/tests/1.8/regression/metadata/fail/name-escaping-empty/metadata b/tests/1.8/regression/metadata/fail/name-escaping-empty/metadata
new file mode 100644 (file)
index 0000000..a7c32a1
--- /dev/null
@@ -0,0 +1,25 @@
+/* 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;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+/* The first character is an escape char and is removed. */
+/* Thus the field _ will produce an empty string. */
+event {
+       name = string;
+       fields := struct {
+          string _;
+          string __;
+          string ___;
+       };
+};
diff --git a/tests/1.8/regression/metadata/pass/enum-empty/metadata b/tests/1.8/regression/metadata/pass/enum-empty/metadata
new file mode 100644 (file)
index 0000000..8fda8b1
--- /dev/null
@@ -0,0 +1,24 @@
+/* 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 = false; base = hex; } := int;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+event {
+       name = string;
+       fields := struct {
+          // To be specified into the standard.
+          enum {} field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/pass/enum-nameless/metadata b/tests/1.8/regression/metadata/pass/enum-nameless/metadata
new file mode 100644 (file)
index 0000000..0eb053a
--- /dev/null
@@ -0,0 +1,24 @@
+/* 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;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+/* Enum can be nameless */
+event {
+       name = string;
+       fields := struct {
+          enum : uint8_t {
+                 VAL1, VAL2, VAL3
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/pass/enum-token-kind/metadata b/tests/1.8/regression/metadata/pass/enum-token-kind/metadata
new file mode 100644 (file)
index 0000000..e146055
--- /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;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+/* Enum can be nameless */
+event {
+       name = string;
+       fields := struct {
+          enum : uint8_t {
+                 "VAL1", 
+                 "VAL 1",
+                 VAL_1
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/pass/enum-untyped-int/metadata b/tests/1.8/regression/metadata/pass/enum-untyped-int/metadata
new file mode 100644 (file)
index 0000000..108554a
--- /dev/null
@@ -0,0 +1,27 @@
+/* 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 = false; base = hex; } := int;
+
+trace {
+       major = 0;
+       minor = 1;
+       uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";
+       byte_order = le;
+       packet.header := struct {
+               uint32_t magic;
+               uint8_t  uuid[16];
+       };
+};
+
+event {
+       name = string;
+       fields := struct {
+         /*  An untyped enum is typed with "int". */
+          enum {
+                 VAL1
+          } field;
+       };
+};
+
diff --git a/tests/1.8/regression/metadata/pass/enum-values-signed-big/metadata b/tests/1.8/regression/metadata/pass/enum-values-signed-big/metadata
new file mode 100644 (file)
index 0000000..4ba0b12
--- /dev/null
@@ -0,0 +1,27 @@
+/* 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];
+       };
+};
+
+/* Value 127 is the max value of TYPE. */
+event {
+       name = string;
+       fields := struct {
+          enum : TYPE {
+                 VAL1, 
+                 VAL2, 
+                 VAL3  = 127
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/pass/enum-values-signed-small/metadata b/tests/1.8/regression/metadata/pass/enum-values-signed-small/metadata
new file mode 100644 (file)
index 0000000..c29b5e8
--- /dev/null
@@ -0,0 +1,27 @@
+/* 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];
+       };
+};
+
+/* Value -128 is the min value of TYPE. */
+event {
+       name = string;
+       fields := struct {
+          enum : TYPE {
+                 VAL1, 
+                 VAL2, 
+                 VAL3  = -128
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/pass/enum-values-signed-value/metadata b/tests/1.8/regression/metadata/pass/enum-values-signed-value/metadata
new file mode 100644 (file)
index 0000000..8a4d594
--- /dev/null
@@ -0,0 +1,27 @@
+/* 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 = 8; align = 8; signed = true; base = 10; } := 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];
+       };
+};
+
+/* Negative value are allowed for signed enum. */
+event {
+       name = string;
+       fields := struct {
+          enum : TYPE {
+                 VAL1, 
+                 VAL2, 
+                 VAL3  = -1
+          } field;
+       };
+};
diff --git a/tests/1.8/regression/metadata/pass/enum-values-unsigned-big/metadata b/tests/1.8/regression/metadata/pass/enum-values-unsigned-big/metadata
new file mode 100644 (file)
index 0000000..5da3851
--- /dev/null
@@ -0,0 +1,27 @@
+/* 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 = false; 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];
+       };
+};
+
+/* Value 255 is the max value of TYPE. */
+event {
+       name = string;
+       fields := struct {
+          enum : TYPE {
+                 VAL1, 
+                 VAL2, 
+                 VAL3  = 255
+          } field;
+       };
+};
This page took 0.031404 seconds and 4 git commands to generate.