1*3cab2bb3Spatrick //===-- bytemap_test.cpp ----------------------------------------*- C++ -*-===// 2*3cab2bb3Spatrick // 3*3cab2bb3Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*3cab2bb3Spatrick // See https://llvm.org/LICENSE.txt for license information. 5*3cab2bb3Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*3cab2bb3Spatrick // 7*3cab2bb3Spatrick //===----------------------------------------------------------------------===// 8*3cab2bb3Spatrick 9*3cab2bb3Spatrick #include "tests/scudo_unit_test.h" 10*3cab2bb3Spatrick 11*3cab2bb3Spatrick #include "bytemap.h" 12*3cab2bb3Spatrick 13*3cab2bb3Spatrick #include <pthread.h> 14*3cab2bb3Spatrick #include <string.h> 15*3cab2bb3Spatrick testMap(T & Map,scudo::uptr Size)16*3cab2bb3Spatricktemplate <typename T> void testMap(T &Map, scudo::uptr Size) { 17*3cab2bb3Spatrick Map.init(); 18*3cab2bb3Spatrick for (scudo::uptr I = 0; I < Size; I += 7) 19*3cab2bb3Spatrick Map.set(I, (I % 100) + 1); 20*3cab2bb3Spatrick for (scudo::uptr J = 0; J < Size; J++) { 21*3cab2bb3Spatrick if (J % 7) 22*3cab2bb3Spatrick EXPECT_EQ(Map[J], 0); 23*3cab2bb3Spatrick else 24*3cab2bb3Spatrick EXPECT_EQ(Map[J], (J % 100) + 1); 25*3cab2bb3Spatrick } 26*3cab2bb3Spatrick } 27*3cab2bb3Spatrick TEST(ScudoByteMapTest,FlatByteMap)28*3cab2bb3SpatrickTEST(ScudoByteMapTest, FlatByteMap) { 29*3cab2bb3Spatrick const scudo::uptr Size = 1U << 10; 30*3cab2bb3Spatrick scudo::FlatByteMap<Size> Map; 31*3cab2bb3Spatrick testMap(Map, Size); 32*3cab2bb3Spatrick Map.unmapTestOnly(); 33*3cab2bb3Spatrick } 34