17987b83553804156aeca61b4c111c2b983c4c551Sergio Giro/* 27987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * Copyright (C) 2015 The Android Open Source Project 37987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * 47987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * Licensed under the Apache License, Version 2.0 (the "License"); 57987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * you may not use this file except in compliance with the License. 67987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * You may obtain a copy of the License at 77987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * 87987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * http://www.apache.org/licenses/LICENSE-2.0 97987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * 107987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * Unless required by applicable law or agreed to in writing, software 117987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * distributed under the License is distributed on an "AS IS" BASIS, 127987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * See the License for the specific language governing permissions and 147987b83553804156aeca61b4c111c2b983c4c551Sergio Giro * limitations under the License. 157987b83553804156aeca61b4c111c2b983c4c551Sergio Giro */ 167987b83553804156aeca61b4c111c2b983c4c551Sergio Giro 17d95e47f13633feac9adb4ec5ce29392cfb628591Sergio Giro#define __STDC_LIMIT_MACROS 187987b83553804156aeca61b4c111c2b983c4c551Sergio Giro 197987b83553804156aeca61b4c111c2b983c4c551Sergio Giro#include <gtest/gtest.h> 207987b83553804156aeca61b4c111c2b983c4c551Sergio Giro 217987b83553804156aeca61b4c111c2b983c4c551Sergio Giro#include <memory> 227987b83553804156aeca61b4c111c2b983c4c551Sergio Giro#include <stdint.h> 237987b83553804156aeca61b4c111c2b983c4c551Sergio Giro 248dba9a7bf1322f4cf60509131f13c8eac657ae63Sergio Giro#include "SharedBuffer.h" 258dba9a7bf1322f4cf60509131f13c8eac657ae63Sergio Giro 267987b83553804156aeca61b4c111c2b983c4c551Sergio GiroTEST(SharedBufferTest, TestAlloc) { 277987b83553804156aeca61b4c111c2b983c4c551Sergio Giro EXPECT_DEATH(android::SharedBuffer::alloc(SIZE_MAX), ""); 287987b83553804156aeca61b4c111c2b983c4c551Sergio Giro EXPECT_DEATH(android::SharedBuffer::alloc(SIZE_MAX - sizeof(android::SharedBuffer)), ""); 297987b83553804156aeca61b4c111c2b983c4c551Sergio Giro 307987b83553804156aeca61b4c111c2b983c4c551Sergio Giro // Make sure we don't die here. 317987b83553804156aeca61b4c111c2b983c4c551Sergio Giro // Check that null is returned, as we are asking for the whole address space. 327987b83553804156aeca61b4c111c2b983c4c551Sergio Giro android::SharedBuffer* buf = 337987b83553804156aeca61b4c111c2b983c4c551Sergio Giro android::SharedBuffer::alloc(SIZE_MAX - sizeof(android::SharedBuffer) - 1); 347987b83553804156aeca61b4c111c2b983c4c551Sergio Giro ASSERT_EQ(nullptr, buf); 357987b83553804156aeca61b4c111c2b983c4c551Sergio Giro 367987b83553804156aeca61b4c111c2b983c4c551Sergio Giro buf = android::SharedBuffer::alloc(0); 377987b83553804156aeca61b4c111c2b983c4c551Sergio Giro ASSERT_NE(nullptr, buf); 387987b83553804156aeca61b4c111c2b983c4c551Sergio Giro ASSERT_EQ(0U, buf->size()); 397987b83553804156aeca61b4c111c2b983c4c551Sergio Giro buf->release(); 407987b83553804156aeca61b4c111c2b983c4c551Sergio Giro} 417987b83553804156aeca61b4c111c2b983c4c551Sergio Giro 427987b83553804156aeca61b4c111c2b983c4c551Sergio GiroTEST(SharedBufferTest, TestEditResize) { 437987b83553804156aeca61b4c111c2b983c4c551Sergio Giro android::SharedBuffer* buf = android::SharedBuffer::alloc(10); 447987b83553804156aeca61b4c111c2b983c4c551Sergio Giro EXPECT_DEATH(buf->editResize(SIZE_MAX - sizeof(android::SharedBuffer)), ""); 457987b83553804156aeca61b4c111c2b983c4c551Sergio Giro buf = android::SharedBuffer::alloc(10); 467987b83553804156aeca61b4c111c2b983c4c551Sergio Giro EXPECT_DEATH(buf->editResize(SIZE_MAX), ""); 477987b83553804156aeca61b4c111c2b983c4c551Sergio Giro 487987b83553804156aeca61b4c111c2b983c4c551Sergio Giro buf = android::SharedBuffer::alloc(10); 497987b83553804156aeca61b4c111c2b983c4c551Sergio Giro // Make sure we don't die here. 507987b83553804156aeca61b4c111c2b983c4c551Sergio Giro // Check that null is returned, as we are asking for the whole address space. 517987b83553804156aeca61b4c111c2b983c4c551Sergio Giro buf = buf->editResize(SIZE_MAX - sizeof(android::SharedBuffer) - 1); 527987b83553804156aeca61b4c111c2b983c4c551Sergio Giro ASSERT_EQ(nullptr, buf); 537987b83553804156aeca61b4c111c2b983c4c551Sergio Giro 547987b83553804156aeca61b4c111c2b983c4c551Sergio Giro buf = android::SharedBuffer::alloc(10); 557987b83553804156aeca61b4c111c2b983c4c551Sergio Giro buf = buf->editResize(0); 567987b83553804156aeca61b4c111c2b983c4c551Sergio Giro ASSERT_EQ(0U, buf->size()); 577987b83553804156aeca61b4c111c2b983c4c551Sergio Giro buf->release(); 587987b83553804156aeca61b4c111c2b983c4c551Sergio Giro} 59