From 06b79a6caa9a9b845367018e00713402647c826d Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sat, 2 Jan 2021 01:02:56 +0100 Subject: [PATCH] Add tests for M_AS_TYPE --- tests/test-mcore.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/test-mcore.c b/tests/test-mcore.c index f3207f30..fcdc4e35 100644 --- a/tests/test-mcore.c +++ b/tests/test-mcore.c @@ -401,6 +401,35 @@ static void test_reduce(void) == M_REDUCE(M_ID, add, M_SEQ(1, 10))); } +static void test_as_type(void) +{ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + int i = 42; + float f = 2.5; + void *p = (void*) &i; + struct as_type { int n; } n = { 17 }; + + assert (M_AS_TYPE(int, i) == 42); + assert (M_AS_TYPE(float, i) == 0.0); + assert (M_AS_TYPE(void *, i) == 0); + assert (M_AS_TYPE(struct as_type, i).n == 0 ); + + assert (M_AS_TYPE(int, f) == 0); + assert (M_AS_TYPE(float, f) == 2.5); + assert (M_AS_TYPE(void *, f) == 0); + assert (M_AS_TYPE(struct as_type, f).n == 0 ); + + assert (M_AS_TYPE(int, p) == 0); + assert (M_AS_TYPE(float, p) == 0.0); + assert (M_AS_TYPE(void *, p) == &i); + assert (M_AS_TYPE(struct as_type, p).n == 0 ); + + assert (M_AS_TYPE(int, n) == 0); + assert (M_AS_TYPE(float, n) == 0.0); + assert (M_AS_TYPE(void *, n) == 0); + assert (M_AS_TYPE(struct as_type, n).n == 17 ); +#endif +} static void test_parse_standard_c_type(void) { @@ -595,6 +624,7 @@ int main(void) test_oplist(); test_cast(); test_reduce(); + test_as_type(); test_parse_standard_c_type(); test_move_default(); test_builtin();