<commit_before>#include "joedb/journal/Memory_File.h"
#include "joedb/journal/Readonly_Memory_File.h"

#include "gtest/gtest.h"

/////////////////////////////////////////////////////////////////////////////
TEST(Generic_File, copy)
/////////////////////////////////////////////////////////////////////////////
{
 const uint64_t magic = 1234567;

 joedb::Memory_File file;
 file.write<uint64_t>(magic);

 joedb::Memory_File copy;
 copy.copy(file);
 copy.set_position(0);

 EXPECT_EQ(copy.read<uint64_t>(), magic);
}

/////////////////////////////////////////////////////////////////////////////
TEST(Generic_File, readonly_memory_file)
/////////////////////////////////////////////////////////////////////////////
{
 const char data[] = {0, 1, 2, 3};
 const size_t size = sizeof(data);

 joedb::Readonly_Memory_File file(data, size);

 EXPECT_EQ(file.read<uint32_t>(), 0x03020100UL);
 file.read<uint32_t>();
 file.read<uint32_t>();
}

/////////////////////////////////////////////////////////////////////////////
void check_data(const int32_t *data, int32_t start, int32_t count)
/////////////////////////////////////////////////////////////////////////////
{
 for (int i = 0; i < count; i++)
  EXPECT_EQ(start + i, data[i]);
}

/////////////////////////////////////////////////////////////////////////////
TEST(Generic_File, read_data)
/////////////////////////////////////////////////////////////////////////////
{
 const size_t buffer_size = (1 << 10);
 const int32_t file_size = int32_t(buffer_size) * 10;
<commit_msg>fix test for big endian machines<commit_after>#include "joedb/journal/Memory_File.h"
#include "joedb/journal/Readonly_Memory_File.h"

#include "gtest/gtest.h"

/////////////////////////////////////////////////////////////////////////////
TEST(Generic_File, copy)
/////////////////////////////////////////////////////////////////////////////
{
 const uint64_t magic = 1234567;

 joedb::Memory_File file;
 file.write<uint64_t>(magic);

 joedb::Memory_File copy;
 copy.copy(file);
 copy.set_position(0);

 EXPECT_EQ(copy.read<uint64_t>(), magic);
}

/////////////////////////////////////////////////////////////////////////////
TEST(Generic_File, readonly_memory_file)
/////////////////////////////////////////////////////////////////////////////
{
 const char data[] = {0, 1, 2, 3};
 const size_t size = sizeof(data);

 joedb::Readonly_Memory_File file(data, size);

 EXPECT_EQ(file.read<uint32_t>(), 0x03020100UL);
 file.read<uint32_t>();
 file.read<uint32_t>();
}

/////////////////////////////////////////////////////////////////////////////
void check_data(int32_t *data, int32_t start, int32_t count)
/////////////////////////////////////////////////////////////////////////////
{
 for (int i = 0; i < count; i++)
 {
  if (joedb::Generic_File::is_big_endian())
   joedb::Generic_File::R<int32_t, 4>::swap(data[i]);
  EXPECT_EQ(start + i, data[i]);
 }
}

/////////////////////////////////////////////////////////////////////////////
TEST(Generic_File, read_data)
/////////////////////////////////////////////////////////////////////////////
{
 const size_t buffer_size = (1 << 10);
 const int32_t file_size = int32_t(buffer_size) * 10;

{'fraction_non_alphanumeric': 0.4849635960747072, 'fraction_numerical': 0.0319721430832542, 'mean_word_length': 1.068062827225131, 'pattern_counts': {'":': 0, '<': 20, '<?xml version=': 0, '>': 14, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1751632', 'n_tokens_mistral': 878, 'n_tokens_neox': 805, 'n_words': 150}