Faker Cxx Save Abandoned

C++ Faker library for generating fake (but realistic) data for testing and development.

Project README

C++ Faker

clang++ apple clang++ g++ msvc codecov PRs Welcome Discord Shield

C++ Faker is a modern C++20 open-source library for generating fake data for testing and development.

The library is heavily inspired by Faker.js.

Dependencies:

  • GTest: building library tests (can be disabled by setting CMake flag BUILD_FAKER_TESTS=OFF)
  • fmt: formatting

🎯 Goal

My goal is to provide a library like Faker.js for C++ developers.

Example

Lets dive into some simple example of generating fake data

#include <format>
#include <iostream>

#include "faker-cxx/Datatype.h"
#include "faker-cxx/Date.h"
#include "faker-cxx/Internet.h"
#include "faker-cxx/String.h"

int main()
{
    const auto id = faker::String::uuid();                   // 6fdb588e-0be9-480e-9eeb-8ff11b8afc00
    const auto email = faker::Internet::email();             // [email protected]
    const auto password = faker::Internet::password();       // 91gZxLB*TfhAA!G
    const auto nickname = faker::Internet::username();       // Stuart_Boyle
    const auto active = faker::Datatype::boolean();          // true
    const auto emailVerified = faker::Datatype::boolean();   // false
    const auto verificationCode = faker::String::numeric(8); // 56910620
    const auto createdAt = faker::Date::pastDate();          // 2023-03-11T08:33:34Z
    const auto updatedAt = faker::Date::recentDate();        // 2023-07-19T22:59:19Z

    std::cout << std::format("id: {}, email: {}, password: {}, nickname: {}, active: {}, emailVerified: {}. "
                             "verificationCode: {}, createdAt: {}, updatedAt: {}",
                             id, email, password, nickname, active, emailVerified, verificationCode, createdAt,
                             updatedAt);

    return 0;
}

Requirements

Compiler Support

CMake version 3.22 or newer

Consuming library with CMake

  1. Add faker to git submodules (execute in project root):
mkdir externals
cd externals
git submodule add https://github.com/cieslarmichal/faker-cxx.git
echo "add_subdirectory(faker-cxx)" > CMakeLists.txt
  1. Link with library:
set(BUILD_FAKER_TESTS OFF)

add_subdirectory(externals/faker-cxx)

add_executable(main Main.cpp)

target_link_libraries(main faker-cxx)

πŸ’Ž Modules

  • 🌐 Internet - Generate emails, usernames, passwords, images urls
  • 🌍 Location - Generate countries, cities, zip codes, street addresses
  • πŸ§‘ Person - Generate first, last names, job titles, genders, sex
  • πŸ“ž Phone - Generate phone number, IMEI
  • πŸ›’ Commerce - Generate commerce department, product name, sku, price
  • πŸ“… Date - Generate past, future dates
  • 🏦 Finance - Generate currency, IBAN, BIC, account name, account number, pin, credit card numbers
  • 🏒 Company - Generate company name, type, industry, catch phrase, buzz phrase
  • πŸ”’ Number - Generate random integers, floating point numbers
  • ✍ Word - Generate sample words, nouns, verbs etc
  • 🎨 Color - Generate color names, rgb, hex
  • πŸ“– Book - Generate book title, genre, author, publisher, ISBN
  • πŸ“š Lorem - Generate lorem words, sentences, paragraphs
  • πŸ”’ String - Generate uuids, alphanumeric, numeric, hexadecimal
  • πŸ’» System - Generate file paths, file extensions, file names, directories, semantic version
  • Database - Generate column names, column types, database engines
  • 🎢 Music - Generate artists, song names, genres
  • πŸŽ₯ Movie - Generate actors, actresses, genres, movie titles

πŸ”¨ TODO Modules

✨ Contributing

Feel free to join Faker C++ development! πŸš€

Please check CONTRIBUTING guide.

Discord Channel for contributors.


Building from sources with Clang 16

1. Install Clang 16

sudo add-apt-repository ppa:trebelnik-stefina/launchpad-getkeys \
&& sudo apt-get update \
&& sudo apt-get install launchpad-getkeys \
&& sudo add-apt-repository 'deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main' \
&& sudo launchpad-getkeys \
&& sudo apt-get update -y \
&& sudo apt-get install -y lld-16 ninja-build  build-essential libstdc++-13-dev \
 clang-16 clang-tools-16 llvm-16 lcov

2. Prepare build directory

git clone https://github.com/cieslarmichal/faker-cxx.git
cd faker-cxx
git submodule update --init --recursive
mkdir build
cd build

3. CMake setup with Clang 16

cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/clang++-16

4. Build πŸ”¨

make
Open Source Agenda is not affiliated with "Faker Cxx" Project. README Source: cieslarmichal/faker-cxx

Open Source Agenda Badge

Open Source Agenda Rating