diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 168ca95..ac3f100 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -12,10 +12,7 @@ "ENABLE_DEBUG=1", "USE_GPSD=1" ], - "group": { - "kind": "build", - "isDefault": true - }, + "group": "build", "problemMatcher": [] }, { @@ -28,7 +25,10 @@ "ENABLE_DEBUG=1", "USE_GPSD=1" ], - "group": "build", + "group": { + "kind": "build", + "isDefault": true + }, "problemMatcher": [] } ] diff --git a/Tests/DCSProtocolHandlerPool/getHandler.cpp b/Tests/DCSProtocolHandlerPool/getHandler.cpp new file mode 100644 index 0000000..3d31874 --- /dev/null +++ b/Tests/DCSProtocolHandlerPool/getHandler.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2021-2022 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "../../DCSProtocolHandlerPool.h" + +namespace DCSProtocolHandlerPoolTests +{ + class DCSProtocolHandler_getHandler : public ::testing::Test { + + }; + + TEST_F(DCSProtocolHandler_getHandler, successiveCallsReturnsDifferentHandlerAndNotIncoming) + { + CDCSProtocolHandlerPool pool(DCS_PORT, "127.0.0.1"); + + auto handler1 = pool.getHandler(); + auto handler2 = pool.getHandler(); + auto incoming = pool.getIncomingHandler(); + + EXPECT_NE(handler1, nullptr); + EXPECT_NE(handler2, nullptr); + EXPECT_NE(incoming, nullptr); + + EXPECT_NE(handler1, handler2); + EXPECT_NE(handler1, incoming); + EXPECT_NE(handler2, incoming); + + // DCS_PORT is reserved for incoming handler + EXPECT_NE(handler1->getPort(), DCS_PORT); + EXPECT_NE(handler2->getPort(), DCS_PORT); + + EXPECT_EQ(incoming->getPort(), DCS_PORT); + + pool.release(handler1); + pool.release(handler2); + pool.release(incoming); + } +} \ No newline at end of file diff --git a/Tests/DCSProtocolHandlerPool/getIncomingHandler.cpp b/Tests/DCSProtocolHandlerPool/getIncomingHandler.cpp new file mode 100644 index 0000000..f4c3f34 --- /dev/null +++ b/Tests/DCSProtocolHandlerPool/getIncomingHandler.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2021-2022 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "../../DCSProtocolHandlerPool.h" + +namespace DCSProtocolHandlerPoolTests +{ + class DCSProtocolHandler_getIncomingHandler : public ::testing::Test { + + }; + + TEST_F(DCSProtocolHandler_getIncomingHandler, successiveCallAlwaysReturnsIncomingHandler) + { + CDCSProtocolHandlerPool pool(DCS_PORT, "127.0.0.1"); + + auto handler1 = pool.getIncomingHandler(); + auto handler2 = pool.getIncomingHandler(); + + EXPECT_NE(handler1, nullptr); + EXPECT_NE(handler2, nullptr); + EXPECT_EQ(handler1, handler2); + EXPECT_EQ(handler1->getPort(), DCS_PORT); + EXPECT_EQ(handler2->getPort(), DCS_PORT); + + pool.release(handler1); + pool.release(handler2); + } +} \ No newline at end of file diff --git a/Tests/DPlusProtocolHandlerPool/getHandler.cpp b/Tests/DPlusProtocolHandlerPool/getHandler.cpp new file mode 100644 index 0000000..2389298 --- /dev/null +++ b/Tests/DPlusProtocolHandlerPool/getHandler.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2021-2022 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "../../DPlusProtocolHandlerPool.h" + +namespace DPlusProtocolHandlerPoolTests +{ + class DPlusProtocolHandler_getHandler : public ::testing::Test { + + }; + + TEST_F(DPlusProtocolHandler_getHandler, successiveCallsReturnsDifferentHandlerAndNotIncoming) + { + CDPlusProtocolHandlerPool pool(DPLUS_PORT, "127.0.0.1"); + + auto handler1 = pool.getHandler(); + auto handler2 = pool.getHandler(); + auto incoming = pool.getIncomingHandler(); + + EXPECT_NE(handler1, nullptr); + EXPECT_NE(handler2, nullptr); + EXPECT_NE(incoming, nullptr); + + EXPECT_NE(handler1, handler2); + EXPECT_NE(handler1, incoming); + EXPECT_NE(handler2, incoming); + + // DPLUS_PORT is reserved for incoming handler + EXPECT_NE(handler1->getPort(), DPLUS_PORT); + EXPECT_NE(handler2->getPort(), DPLUS_PORT); + + EXPECT_EQ(incoming->getPort(), DPLUS_PORT); + + pool.release(handler1); + pool.release(handler2); + pool.release(incoming); + } +} \ No newline at end of file diff --git a/Tests/DPlusProtocolHandlerPool/getIncomingHandler.cpp b/Tests/DPlusProtocolHandlerPool/getIncomingHandler.cpp new file mode 100644 index 0000000..a27dbd9 --- /dev/null +++ b/Tests/DPlusProtocolHandlerPool/getIncomingHandler.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2021-2022 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "../../DPlusProtocolHandlerPool.h" + +namespace DPlusProtocolHandlerPoolTests +{ + class DPlusProtocolHandler_getIncomingHandler : public ::testing::Test { + + }; + + TEST_F(DPlusProtocolHandler_getIncomingHandler, successiveCallAlwaysReturnsIncomingHandler) + { + CDPlusProtocolHandlerPool pool(DPLUS_PORT, "127.0.0.1"); + + auto handler1 = pool.getIncomingHandler(); + auto handler2 = pool.getIncomingHandler(); + + EXPECT_NE(handler1, nullptr); + EXPECT_NE(handler2, nullptr); + EXPECT_EQ(handler1, handler2); + EXPECT_EQ(handler1->getPort(), DPLUS_PORT); + EXPECT_EQ(handler2->getPort(), DPLUS_PORT); + + pool.release(handler1); + pool.release(handler2); + } +} \ No newline at end of file diff --git a/Tests/DextraProtocolHandlerPool/getHandler.cpp b/Tests/DextraProtocolHandlerPool/getHandler.cpp new file mode 100644 index 0000000..bc7c805 --- /dev/null +++ b/Tests/DextraProtocolHandlerPool/getHandler.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2021-2022 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "../../DExtraProtocolHandlerPool.h" + +namespace DextraProtocolHandlerPoolTests +{ + class DextraProtocolHandler_getHandler : public ::testing::Test { + + }; + + TEST_F(DextraProtocolHandler_getHandler, successiveCallsReturnsDifferentHandlerAndNotIncoming) + { + CDExtraProtocolHandlerPool pool(DEXTRA_PORT, "127.0.0.1"); + + auto handler1 = pool.getHandler(); + auto handler2 = pool.getHandler(); + auto incoming = pool.getIncomingHandler(); + + EXPECT_NE(handler1, nullptr); + EXPECT_NE(handler2, nullptr); + EXPECT_NE(incoming, nullptr); + + EXPECT_NE(handler1, handler2); + EXPECT_NE(handler1, incoming); + EXPECT_NE(handler2, incoming); + + // DEXTRA_PORT is reserved for incoming handler + EXPECT_NE(handler1->getPort(), DEXTRA_PORT); + EXPECT_NE(handler2->getPort(), DEXTRA_PORT); + + EXPECT_EQ(incoming->getPort(), DEXTRA_PORT); + + pool.release(handler1); + pool.release(handler2); + pool.release(incoming); + } +} \ No newline at end of file diff --git a/Tests/DextraProtocolHandlerPool/getIncomingHandler.cpp b/Tests/DextraProtocolHandlerPool/getIncomingHandler.cpp new file mode 100644 index 0000000..c6bfbc5 --- /dev/null +++ b/Tests/DextraProtocolHandlerPool/getIncomingHandler.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2021-2022 by Geoffrey Merck F4FXL / KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "../../DExtraProtocolHandlerPool.h" + +namespace DextraProtocolHandlerPoolTests +{ + class DextraProtocolHandler_getIncomingHandler : public ::testing::Test { + + }; + + TEST_F(DextraProtocolHandler_getIncomingHandler, successiveCallAlwaysReturnsIncomingHandler) + { + CDExtraProtocolHandlerPool pool(DEXTRA_PORT, "127.0.0.1"); + + auto handler1 = pool.getIncomingHandler(); + auto handler2 = pool.getIncomingHandler(); + + EXPECT_NE(handler1, nullptr); + EXPECT_NE(handler2, nullptr); + EXPECT_EQ(handler1, handler2); + EXPECT_EQ(handler1->getPort(), DEXTRA_PORT); + EXPECT_EQ(handler2->getPort(), DEXTRA_PORT); + + pool.release(handler1); + pool.release(handler2); + } +} \ No newline at end of file