pebble/tests/fw/ui/test_layer_rect.c

111 lines
3.1 KiB
C
Raw Permalink Normal View History

/*
* 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 "applib/ui/layer.h"
#include "applib/ui/layer_private.h"
#include "clar.h"
#include "pebble_asserts.h"
// Stubs
////////////////////////////////////
#include "stubs_app_state.h"
#include "stubs_bitblt.h"
#include "stubs_gbitmap.h"
#include "stubs_heap.h"
#include "stubs_logging.h"
#include "stubs_passert.h"
#include "stubs_pbl_malloc.h"
#include "stubs_pebble_tasks.h"
#include "stubs_resources.h"
#include "stubs_syscalls.h"
#include "stubs_unobstructed_area.h"
GDrawState graphics_context_get_drawing_state(GContext *ctx) {
return (GDrawState) { 0 };
}
bool graphics_release_frame_buffer(GContext *ctx, GBitmap *buffer) {
return false;
}
void graphics_context_set_drawing_state(GContext *ctx, GDrawState draw_state) {
}
void window_schedule_render(struct Window *window) {
}
static bool s_process_manager_compiled_with_legacy2_sdk;
bool process_manager_compiled_with_legacy2_sdk(void) {
return s_process_manager_compiled_with_legacy2_sdk;
}
// Setup
////////////////////////////////////
void test_layer_rect__initialize(void) {
s_process_manager_compiled_with_legacy2_sdk = false;
}
void test_layer_rect__cleanup(void) {
}
// Tests
////////////////////////////////////
void test_layer_rect__2_x_extend_shrink(void) {
Layer l;
s_process_manager_compiled_with_legacy2_sdk = true;
layer_init(&l, &GRect(10, 20, 30, 40));
cl_assert_equal_grect(l.bounds, GRect(0, 0, 30, 40));
// expands
layer_set_frame(&l, &GRect(10, 20, 300, 400));
cl_assert_equal_grect(l.bounds, GRect(0, 0, 300, 400));
// only expands .h, keeps .w
layer_set_frame(&l, &GRect(10, 20, 200, 500));
cl_assert_equal_grect(l.bounds, GRect(0, 0, 300, 500));
}
void test_layer_rect__3_x_sync_if_applicable(void) {
Layer l;
s_process_manager_compiled_with_legacy2_sdk = false;
layer_init(&l, &GRect(10, 20, 30, 40));
cl_assert_equal_grect(l.bounds, GRect(0, 0, 30, 40));
// expands
layer_set_frame(&l, &GRect(10, 20, 300, 400));
cl_assert_equal_grect(l.bounds, GRect(0, 0, 300, 400));
// keeps size in sync
layer_set_frame(&l, &GRect(10, 20, 200, 500));
cl_assert_equal_grect(l.bounds, GRect(0, 0, 200, 500));
// act as 2.x once bounds.origin is different from (0, 0)
layer_set_bounds(&l, &GRect(1, 1, 200, 500));
layer_set_frame(&l, &GRect(10, 20, 100, 600));
cl_assert_equal_grect(l.bounds, GRect(1, 1, 200, 599));
// act as 2.x once bounds.size isn't same as frame.size
layer_set_bounds(&l, &GRect(0, 0, 150, 600));
layer_set_frame(&l, &GRect(10, 20, 100, 700));
cl_assert_equal_grect(l.bounds, GRect(0, 0, 150, 700));
}