pebble/tests/fw/test_pebble_process_md.c
2025-01-27 11:38:16 -08:00

109 lines
3.9 KiB
C

/*
* Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "clar.h"
#include "process_management/pebble_process_md.h"
void test_pebble_process_md__uninitialized(void) {
PebbleProcessMdFlash md = {
};
const PlatformType type = process_metadata_get_app_sdk_platform(&md.common);
cl_assert_equal_i(type, PBL_PLATFORM_TYPE_CURRENT);
}
void test_pebble_process_md__uninitialized_unprivileged(void) {
PebbleProcessMdFlash md = {
.common.is_unprivileged = true,
};
const PlatformType type = process_metadata_get_app_sdk_platform(&md.common);
cl_assert_equal_i(type, PBL_PLATFORM_TYPE_CURRENT);
}
#if PBL_ROUND
#define LEGACY_PLATFORM_PRIOR_4 PlatformTypeChalk
#define LEGACY_PLATFORM_AFTER_4 PlatformTypeChalk
#elif PBL_RECT
#if PBL_BW
#define LEGACY_PLATFORM_PRIOR_4 PlatformTypeAplite
#define LEGACY_PLATFORM_AFTER_4 PlatformTypeDiorite
#elif PBL_COLOR
#define LEGACY_PLATFORM_PRIOR_4 PlatformTypeBasalt
#define LEGACY_PLATFORM_AFTER_4 PlatformTypeBasalt
#endif
#endif
void test_pebble_process_md__SDK2(void) {
PebbleProcessMdFlash md = {
.common.process_storage = ProcessStorageFlash,
.common.is_unprivileged = true,
.common.stored_sdk_platform = 0,
.sdk_version.major = PROCESS_INFO_FIRST_2X_SDK_VERSION_MAJOR,
.sdk_version.minor = PROCESS_INFO_FIRST_2X_SDK_VERSION_MINOR,
};
const PlatformType type = process_metadata_get_app_sdk_platform(&md.common);
cl_assert_equal_i(type, PlatformTypeAplite);
}
void test_pebble_process_md__SDK3(void) {
PebbleProcessMdFlash md = {
.common.process_storage = ProcessStorageFlash,
.common.is_unprivileged = true,
.common.stored_sdk_platform = 0,
.sdk_version.major = PROCESS_INFO_FIRST_3X_SDK_VERSION_MAJOR,
.sdk_version.minor = PROCESS_INFO_FIRST_3X_SDK_VERSION_MINOR,
};
const PlatformType type = process_metadata_get_app_sdk_platform(&md.common);
cl_assert_equal_i(type, LEGACY_PLATFORM_PRIOR_4);
}
void test_pebble_process_md__SDK4(void) {
PebbleProcessMdFlash md = {
.common.process_storage = ProcessStorageFlash,
.common.is_unprivileged = true,
.common.stored_sdk_platform = 0,
.sdk_version.major = PROCESS_INFO_FIRST_4X_SDK_VERSION_MAJOR,
.sdk_version.minor = PROCESS_INFO_FIRST_4X_SDK_VERSION_MINOR,
};
const PlatformType type = process_metadata_get_app_sdk_platform(&md.common);
cl_assert_equal_i(type, LEGACY_PLATFORM_AFTER_4);
}
void test_pebble_process_md__SDK4_stored_but_ignored(void) {
// stored platform will be ignored unless SDK version is >= 4.2
PebbleProcessMdFlash md = {
.common.process_storage = ProcessStorageFlash,
.common.is_unprivileged = true,
.common.stored_sdk_platform = PROCESS_INFO_PLATFORM_CHALK,
.sdk_version.major = PROCESS_INFO_FIRST_4X_SDK_VERSION_MAJOR,
.sdk_version.minor = PROCESS_INFO_FIRST_4X_SDK_VERSION_MINOR,
};
const PlatformType type = process_metadata_get_app_sdk_platform(&md.common);
cl_assert_equal_i(type, LEGACY_PLATFORM_AFTER_4);
}
void test_pebble_process_md__SDK4_2(void) {
PebbleProcessMdFlash md = {
.common.process_storage = ProcessStorageFlash,
.common.is_unprivileged = true,
.common.stored_sdk_platform = PROCESS_INFO_PLATFORM_BASALT,
.sdk_version.major = PROCESS_INFO_FIRST_4_2_X_SDK_VERSION_MAJOR,
.sdk_version.minor = PROCESS_INFO_FIRST_4_2_X_SDK_VERSION_MINOR,
};
const PlatformType type = process_metadata_get_app_sdk_platform(&md.common);
cl_assert_equal_i(type, PlatformTypeBasalt);
}