C++ Faker is a modern open source library that uses C++20 to generate fake data for testing during the development of your applications.
The library is heavily inspired by Faker.js.
Despite using in conjunction with LibFMT and GoogleTest, at the same time, having them is still optional. In the case of LibFMT it will be automatically cloned and GoogleTest can be disabled during compilation.
mkdir myproject
cd myproject
git init
git submodule add https://github.com/cieslarmichal/faker-cxx.git
CMakeLists.txt
And add the content below:
cmake_minimum_required(VERSION 3.10)
project(TestFaker
CXX LANGUAGES
VERSION 0.0.1
)
set(BUILD_FAKER_TESTS OFF)
add_subdirectory(faker-cxx)
set (CMAKE_CXX_STANDARD 23)
add_executable(a.out main.cpp)
target_link_libraries(a.out faker-cxx)
Note that in the line:
set(BUILD_FAKER_TESTS OFF)
we deactivate GoogleTest, and I recommend it because I noticed that there is an array that is bugged. 😃
main.cpp
And add the content below:
#include <format>
#include <iostream>
#include "faker-cxx/include/faker-cxx/Datatype.h"
#include "faker-cxx/include/faker-cxx/Date.h"
#include "faker-cxx/include/faker-cxx/Internet.h"
#include "faker-cxx/include/faker-cxx/String.h"
auto main() -> int {
const auto id = faker::String::uuid();
const auto email = faker::Internet::email();
const auto password = faker::Internet::password();
const auto nickname = faker::Internet::username();
const auto active = faker::Datatype::boolean();
const auto email_check = faker::Datatype::boolean();
const auto code_check = faker::String::numeric(8);
const auto created_at = faker::Date::pastDate();
const auto updated_at = faker::Date::recentDate();
std::cout << std::format("id: {}", id) << '\n';
std::cout << std::format("email: {}", email) << '\n';
std::cout << std::format("password: {}", password) << '\n';
std::cout << std::format("nickname: {}", nickname) << '\n';
std::cout << std::format("active: {}", active) << '\n';
std::cout << std::format("email_check: {}", email_check) << '\n';
std::cout << std::format("code_check: {}", code_check) << '\n';
std::cout << std::format("created_at: {}", created_at) << '\n';
std::cout << std::format("updated_at: {}", updated_at) << '\n';
return 0;
}
In this example there are several fakers that you can generate, but there are more examples such as: Company Name, Animals, … and others!
cmake . -B build
cd build && make
./a.out
Example of similar output:
id: 885c6f73-48e1-49c5-b718-cc099c26486c
email: WendyWest586@yahoo.com
password: Gy4.hX*=HA|OG?_
nickname: AltonKulas
active: true
email_check: true
code_check: 23567299
created_at: 2023-05-05T11:39:05Z
updated_at: 2023-11-16T13:07:05Z
Every time you run the binaries, new data will be generated!
For more information visit the repository: https://github.com/cieslarmichal/faker-cxx.