6#include "dawn/prog/expression.hxx"
7#include "test_common.hxx"
9#include "dawn/io/sdata.hxx"
10#include "dawn/io/virt.hxx"
17static uint32_t g_cfg_src[] = {EXPR_SRC, 0};
18static uint32_t g_cfg_dst[] = {EXPR_DST, 0};
20static uint32_t g_bin_expr_shl[] = {
21 CProgExpression::objectId(0),
23 CProgExpression::cfgIdIOBind(2),
26 CProgExpression::cfgIdOp(),
27 CProgExpression::OP_SHIFT_LEFT,
31static uint32_t g_bin_expr_const_shl[] = {
32 CProgExpression::objectId(1),
34 CProgExpression::cfgIdIOBind(2),
37 CProgExpression::cfgIdOp(),
38 CProgExpression::OP_CONST_LEFT_SHIFT,
42static uint32_t g_bin_expr_add[] = {
43 CProgExpression::objectId(2),
45 CProgExpression::cfgIdIOBind(2),
48 CProgExpression::cfgIdOp(),
49 CProgExpression::OP_ADD,
53static void test_expression_shift_left()
65 TEST_ASSERT_EQUAL(OK, src.init());
66 TEST_ASSERT_EQUAL(OK, dst.init());
67 TEST_ASSERT_EQUAL(OK, src.initialize(1, 1,
true));
68 TEST_ASSERT_EQUAL(OK, prog.configure());
69 prog.setObjectMapItem(EXPR_SRC, &src);
70 prog.setObjectMapItem(EXPR_DST, &dst);
71 TEST_ASSERT_EQUAL(OK, prog.init());
72 TEST_ASSERT_EQUAL(OK, prog.start());
75 TEST_ASSERT_EQUAL(OK, src.setData(in));
76 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
77 TEST_ASSERT_EQUAL(12, out(0));
80 TEST_ASSERT_EQUAL(OK, src.setData(in));
81 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
82 TEST_ASSERT_EQUAL(0, out(0));
84 TEST_ASSERT_EQUAL(OK, prog.stop());
87static void test_expression_const_left_shift()
99 TEST_ASSERT_EQUAL(OK, src.init());
100 TEST_ASSERT_EQUAL(OK, dst.init());
101 TEST_ASSERT_EQUAL(OK, src.initialize(1, 1,
true));
102 TEST_ASSERT_EQUAL(OK, prog.configure());
103 prog.setObjectMapItem(EXPR_SRC, &src);
104 prog.setObjectMapItem(EXPR_DST, &dst);
105 TEST_ASSERT_EQUAL(OK, prog.init());
106 TEST_ASSERT_EQUAL(OK, prog.start());
109 TEST_ASSERT_EQUAL(OK, src.setData(in));
110 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
111 TEST_ASSERT_EQUAL(1, out(0));
114 TEST_ASSERT_EQUAL(OK, src.setData(in));
115 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
116 TEST_ASSERT_EQUAL(8, out(0));
118 TEST_ASSERT_EQUAL(OK, prog.stop());
121static void test_expression_add()
133 TEST_ASSERT_EQUAL(OK, src.init());
134 TEST_ASSERT_EQUAL(OK, dst.init());
135 TEST_ASSERT_EQUAL(OK, src.initialize(1, 1,
true));
136 TEST_ASSERT_EQUAL(OK, prog.configure());
137 prog.setObjectMapItem(EXPR_SRC, &src);
138 prog.setObjectMapItem(EXPR_DST, &dst);
139 TEST_ASSERT_EQUAL(OK, prog.init());
140 TEST_ASSERT_EQUAL(OK, prog.start());
143 TEST_ASSERT_EQUAL(OK, src.setData(in));
144 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
145 TEST_ASSERT_EQUAL(15, out(0));
147 TEST_ASSERT_EQUAL(OK, prog.stop());
152 int test_prog_expression()
155 DAWN_RUN_TEST(test_expression_shift_left);
156 DAWN_RUN_TEST(test_expression_const_left_shift);
157 DAWN_RUN_TEST(test_expression_add);
Descriptor wrapper for individual object configuration.
Virtual I/O type for user-provided data and callbacks.
Arithmetic expression evaluator on IO values.
Out-of-tree user-extension hooks for Dawn.
@ DTYPE_UINT32
Unsigned 32-bit integer (0 to 4294967295).
Static (compile-time) I/O data buffer (no timestamp).