ff4ff35918
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
83 lines
2.0 KiB
C++
83 lines
2.0 KiB
C++
/*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under both the BSD-style license (found in the
|
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
* in the COPYING file in the root directory of this source tree).
|
|
*/
|
|
#include "utils/Range.h"
|
|
|
|
#include <gtest/gtest.h>
|
|
#include <string>
|
|
|
|
using namespace pzstd;
|
|
|
|
// Range is directly copied from folly.
|
|
// Just some sanity tests to make sure everything seems to work.
|
|
|
|
TEST(Range, Constructors) {
|
|
StringPiece empty;
|
|
EXPECT_TRUE(empty.empty());
|
|
EXPECT_EQ(0, empty.size());
|
|
|
|
std::string str = "hello";
|
|
{
|
|
Range<std::string::const_iterator> piece(str.begin(), str.end());
|
|
EXPECT_EQ(5, piece.size());
|
|
EXPECT_EQ('h', *piece.data());
|
|
EXPECT_EQ('o', *(piece.end() - 1));
|
|
}
|
|
|
|
{
|
|
StringPiece piece(str.data(), str.size());
|
|
EXPECT_EQ(5, piece.size());
|
|
EXPECT_EQ('h', *piece.data());
|
|
EXPECT_EQ('o', *(piece.end() - 1));
|
|
}
|
|
|
|
{
|
|
StringPiece piece(str);
|
|
EXPECT_EQ(5, piece.size());
|
|
EXPECT_EQ('h', *piece.data());
|
|
EXPECT_EQ('o', *(piece.end() - 1));
|
|
}
|
|
|
|
{
|
|
StringPiece piece(str.c_str());
|
|
EXPECT_EQ(5, piece.size());
|
|
EXPECT_EQ('h', *piece.data());
|
|
EXPECT_EQ('o', *(piece.end() - 1));
|
|
}
|
|
}
|
|
|
|
TEST(Range, Modifiers) {
|
|
StringPiece range("hello world");
|
|
ASSERT_EQ(11, range.size());
|
|
|
|
{
|
|
auto hello = range.subpiece(0, 5);
|
|
EXPECT_EQ(5, hello.size());
|
|
EXPECT_EQ('h', *hello.data());
|
|
EXPECT_EQ('o', *(hello.end() - 1));
|
|
}
|
|
{
|
|
auto hello = range;
|
|
hello.subtract(6);
|
|
EXPECT_EQ(5, hello.size());
|
|
EXPECT_EQ('h', *hello.data());
|
|
EXPECT_EQ('o', *(hello.end() - 1));
|
|
}
|
|
{
|
|
auto world = range;
|
|
world.advance(6);
|
|
EXPECT_EQ(5, world.size());
|
|
EXPECT_EQ('w', *world.data());
|
|
EXPECT_EQ('d', *(world.end() - 1));
|
|
}
|
|
|
|
std::string expected = "hello world";
|
|
EXPECT_EQ(expected, std::string(range.begin(), range.end()));
|
|
EXPECT_EQ(expected, std::string(range.data(), range.size()));
|
|
}
|