/* * 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); }