#include <gtest/gtest.h>
#include "runtime/state/KeyGroupsStateHandle.h"
#include "runtime/state/memory/ByteStreamStateHandle.h"
TEST(KeyGroupsStateHandleTest, NonEmptyIntersection)
{
KeyGroupRangeOffsets offsets(0, 7);
std::vector<uint8_t> dummy(10, 0);
std::shared_ptr<StreamStateHandle> streamHandle = std::make_shared<ByteStreamStateHandle>("test", dummy);
KeyGroupsStateHandle handle(offsets, streamHandle);
KeyGroupRange expectedRange(0, 3);
auto tempHandle = handle.GetIntersection(expectedRange);
auto newHandle = std::dynamic_pointer_cast<KeyGroupsStateHandle>(tempHandle);
ASSERT_NE(newHandle, nullptr);
ASSERT_EQ(newHandle->getDelegateStateHandle()->GetStreamStateHandleID(), streamHandle->GetStreamStateHandleID());
ASSERT_EQ(newHandle->GetKeyGroupRange(), expectedRange);
ASSERT_EQ(handle.GetStateHandleId(), newHandle->GetStateHandleId());
}
TEST(KeyGroupsStateHandleTest, EmptyIntersection)
{
KeyGroupRangeOffsets offsets(0, 7);
std::vector<uint8_t> dummy(10, 0);
std::shared_ptr<StreamStateHandle> streamHandle = std::make_shared<ByteStreamStateHandle>("test", dummy);
KeyGroupsStateHandle handle(offsets, streamHandle);
KeyGroupRange newRange(8, 11);
auto newHandle = handle.GetIntersection(newRange);
ASSERT_EQ(newHandle, nullptr);
}