From 2189a78f29ba251652ad41da30580ed4e179322f Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Tue, 6 Mar 2018 16:03:38 -0500 Subject: [PATCH] Add enumeration corner-cases tests Signed-off-by: Mathieu Desnoyers --- .../metadata/pass/enum-multi-label/metadata | 28 +++++++++++++++++++ .../metadata/pass/enum-range-label/metadata | 26 +++++++++++++++++ .../pass/enum-range-overlap-label/metadata | 26 +++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 tests/1.8/regression/metadata/pass/enum-multi-label/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-range-label/metadata create mode 100644 tests/1.8/regression/metadata/pass/enum-range-overlap-label/metadata 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 index 0000000..1b9e644 --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-multi-label/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; +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 index 0000000..bae76c3 --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-range-label/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; +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 index 0000000..72f215f --- /dev/null +++ b/tests/1.8/regression/metadata/pass/enum-range-overlap-label/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; +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; + }; +}; -- 2.34.1