nodejs/deps/inspector_protocol/crdtp/serializable_test.cc
Chengzhong Wu 0aa5874098 deps: move inspector_protocol to deps
The `crdtp` library in the inspector_protocol is compiled as a library
and linked to the node executable.

PR-URL: https://github.com/nodejs/node/pull/56649
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
2025-01-26 23:20:09 +00:00

41 lines
1.2 KiB
C++

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <cstdlib>
#include <string>
#include "serializable.h"
#include "test_platform.h"
namespace crdtp {
// =============================================================================
// Serializable - An object to be emitted as a sequence of bytes.
// =============================================================================
namespace {
// Tests ::Serialize (which invokes ::AppendSerialized).
class SimpleExample : public Serializable {
public:
explicit SimpleExample(const std::vector<uint8_t>& contents)
: contents_(contents) {}
void AppendSerialized(std::vector<uint8_t>* out) const override {
out->insert(out->end(), contents_.begin(), contents_.end());
}
private:
std::vector<uint8_t> contents_;
};
} // namespace
TEST(SerializableTest, YieldsContents) {
std::vector<uint8_t> contents = {1, 2, 3};
SimpleExample foo(contents);
foo.AppendSerialized(&contents); // Yields contents by appending.
EXPECT_THAT(contents, testing::ElementsAre(1, 2, 3, 1, 2, 3));
// Yields contents by returning.
EXPECT_THAT(foo.Serialize(), testing::ElementsAre(1, 2, 3));
}
} // namespace crdtp