#include <iostream>
#include "Model.h"
using namespace std;
using namespace Model;
int
main(void)
{
/* Basic Test::More-ish behaviour */
int test = 1;
int expected_tests;
auto note = [] (std::string m) {
cout << u8"# " << m << endl;
};
auto ok = [&test] (bool check, std::string m) {
cout << std::string(check ? u8"ok" : u8"not ok")
<< u8" " << test++ << u8" - " << m << endl;
};
auto plan = [&expected_tests] (int count) {
expected_tests = count;
cout << u8"1.." << expected_tests << endl;
};
plan(5);
/*
* Simple key=>value accessors on an object
*/
note(u8"Creating author");
Author author;
author.name(std::string(u8"First author"));
ok(
author.name() == u8"First author",
u8"name was set correctly"
);
note(u8"Author's name is: " + author.name());
/*
* References to other objects
*/
note(u8"Creating book");
Book book;
book.name(std::string(u8"First book")).author(&author);
note(u8"Book name is " + book.name());
note(u8"Author's name is " + book.author()->name());
ok(book.name() == u8"First book", u8"book has correct name");
ok(book.author() == &author, u8"book has correct author");
ok(
book.author()->name() == u8"First author",
u8"linked author for book has correct name"
);
/*
* Collections
*/
note(u8"Creating library");
Library library;
note(u8"Adding book to library");
return 0;
}