blob: 9fc1dab5b00e80e4aa45df9ba5b2120450221b90 [file] [log] [blame]
Randall Spanglera3454fc2011-08-23 14:41:18 -07001/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file.
4 *
5 * Tests for utility functions.
6 */
7
8#include <stdio.h>
9#include <stdlib.h>
10#include <string.h>
11
12#define _STUB_IMPLEMENTATION_ /* So we can use memset() ourselves */
13
14#include "test_common.h"
15#include "utility.h"
16#include "vboot_common.h"
17
18
19/* Test Memset */
20static void MemsetTest(void) {
21 char dest[128];
22 char want[128];
23
24 memset(want, 0, 128);
25 memset(dest, 0, 128);
26
27 /* Simple fill */
28 memset(want, 123, 5);
Randall Spangler1f5d53f2011-08-24 12:07:43 -070029 TEST_PTR_EQ(dest, Memset(dest, 123, 5), "Memset() returns dest");
Randall Spanglera3454fc2011-08-23 14:41:18 -070030 TEST_EQ(0, memcmp(dest, want, 128), "Memset()");
31
32 /* Filling length 0 does nothing */
33 Memset(dest, 42, 0);
34 TEST_EQ(0, memcmp(dest, want, 128), "Memset() size=0");
35}
36
37
38/* Test SafeMemcmp */
39static void SafeMemcmpTest(void) {
40 /* Zero-length strings are equal */
41 TEST_EQ(0, SafeMemcmp("APPLE", "TIGER", 0), "SafeMemcmp() size=0");
42
43 /* Test equal arrays */
44 TEST_EQ(0, SafeMemcmp("clonebob", "clonebob", 8), "SafeMemcmp() equal");
45 /* Inequality past end of array doesn't affect result */
46 TEST_EQ(0, SafeMemcmp("clonebob", "clonedan", 5), "SafeMemcmp() equal2");
47
48 TEST_EQ(1, SafeMemcmp("APPLE", "TIGER", 5), "SafeMemcmp() unequal");
49 TEST_EQ(1, SafeMemcmp("APPLE", "APPLe", 5), "SafeMemcmp() unequal 2");
50}
51
52
53/* disable MSVC warnings on unused arguments */
54__pragma(warning (disable: 4100))
55
56int main(int argc, char* argv[]) {
57 int error_code = 0;
58
59 MemsetTest();
60 SafeMemcmpTest();
61
62 if (!gTestSuccess)
63 error_code = 255;
64
65 return error_code;
66}