/
GitCaptain
/
llvm-project
Обзор
Документация
Войти
/
GitCaptain
/
llvm-project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
fix-tests
libc/test/src/string/bzero_test.cpp
49 строк
2 KB
Michael Jones
[libc] apply formatting to tests
22 дек 2021, 21:53
22 дек 2021, 21:53
25226f3
Код
Авторство
О чём код?
//===-- Unittests for bzero -----------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "src/__support/CPP/ArrayRef.h" #include "src/string/bzero.h" #include "utils/UnitTest/Test.h" using __llvm_libc::cpp::Array; using __llvm_libc::cpp::ArrayRef; using Data = Array<char, 2048>; static const ArrayRef<char> k_deadcode("DEADC0DE", 8); // Returns a Data object filled with a repetition of `filler`. Data get_data(ArrayRef<char> filler) { Data out; for (size_t i = 0; i < out.size(); ++i) out[i] = filler[i % filler.size()]; return out; } TEST(LlvmLibcBzeroTest, Thorough) { const Data dirty = get_data(k_deadcode); for (size_t count = 0; count < 1024; ++count) { for (size_t align = 0; align < 64; ++align) { auto buffer = dirty; char *const dst = &buffer[align]; __llvm_libc::bzero(dst, count); // Everything before copy is untouched. for (size_t i = 0; i < align; ++i) ASSERT_EQ(buffer[i], dirty[i]); // Everything in between is copied. for (size_t i = 0; i < count; ++i) ASSERT_EQ(buffer[align + i], char(0)); // Everything after copy is untouched. for (size_t i = align + count; i < dirty.size(); ++i) ASSERT_EQ(buffer[i], dirty[i]); } } } // FIXME: Add tests with reads and writes on the boundary of a read/write // protected page to check we're not reading nor writing prior/past the allowed // regions.