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

eugene.loh at oracle.com eugene.loh at oracle.com
Tue May 2 03:47:12 UTC 2023


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>
---
 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




More information about the DTrace-devel mailing list