From 745d71c99cb19a3ab78588ad5435974d70f372c0 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Sun, 17 Nov 2013 14:41:34 -0500 Subject: [PATCH] Add tests from Etienne (enum metadata tests) Signed-off-by: Mathieu Desnoyers --- .../fail/enum-untyped-missing-int/metadata | 28 +++++++++++++++++++ .../fail/enum-untyped-string/metadata | 28 +++++++++++++++++++ .../fail/enum-values-floating/metadata | 23 +++++++++++++++ .../metadata/fail/enum-values-token/metadata | 26 +++++++++++++++++ .../fail/enum-values-too-big/metadata | 27 ++++++++++++++++++ .../fail/enum-values-too-small/metadata | 27 ++++++++++++++++++ .../fail/name-escaping-clashes/metadata | 24 ++++++++++++++++ .../fail/name-escaping-empty/metadata | 25 +++++++++++++++++ .../metadata/pass/enum-empty/metadata | 24 ++++++++++++++++ .../metadata/pass/enum-nameless/metadata | 24 ++++++++++++++++ .../metadata/pass/enum-token-kind/metadata | 26 +++++++++++++++++ .../metadata/pass/enum-untyped-int/metadata | 27 ++++++++++++++++++ .../pass/enum-values-signed-big/metadata | 27 ++++++++++++++++++ .../pass/enum-values-signed-small/metadata | 27 ++++++++++++++++++ .../pass/enum-values-signed-value/metadata | 27 ++++++++++++++++++ .../pass/enum-values-unsigned-big/metadata | 27 ++++++++++++++++++ 16 files changed, 417 insertions(+) create mode 100644 tests/1.8/regression/metadata/fail/enum-untyped-missing-int/metadata create mode 100644 tests/1.8/regression/metadata/fail/enum-untyped-string/metadata create mode 100644 tests/1.8/regression/metadata/fail/enum-values-floating/metadata create mode 100644 tests/1.8/regression/metadata/fail/enum-values-token/metadata create mode 100644 tests/1.8/regression/metadata/fail/enum-values-too-big/metadata create mode 100644 tests/1.8/regression/metadata/fail/enum-values-too-small/metadata create mode 100644 tests/1.8/regression/metadata/fail/name-escaping-clashes/metadata create mode 100644 tests/1.8/regression/metadata/fail/name-escaping-empty/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-empty/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-nameless/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-token-kind/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-untyped-int/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-values-signed-big/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-values-signed-small/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-values-signed-value/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-values-unsigned-big/metadata 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 index 0000000..5e71ab9 --- /dev/null +++ b/tests/1.8/regression/metadata/fail/enum-untyped-missing-int/metadata @@ -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 index 0000000..6760c4d --- /dev/null +++ b/tests/1.8/regression/metadata/fail/enum-untyped-string/metadata @@ -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 index 0000000..aff1f40 --- /dev/null +++ b/tests/1.8/regression/metadata/fail/enum-values-floating/metadata @@ -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 index 0000000..c236fa8 --- /dev/null +++ b/tests/1.8/regression/metadata/fail/enum-values-token/metadata @@ -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 index 0000000..7ba4a54 --- /dev/null +++ b/tests/1.8/regression/metadata/fail/enum-values-too-big/metadata @@ -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 index 0000000..dc82eda --- /dev/null +++ b/tests/1.8/regression/metadata/fail/enum-values-too-small/metadata @@ -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 index 0000000..dc5a305 --- /dev/null +++ b/tests/1.8/regression/metadata/fail/name-escaping-clashes/metadata @@ -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 index 0000000..a7c32a1 --- /dev/null +++ b/tests/1.8/regression/metadata/fail/name-escaping-empty/metadata @@ -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 index 0000000..8fda8b1 --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-empty/metadata @@ -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 index 0000000..0eb053a --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-nameless/metadata @@ -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 index 0000000..e146055 --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-token-kind/metadata @@ -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 index 0000000..108554a --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-untyped-int/metadata @@ -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 index 0000000..4ba0b12 --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-values-signed-big/metadata @@ -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 index 0000000..c29b5e8 --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-values-signed-small/metadata @@ -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 index 0000000..8a4d594 --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-values-signed-value/metadata @@ -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 index 0000000..5da3851 --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-values-unsigned-big/metadata @@ -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; + }; +}; -- 2.34.1