summaryrefslogtreecommitdiff
path: root/tests/vb2_misc_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vb2_misc_tests.c')
-rw-r--r--tests/vb2_misc_tests.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/vb2_misc_tests.c b/tests/vb2_misc_tests.c
new file mode 100644
index 00000000..64d00cac
--- /dev/null
+++ b/tests/vb2_misc_tests.c
@@ -0,0 +1,54 @@
+/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * Tests for misc library
+ */
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "test_common.h"
+#include "vboot_common.h"
+
+#include "2api.h"
+#include "2common.h"
+#include "2misc.h"
+
+static void misc_test(void)
+{
+ uint8_t workbuf[VB2_WORKBUF_RECOMMENDED_SIZE];
+
+ struct vb2_context c = {
+ .workbuf = workbuf,
+ .workbuf_size = sizeof(workbuf),
+ };
+
+ TEST_EQ(vb2_init_context(&c), 0, "Init context good");
+ TEST_EQ(c.workbuf_used, sizeof(struct vb2_shared_data),
+ "Init vbsd");
+
+ /* Don't re-init if used is non-zero */
+ c.workbuf_used = 200;
+ TEST_EQ(vb2_init_context(&c), 0, "Re-init context good");
+ TEST_EQ(c.workbuf_used, 200, "Didn't re-init");
+
+ /* Handle workbuf errors */
+ c.workbuf_used = 0;
+ c.workbuf_size = sizeof(struct vb2_shared_data) - 1;
+ TEST_NEQ(vb2_init_context(&c), 0, "Init too small");
+ c.workbuf_size = sizeof(workbuf);
+
+ /* Handle workbuf unaligned */
+ c.workbuf++;
+ TEST_NEQ(vb2_init_context(&c), 0, "Init unaligned");
+}
+
+int main(int argc, char* argv[])
+{
+ misc_test();
+
+ return gTestSuccess ? 0 : 255;
+}