[DTrace-devel] [PATCH 04/14] test: Add cast-exp tests for other variable types

Kris Van Hees kris.van.hees at oracle.com
Thu May 4 04:14:08 UTC 2023


On Mon, May 01, 2023 at 11:47:12PM -0400, eugene.loh--- via DTrace-devel wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> Add corresponding tests for non-global variables.  This is perhaps
> overkill:  these tests check behavior on a code path that is shared
> by multiple variable types.
> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>

Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>

Very nice work!

> ---
>  test/unittest/arithmetic/tst.cast-exp-assoc.d | 140 ++++++++++++++++++
>  test/unittest/arithmetic/tst.cast-exp-assoc.r |  75 ++++++++++
>  test/unittest/arithmetic/tst.cast-exp-tvar.d  | 140 ++++++++++++++++++
>  test/unittest/arithmetic/tst.cast-exp-tvar.r  |  75 ++++++++++
>  4 files changed, 430 insertions(+)
>  create mode 100644 test/unittest/arithmetic/tst.cast-exp-assoc.d
>  create mode 100644 test/unittest/arithmetic/tst.cast-exp-assoc.r
>  create mode 100644 test/unittest/arithmetic/tst.cast-exp-tvar.d
>  create mode 100644 test/unittest/arithmetic/tst.cast-exp-tvar.r
> 
> diff --git a/test/unittest/arithmetic/tst.cast-exp-assoc.d b/test/unittest/arithmetic/tst.cast-exp-assoc.d
> new file mode 100644
> index 00000000..867833f5
> --- /dev/null
> +++ b/test/unittest/arithmetic/tst.cast-exp-assoc.d
> @@ -0,0 +1,140 @@
> +/*
> + * Oracle Linux DTrace.
> + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
> + * Licensed under the Universal Permissive License v 1.0 as shown at
> + * http://oss.oracle.com/licenses/upl.
> + */
> +
> +/*
> + * ASSERTION:  Integers are typecast correctly (explicit)
> + *	       when using associative arrays.
> + *
> + * SECTION: Types, Operators, and Expressions/Arithmetic Operators
> + */
> +/* @@runtest-opts: -qC */
> +
> +signed char c[int], c0[int];
> +short s[int], s0[int];
> +int i[int], i0[int];
> +long long l[int], l0[int];
> +unsigned char C[int], C0[int];
> +unsigned short S[int], S0[int];
> +unsigned int I[int], I0[int];
> +unsigned long long L[int], L0[int];
> +
> +#define FMT "%d %d %d %d %d %d %d %d\n"
> +
> +#define TEST(x) \
> +	c[0] = (signed char)(x); \
> +	s[0] = (short)(x); \
> +	i[0] = (int)(x); \
> +	l[0] = (long long)(x); \
> +	C[0] = (unsigned char)(x); \
> +	S[0] = (unsigned short)(x); \
> +	I[0] = (unsigned int)(x); \
> +	L[0] = (unsigned long long)(x); \
> +	printf(FMT, c[0], s[0], i[0], l[0], C[0], S[0], I[0], L[0])
> +
> +BEGIN
> +{
> +	/* from scalar */
> +	TEST(-2);
> +	TEST(0xfffffffffffffffe);
> +	TEST(0xfffffffe);
> +	TEST(0xfffe);
> +	TEST(0xfe);
> +	TEST(2);
> +	TEST(0x55);
> +	TEST(0x5555);
> +	TEST(0x55555555);
> +	TEST(0x5555555555555555);
> +
> +	/* from signed char */
> +	c0[0] = -2; TEST(c0[0]);
> +	c0[0] = 0xfe; TEST(c0[0]);
> +	c0[0] = 2; TEST(c0[0]);
> +	c0[0] = 0x55; TEST(c0[0]);
> +
> +	/* from short */
> +	s0[0] = -2; TEST(s0[0]);
> +	s0[0] = 0xfffe; TEST(s0[0]);
> +	s0[0] = 2; TEST(s0[0]);
> +	s0[0] = 0x5555; TEST(s0[0]);
> +
> +	/* from int */
> +	i0[0] = -2; TEST(i0[0]);
> +	i0[0] = 0xfffffffe; TEST(i0[0]);
> +	i0[0] = 2; TEST(i0[0]);
> +	i0[0] = 0x55555555; TEST(i0[0]);
> +
> +	/* from long long */
> +	l0[0] = -2; TEST(l0[0]);
> +	l0[0] = 0xfffffffffffffffe; TEST(l0[0]);
> +	l0[0] = 2; TEST(l0[0]);
> +	l0[0] = 0x5555555555555555; TEST(l0[0]);
> +
> +	/* from unsigned char */
> +	C0[0] = -2; TEST(C0[0]);
> +	C0[0] = 0xfe; TEST(C0[0]);
> +	C0[0] = 2; TEST(C0[0]);
> +	C0[0] = 0x55; TEST(C0[0]);
> +
> +	/* from unsigned short */
> +	S0[0] = -2; TEST(S0[0]);
> +	S0[0] = 0xfffe; TEST(S0[0]);
> +	S0[0] = 2; TEST(S0[0]);
> +	S0[0] = 0x5555; TEST(S0[0]);
> +
> +	/* from unsigned int */
> +	I0[0] = -2; TEST(I0[0]);
> +	I0[0] = 0xfffffffe; TEST(I0[0]);
> +	I0[0] = 2; TEST(I0[0]);
> +	I0[0] = 0x55555555; TEST(I0[0]);
> +
> +	/* from unsigned long long */
> +	L0[0] = -2; TEST(L0[0]);
> +	L0[0] = 0xfffffffffffffffe; TEST(L0[0]);
> +	L0[0] = 2; TEST(L0[0]);
> +	L0[0] = 0x5555555555555555; TEST(L0[0]);
> +
> +	/* from other constant expressions */
> +	TEST((signed char)(-1));
> +	TEST((short)(-1));
> +	TEST((int)(-1));
> +	TEST((long long)(-1));
> +	TEST((unsigned char)(-1));
> +	TEST((unsigned short)(-1));
> +	TEST((unsigned int)(-1));
> +	TEST((unsigned long long)(-1));
> +
> +	TEST((long long)(signed char)(-1));
> +	TEST((long long)(short)(-1));
> +	TEST((long long)(int)(-1));
> +	TEST((long long)(long long)(-1));
> +	TEST((long long)(unsigned char)(-1));
> +	TEST((long long)(unsigned short)(-1));
> +	TEST((long long)(unsigned int)(-1));
> +	TEST((long long)(unsigned long long)(-1));
> +
> +	/* from other expressions */
> +	l0[0] = -1;
> +	TEST((signed char)l0[0]);
> +	TEST((short)l0[0]);
> +	TEST((int)l0[0]);
> +	TEST((long long)l0[0]);
> +	TEST((unsigned char)l0[0]);
> +	TEST((unsigned short)l0[0]);
> +	TEST((unsigned int)l0[0]);
> +	TEST((unsigned long long)l0[0]);
> +
> +	TEST((long long)(signed char)l0[0]);
> +	TEST((long long)(short)l0[0]);
> +	TEST((long long)(int)l0[0]);
> +	TEST((long long)(long long)l0[0]);
> +	TEST((long long)(unsigned char)l0[0]);
> +	TEST((long long)(unsigned short)l0[0]);
> +	TEST((long long)(unsigned int)l0[0]);
> +	TEST((long long)(unsigned long long)l0[0]);
> +
> +	exit (0);
> +}
> diff --git a/test/unittest/arithmetic/tst.cast-exp-assoc.r b/test/unittest/arithmetic/tst.cast-exp-assoc.r
> new file mode 100644
> index 00000000..c2601193
> --- /dev/null
> +++ b/test/unittest/arithmetic/tst.cast-exp-assoc.r
> @@ -0,0 +1,75 @@
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 4294967294 254 65534 4294967294 4294967294
> +-2 -2 65534 65534 254 65534 65534 65534
> +-2 254 254 254 254 254 254 254
> +2 2 2 2 2 2 2 2
> +85 85 85 85 85 85 85 85
> +85 21845 21845 21845 85 21845 21845 21845
> +85 21845 1431655765 1431655765 85 21845 1431655765 1431655765
> +85 21845 1431655765 6148914691236517205 85 21845 1431655765 6148914691236517205
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 85 85 85 85 85 85 85
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 21845 21845 21845 85 21845 21845 21845
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 21845 1431655765 1431655765 85 21845 1431655765 1431655765
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 21845 1431655765 6148914691236517205 85 21845 1431655765 6148914691236517205
> +-2 254 254 254 254 254 254 254
> +-2 254 254 254 254 254 254 254
> +2 2 2 2 2 2 2 2
> +85 85 85 85 85 85 85 85
> +-2 -2 65534 65534 254 65534 65534 65534
> +-2 -2 65534 65534 254 65534 65534 65534
> +2 2 2 2 2 2 2 2
> +85 21845 21845 21845 85 21845 21845 21845
> +-2 -2 -2 4294967294 254 65534 4294967294 4294967294
> +-2 -2 -2 4294967294 254 65534 4294967294 4294967294
> +2 2 2 2 2 2 2 2
> +85 21845 1431655765 1431655765 85 21845 1431655765 1431655765
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 21845 1431655765 6148914691236517205 85 21845 1431655765 6148914691236517205
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 255 255 255 255 255 255 255
> +-1 -1 65535 65535 255 65535 65535 65535
> +-1 -1 -1 4294967295 255 65535 4294967295 4294967295
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 255 255 255 255 255 255 255
> +-1 -1 65535 65535 255 65535 65535 65535
> +-1 -1 -1 4294967295 255 65535 4294967295 4294967295
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 255 255 255 255 255 255 255
> +-1 -1 65535 65535 255 65535 65535 65535
> +-1 -1 -1 4294967295 255 65535 4294967295 4294967295
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 255 255 255 255 255 255 255
> +-1 -1 65535 65535 255 65535 65535 65535
> +-1 -1 -1 4294967295 255 65535 4294967295 4294967295
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +
> diff --git a/test/unittest/arithmetic/tst.cast-exp-tvar.d b/test/unittest/arithmetic/tst.cast-exp-tvar.d
> new file mode 100644
> index 00000000..9bd62ae5
> --- /dev/null
> +++ b/test/unittest/arithmetic/tst.cast-exp-tvar.d
> @@ -0,0 +1,140 @@
> +/*
> + * Oracle Linux DTrace.
> + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
> + * Licensed under the Universal Permissive License v 1.0 as shown at
> + * http://oss.oracle.com/licenses/upl.
> + */
> +
> +/*
> + * ASSERTION:  Integers are typecast correctly (explicit)
> + *	       when using thread-local variables.
> + *
> + * SECTION: Types, Operators, and Expressions/Arithmetic Operators
> + */
> +/* @@runtest-opts: -qC */
> +
> +self signed char c, c0;
> +self short s, s0;
> +self int i, i0;
> +self long long l, l0;
> +self unsigned char C, C0;
> +self unsigned short S, S0;
> +self unsigned int I, I0;
> +self unsigned long long L, L0;
> +
> +#define FMT "%d %d %d %d %d %d %d %d\n"
> +
> +#define TEST(x) \
> +	self->c = (signed char)(x); \
> +	self->s = (short)(x); \
> +	self->i = (int)(x); \
> +	self->l = (long long)(x); \
> +	self->C = (unsigned char)(x); \
> +	self->S = (unsigned short)(x); \
> +	self->I = (unsigned int)(x); \
> +	self->L = (unsigned long long)(x); \
> +	printf(FMT, self->c, self->s, self->i, self->l, self->C, self->S, self->I, self->L)
> +
> +BEGIN
> +{
> +	/* from scalar */
> +	TEST(-2);
> +	TEST(0xfffffffffffffffe);
> +	TEST(0xfffffffe);
> +	TEST(0xfffe);
> +	TEST(0xfe);
> +	TEST(2);
> +	TEST(0x55);
> +	TEST(0x5555);
> +	TEST(0x55555555);
> +	TEST(0x5555555555555555);
> +
> +	/* from signed char */
> +	self->c0 = -2; TEST(self->c0);
> +	self->c0 = 0xfe; TEST(self->c0);
> +	self->c0 = 2; TEST(self->c0);
> +	self->c0 = 0x55; TEST(self->c0);
> +
> +	/* from short */
> +	self->s0 = -2; TEST(self->s0);
> +	self->s0 = 0xfffe; TEST(self->s0);
> +	self->s0 = 2; TEST(self->s0);
> +	self->s0 = 0x5555; TEST(self->s0);
> +
> +	/* from int */
> +	self->i0 = -2; TEST(self->i0);
> +	self->i0 = 0xfffffffe; TEST(self->i0);
> +	self->i0 = 2; TEST(self->i0);
> +	self->i0 = 0x55555555; TEST(self->i0);
> +
> +	/* from long long */
> +	self->l0 = -2; TEST(self->l0);
> +	self->l0 = 0xfffffffffffffffe; TEST(self->l0);
> +	self->l0 = 2; TEST(self->l0);
> +	self->l0 = 0x5555555555555555; TEST(self->l0);
> +
> +	/* from unsigned char */
> +	self->C0 = -2; TEST(self->C0);
> +	self->C0 = 0xfe; TEST(self->C0);
> +	self->C0 = 2; TEST(self->C0);
> +	self->C0 = 0x55; TEST(self->C0);
> +
> +	/* from unsigned short */
> +	self->S0 = -2; TEST(self->S0);
> +	self->S0 = 0xfffe; TEST(self->S0);
> +	self->S0 = 2; TEST(self->S0);
> +	self->S0 = 0x5555; TEST(self->S0);
> +
> +	/* from unsigned int */
> +	self->I0 = -2; TEST(self->I0);
> +	self->I0 = 0xfffffffe; TEST(self->I0);
> +	self->I0 = 2; TEST(self->I0);
> +	self->I0 = 0x55555555; TEST(self->I0);
> +
> +	/* from unsigned long long */
> +	self->L0 = -2; TEST(self->L0);
> +	self->L0 = 0xfffffffffffffffe; TEST(self->L0);
> +	self->L0 = 2; TEST(self->L0);
> +	self->L0 = 0x5555555555555555; TEST(self->L0);
> +
> +	/* from other constant expressions */
> +	TEST((signed char)(-1));
> +	TEST((short)(-1));
> +	TEST((int)(-1));
> +	TEST((long long)(-1));
> +	TEST((unsigned char)(-1));
> +	TEST((unsigned short)(-1));
> +	TEST((unsigned int)(-1));
> +	TEST((unsigned long long)(-1));
> +
> +	TEST((long long)(signed char)(-1));
> +	TEST((long long)(short)(-1));
> +	TEST((long long)(int)(-1));
> +	TEST((long long)(long long)(-1));
> +	TEST((long long)(unsigned char)(-1));
> +	TEST((long long)(unsigned short)(-1));
> +	TEST((long long)(unsigned int)(-1));
> +	TEST((long long)(unsigned long long)(-1));
> +
> +	/* from other expressions */
> +	self->l0 = -1;
> +	TEST((signed char)self->l0);
> +	TEST((short)self->l0);
> +	TEST((int)self->l0);
> +	TEST((long long)self->l0);
> +	TEST((unsigned char)self->l0);
> +	TEST((unsigned short)self->l0);
> +	TEST((unsigned int)self->l0);
> +	TEST((unsigned long long)self->l0);
> +
> +	TEST((long long)(signed char)self->l0);
> +	TEST((long long)(short)self->l0);
> +	TEST((long long)(int)self->l0);
> +	TEST((long long)(long long)self->l0);
> +	TEST((long long)(unsigned char)self->l0);
> +	TEST((long long)(unsigned short)self->l0);
> +	TEST((long long)(unsigned int)self->l0);
> +	TEST((long long)(unsigned long long)self->l0);
> +
> +	exit (0);
> +}
> diff --git a/test/unittest/arithmetic/tst.cast-exp-tvar.r b/test/unittest/arithmetic/tst.cast-exp-tvar.r
> new file mode 100644
> index 00000000..c2601193
> --- /dev/null
> +++ b/test/unittest/arithmetic/tst.cast-exp-tvar.r
> @@ -0,0 +1,75 @@
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 4294967294 254 65534 4294967294 4294967294
> +-2 -2 65534 65534 254 65534 65534 65534
> +-2 254 254 254 254 254 254 254
> +2 2 2 2 2 2 2 2
> +85 85 85 85 85 85 85 85
> +85 21845 21845 21845 85 21845 21845 21845
> +85 21845 1431655765 1431655765 85 21845 1431655765 1431655765
> +85 21845 1431655765 6148914691236517205 85 21845 1431655765 6148914691236517205
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 85 85 85 85 85 85 85
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 21845 21845 21845 85 21845 21845 21845
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 21845 1431655765 1431655765 85 21845 1431655765 1431655765
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 21845 1431655765 6148914691236517205 85 21845 1431655765 6148914691236517205
> +-2 254 254 254 254 254 254 254
> +-2 254 254 254 254 254 254 254
> +2 2 2 2 2 2 2 2
> +85 85 85 85 85 85 85 85
> +-2 -2 65534 65534 254 65534 65534 65534
> +-2 -2 65534 65534 254 65534 65534 65534
> +2 2 2 2 2 2 2 2
> +85 21845 21845 21845 85 21845 21845 21845
> +-2 -2 -2 4294967294 254 65534 4294967294 4294967294
> +-2 -2 -2 4294967294 254 65534 4294967294 4294967294
> +2 2 2 2 2 2 2 2
> +85 21845 1431655765 1431655765 85 21845 1431655765 1431655765
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +-2 -2 -2 -2 254 65534 4294967294 18446744073709551614
> +2 2 2 2 2 2 2 2
> +85 21845 1431655765 6148914691236517205 85 21845 1431655765 6148914691236517205
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 255 255 255 255 255 255 255
> +-1 -1 65535 65535 255 65535 65535 65535
> +-1 -1 -1 4294967295 255 65535 4294967295 4294967295
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 255 255 255 255 255 255 255
> +-1 -1 65535 65535 255 65535 65535 65535
> +-1 -1 -1 4294967295 255 65535 4294967295 4294967295
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 255 255 255 255 255 255 255
> +-1 -1 65535 65535 255 65535 65535 65535
> +-1 -1 -1 4294967295 255 65535 4294967295 4294967295
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +-1 255 255 255 255 255 255 255
> +-1 -1 65535 65535 255 65535 65535 65535
> +-1 -1 -1 4294967295 255 65535 4294967295 4294967295
> +-1 -1 -1 -1 255 65535 4294967295 18446744073709551615
> +
> -- 
> 2.18.4
> 
> 
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list