blob: 4185b7a5f27d4195c30ac57a70ee7923e1e9c323 [file] [log] [blame]
Imre Kisa71757b2019-12-17 00:19:40 +01001/*
2 * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include "CppUTest/TestHarness.h"
8
9#define IMAGE_ID0 (0)
10#define IMAGE_ID1 (1)
11
12extern "C" {
13extern unsigned int bl1_fwu_loaded_ids[FWU_MAX_SIMULTANEOUS_IMAGES];
14
15extern int bl1_fwu_add_loaded_id(unsigned int image_id);
16extern int bl1_fwu_remove_loaded_id(unsigned int image_id);
17}
18
19TEST_GROUP(bl1_fwu) {
20 TEST_SETUP() {
21 for (int i = 0; i < FWU_MAX_SIMULTANEOUS_IMAGES; i++) {
22 bl1_fwu_loaded_ids[i] = INVALID_IMAGE_ID;
23 }
24 }
25};
26
27TEST(bl1_fwu, add_one) {
28 LONGS_EQUAL(0, bl1_fwu_add_loaded_id(IMAGE_ID0));
29 UNSIGNED_LONGS_EQUAL(IMAGE_ID0, bl1_fwu_loaded_ids[0]);
30}
31
32TEST(bl1_fwu, add_two_different) {
33 LONGS_EQUAL(0, bl1_fwu_add_loaded_id(IMAGE_ID0));
34 LONGS_EQUAL(0, bl1_fwu_add_loaded_id(IMAGE_ID1));
35 UNSIGNED_LONGS_EQUAL(IMAGE_ID0, bl1_fwu_loaded_ids[0]);
36 UNSIGNED_LONGS_EQUAL(IMAGE_ID1, bl1_fwu_loaded_ids[1]);
37}
38
39TEST(bl1_fwu, add_two_identical) {
40 for (int i = 0; i < 2; i++) {
41 LONGS_EQUAL(0, bl1_fwu_add_loaded_id(IMAGE_ID0));
42 }
43 UNSIGNED_LONGS_EQUAL(IMAGE_ID0, bl1_fwu_loaded_ids[0]);
44 UNSIGNED_LONGS_EQUAL(INVALID_IMAGE_ID, bl1_fwu_loaded_ids[1]);
45}
46
47TEST(bl1_fwu, add_until_overflow) {
48 for (unsigned int i = 0; i < FWU_MAX_SIMULTANEOUS_IMAGES; i++) {
49 LONGS_EQUAL(0, bl1_fwu_add_loaded_id(i));
50 UNSIGNED_LONGS_EQUAL(i, bl1_fwu_loaded_ids[i]);
51 }
52
53 LONGS_EQUAL(1, bl1_fwu_add_loaded_id(FWU_MAX_SIMULTANEOUS_IMAGES));
54}
55
56TEST(bl1_fwu, remove_from_empty_array) {
57 LONGS_EQUAL(1, bl1_fwu_remove_loaded_id(IMAGE_ID0));
58}
59
60TEST(bl1_fwu, add_one_and_remove_one) {
61 LONGS_EQUAL(0, bl1_fwu_add_loaded_id(IMAGE_ID0));
62 LONGS_EQUAL(0, bl1_fwu_remove_loaded_id(IMAGE_ID0));
63 UNSIGNED_LONGS_EQUAL(INVALID_IMAGE_ID, bl1_fwu_loaded_ids[0]);
64}
65
66TEST(bl1_fwu, add_two_and_remove_first) {
67 LONGS_EQUAL(0, bl1_fwu_add_loaded_id(IMAGE_ID0));
68 LONGS_EQUAL(0, bl1_fwu_add_loaded_id(IMAGE_ID1));
69 LONGS_EQUAL(0, bl1_fwu_remove_loaded_id(IMAGE_ID0));
70 UNSIGNED_LONGS_EQUAL(INVALID_IMAGE_ID, bl1_fwu_loaded_ids[0]);
71 UNSIGNED_LONGS_EQUAL(IMAGE_ID1, bl1_fwu_loaded_ids[1]);
72}