vppinfra: widen the scope of test_vector_funcs

Location changed and binary renamed to test_infra
Also it is built by default.

Type: improvement
Change-Id: I27cd97f274501ceb7a01213e2bc9676cea00f39c
Signed-off-by: Damjan Marion <damarion@cisco.com>
diff --git a/src/vppinfra/test/array_mask.c b/src/vppinfra/test/array_mask.c
new file mode 100644
index 0000000..c3b475c
--- /dev/null
+++ b/src/vppinfra/test/array_mask.c
@@ -0,0 +1,124 @@
+/* SPDX-License-Identifier: Apache-2.0
+ * Copyright(c) 2021 Cisco Systems, Inc.
+ */
+
+#include <vppinfra/format.h>
+#include <vppinfra/test/test.h>
+#include <vppinfra/vector/array_mask.h>
+
+__test_funct_fn void
+clib_array_mask_u32_wrapper (u32 *src, u32 mask, u32 n_elts)
+{
+  clib_array_mask_u32 (src, mask, n_elts);
+}
+
+typedef struct
+{
+  u32 mask;
+  u32 expected[256];
+} array_mask_test_t;
+
+static array_mask_test_t tests[] = {
+  /* mask values 0x1, output array of alternating 0 1 0 1 .. */
+  { .mask = 1,
+    .expected = { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+		  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 } },
+  /* mask values 0xFFFFFFFF, output array of 0, 1, 2, .., 255 */
+  { .mask = ~0U,
+    .expected = { 0,   1,   2,	 3,   4,   5,	6,   7,	  8,   9,   10,	 11,
+		  12,  13,  14,	 15,  16,  17,	18,  19,  20,  21,  22,	 23,
+		  24,  25,  26,	 27,  28,  29,	30,  31,  32,  33,  34,	 35,
+		  36,  37,  38,	 39,  40,  41,	42,  43,  44,  45,  46,	 47,
+		  48,  49,  50,	 51,  52,  53,	54,  55,  56,  57,  58,	 59,
+		  60,  61,  62,	 63,  64,  65,	66,  67,  68,  69,  70,	 71,
+		  72,  73,  74,	 75,  76,  77,	78,  79,  80,  81,  82,	 83,
+		  84,  85,  86,	 87,  88,  89,	90,  91,  92,  93,  94,	 95,
+		  96,  97,  98,	 99,  100, 101, 102, 103, 104, 105, 106, 107,
+		  108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+		  120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+		  132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+		  144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+		  156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+		  168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+		  180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+		  192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+		  204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+		  216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+		  228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+		  240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+		  252, 253, 254, 255 } },
+  /* mask values 0xF, output array of 0, .., 15, 0, .., 15, 0, .., 15 */
+  { .mask = 15,
+    .expected = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+		  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } },
+  /* mask values 0x1, output array of 1, 0, 1, 0,.. */
+  { .mask = 1, .expected = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 } },
+};
+
+static clib_error_t *
+test_clib_array_mask_u32 (clib_error_t *err)
+{
+  u32 i, j;
+  for (i = 0; i < ARRAY_LEN (tests) - 1; i++)
+    {
+      u32 src[256];
+      for (j = 0; j < ARRAY_LEN (src); j++)
+	src[j] = j;
+
+      array_mask_test_t *t = tests + i;
+      clib_array_mask_u32_wrapper (src, t->mask, ARRAY_LEN (src));
+      for (j = 0; j < ARRAY_LEN (src); j++)
+	{
+	  if (src[j] != t->expected[j])
+	    return clib_error_return (err,
+				      "testcase %u failed at "
+				      "(src[%u] = 0x%x, expected 0x%x)",
+				      i, j, src[j], t->expected[j]);
+	}
+    }
+
+  u32 src[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+  array_mask_test_t *t = tests + i;
+
+  clib_array_mask_u32_wrapper (src, t->mask, ARRAY_LEN (src));
+  for (j = 0; j < ARRAY_LEN (src); j++)
+    {
+      if (src[j] != t->expected[j])
+	return clib_error_return (err,
+				  "testcase %u failed at "
+				  "(src[%u] = 0x%x, expected 0x%x)",
+				  i, j, src[j], t->expected[j]);
+    }
+
+  return err;
+}
+
+REGISTER_TEST (clib_array_mask_u32) = {
+  .name = "clib_array_mask_u32",
+  .fn = test_clib_array_mask_u32,
+};