134 lines
3.4 KiB
C++
134 lines
3.4 KiB
C++
/*
|
||
* tests.hpp
|
||
*
|
||
* Created on: 17 окт. 2021 г.
|
||
* Author: alexander
|
||
*/
|
||
|
||
#pragma once
|
||
|
||
#include <gtest/gtest.h>
|
||
#include "lesson_1.hpp"
|
||
|
||
class TestBook: public testing::Test
|
||
{
|
||
protected:
|
||
PhoneBook *book;
|
||
|
||
void SetUp() override
|
||
{
|
||
std::stringstream src_stream;
|
||
src_stream << "Ivanov;Daniil;Maksimovich;7;366;7508887;;\n"
|
||
<< "Aleksandrov;Georgii;;493;7637;6114861;;\n"
|
||
<< "Aleksandrov;Andrey;Mikhailovich;7;247;1377660;5542;\n"
|
||
<< "Markelov;Dmitrii;Vadimovich;19;7576;5734416;2;\n";
|
||
|
||
book = new PhoneBook(src_stream);
|
||
}
|
||
|
||
void TearDown() override
|
||
{
|
||
delete book;
|
||
}
|
||
};
|
||
|
||
TEST_F(TestBook, GetPhoneNumber_notFound)
|
||
{
|
||
std::string lastname = "Egorov";
|
||
|
||
auto answer = book->GetPhoneNumber(lastname);
|
||
EXPECT_EQ(std::get<0>(answer), "not found");
|
||
}
|
||
|
||
TEST_F(TestBook, GetPhoneNumber_foundOne)
|
||
{
|
||
std::string lastname = "Ivanov";
|
||
|
||
auto answer = book->GetPhoneNumber(lastname);
|
||
EXPECT_EQ(std::get<0>(answer), "");
|
||
}
|
||
|
||
TEST_F(TestBook, GetPhoneNumber_foundMore)
|
||
{
|
||
std::string lastname = "Aleksandrov";
|
||
|
||
auto answer = book->GetPhoneNumber(lastname);
|
||
EXPECT_EQ(std::get<0>(answer), "found more than 1");
|
||
}
|
||
|
||
TEST_F(TestBook, GetPhoneNumber_empty)
|
||
{
|
||
std::string lastname = "";
|
||
|
||
auto answer = book->GetPhoneNumber(lastname);
|
||
EXPECT_EQ(std::get<0>(answer), "not found");
|
||
}
|
||
|
||
TEST_F(TestBook, ChangePhoneNumber)
|
||
{
|
||
std::string lastname = "Ivanov";
|
||
|
||
ASSERT_EQ(std::get<0>(book->GetPhoneNumber(lastname)).empty(), true);
|
||
|
||
PhoneNumber answer = std::get<1>(book->GetPhoneNumber(lastname))[0];
|
||
EXPECT_EQ(answer.number, "7508887");
|
||
|
||
book->ChangePhoneNumber(Person { "Ivanov", "Daniil", "Maksimovich" }, PhoneNumber { 7, 123, "15344458", std::nullopt });
|
||
|
||
answer = std::get<1>(book->GetPhoneNumber(lastname))[0];
|
||
EXPECT_EQ(answer.country_code, 7);
|
||
EXPECT_EQ(answer.city_code, 123);
|
||
EXPECT_EQ(answer.number, "15344458");
|
||
EXPECT_EQ(answer.additional_number, std::nullopt);
|
||
}
|
||
|
||
TEST_F(TestBook, sortByName)
|
||
{
|
||
std::stringstream src_stream;
|
||
src_stream << " Aleksandrov Andrey Mikhailovich +7(247)1377660 5542\n"
|
||
<< " Aleksandrov Georgii +493(7637)6114861\n"
|
||
<< " Ivanov Daniil Maksimovich +7(366)7508887\n"
|
||
<< " Markelov Dmitrii Vadimovich +19(7576)5734416 2\n";
|
||
|
||
book->SortByName();
|
||
|
||
std::stringstream dst_stream;
|
||
dst_stream << *book;
|
||
|
||
while (!dst_stream.eof())
|
||
{
|
||
std::string str_src;
|
||
std::string str_dst;
|
||
|
||
src_stream >> str_src ;
|
||
dst_stream >> str_dst;
|
||
|
||
EXPECT_EQ(str_dst, str_src);
|
||
}
|
||
}
|
||
|
||
TEST_F(TestBook, sortByPhone)
|
||
{
|
||
std::stringstream src_stream;
|
||
src_stream << " Aleksandrov Andrey Mikhailovich +7(247)1377660 5542\n"
|
||
<< " Ivanov Daniil Maksimovich +7(366)7508887\n"
|
||
<< " Markelov Dmitrii Vadimovich +19(7576)5734416 2\n"
|
||
<< " Aleksandrov Georgii +493(7637)6114861\n";
|
||
|
||
book->SortByPhone();
|
||
|
||
std::stringstream dst_stream;
|
||
dst_stream << *book;
|
||
|
||
while (!dst_stream.eof())
|
||
{
|
||
std::string str_src;
|
||
std::string str_dst;
|
||
|
||
src_stream >> str_src ;
|
||
dst_stream >> str_dst;
|
||
|
||
EXPECT_EQ(str_dst, str_src);
|
||
}
|
||
}
|