/* * synergy -- mouse and keyboard sharing utility * Copyright (C) 2014-2016 Symless Ltd. * * This package is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * found in the file LICENSE that should have accompanied this file. * * This package is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef _WIN32 #include "lib/arch/XArch.h" #include "lib/arch/unix/ArchNetworkBSD.h" #include "test/global/gtest.h" #include #include #include #include TEST(ArchNetworkBSDTests, pollSocket_errs_EACCES) { ArchNetworkBSD networkBSD; ArchNetworkBSD::s_connectors.poll_impl = [](struct pollfd *, nfds_t, int) { errno = EACCES; return -1; }; try { std::array pe{{nullptr, 0, 0}}; networkBSD.pollSocket(pe.data(), pe.size(), 1); FAIL() << "Expected to throw"; } catch (XArchNetworkAccess const &err) { EXPECT_STREQ(err.what(), "Permission denied"); } catch (std::runtime_error const &baseerr) { FAIL() << "Expected to throw XArchNetworkAccess but got " << baseerr.what(); } } TEST(ArchNetworkBSDTests, isAnyAddr_IP6) { ArchNetworkBSD networkBSD; std::unique_ptr addr; addr.reset(networkBSD.newAnyAddr(IArchNetwork::kINET6)); EXPECT_TRUE(networkBSD.isAnyAddr(addr.get())); auto scratch = (char *)&addr->m_addr; scratch[2] = 'b'; scratch[3] = 'a'; scratch[4] = 'd'; scratch[5] = 'a'; scratch[6] = 'd'; scratch[7] = 'd'; scratch[8] = 'r'; EXPECT_FALSE(networkBSD.isAnyAddr(addr.get())); } #endif // #ifdnef _WIN32