| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "flutter/fml/mapping.h" | |
| #include "flutter/testing/testing.h" | |
| namespace fml { | |
| TEST(MallocMapping, EmptyContructor) { | |
| MallocMapping mapping; | |
| ASSERT_EQ(nullptr, mapping.GetMapping()); | |
| ASSERT_EQ(0u, mapping.GetSize()); | |
| } | |
| TEST(MallocMapping, NotEmptyContructor) { | |
| size_t length = 10; | |
| MallocMapping mapping(reinterpret_cast<uint8_t*>(malloc(length)), length); | |
| ASSERT_NE(nullptr, mapping.GetMapping()); | |
| ASSERT_EQ(length, mapping.GetSize()); | |
| } | |
| TEST(MallocMapping, MoveConstructor) { | |
| size_t length = 10; | |
| MallocMapping mapping(reinterpret_cast<uint8_t*>(malloc(length)), length); | |
| MallocMapping moved = std::move(mapping); | |
| ASSERT_EQ(nullptr, | |
| mapping.GetMapping()); // NOLINT(clang-analyzer-cplusplus.Move, | |
| // bugprone-use-after-move) | |
| ASSERT_EQ(0u, mapping.GetSize()); | |
| ASSERT_NE(nullptr, moved.GetMapping()); | |
| ASSERT_EQ(length, moved.GetSize()); | |
| } | |
| TEST(MallocMapping, Copy) { | |
| size_t length = 10; | |
| MallocMapping mapping(reinterpret_cast<uint8_t*>(malloc(length)), length); | |
| memset(const_cast<uint8_t*>(mapping.GetMapping()), 0xac, mapping.GetSize()); | |
| MallocMapping copied = | |
| MallocMapping::Copy(mapping.GetMapping(), mapping.GetSize()); | |
| ASSERT_NE(mapping.GetMapping(), copied.GetMapping()); | |
| ASSERT_EQ(mapping.GetSize(), copied.GetSize()); | |
| ASSERT_EQ( | |
| 0, memcmp(mapping.GetMapping(), copied.GetMapping(), mapping.GetSize())); | |
| } | |
| TEST(MallocMapping, Release) { | |
| size_t length = 10; | |
| MallocMapping mapping(reinterpret_cast<uint8_t*>(malloc(length)), length); | |
| free(const_cast<uint8_t*>(mapping.Release())); | |
| ASSERT_EQ(nullptr, mapping.GetMapping()); | |
| ASSERT_EQ(0u, mapping.GetSize()); | |
| } | |
| TEST(MallocMapping, IsDontNeedSafe) { | |
| size_t length = 10; | |
| MallocMapping mapping(reinterpret_cast<uint8_t*>(malloc(length)), length); | |
| ASSERT_NE(nullptr, mapping.GetMapping()); | |
| ASSERT_FALSE(mapping.IsDontNeedSafe()); | |
| } | |
| TEST(MallocMapping, CopySizeZero) { | |
| char ch = 'a'; | |
| MallocMapping mapping = MallocMapping::Copy(&ch, &ch); | |
| ASSERT_EQ(0u, mapping.GetSize()); | |
| } | |
| } // namespace fml |