Skip to content

Commit 059e54f

Browse files
committed
Add TerminalRedirectorBaseTest
1 parent 408a651 commit 059e54f

File tree

3 files changed

+100
-4
lines changed

3 files changed

+100
-4
lines changed

SimpleComTest/SimpleComTest.vcxproj

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
<Link>
101101
<SubSystem>Windows</SubSystem>
102102
<AdditionalLibraryDirectories>$(ProjectDir)..\SimpleCom\$(Platform)\$(Configuration);$(ProjectDir)..\SimpleCom\SimpleCom\$(Platform)\$(Configuration);$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
103-
<AdditionalDependencies>%(AdditionalDependencies);version.lib;WinAPIException.obj;debug.obj;stdafx.obj;SerialPortWriter.obj;SerialSetup.obj;SerialDeviceScanner.obj;EnumValue.obj;LogWriter.obj;util.obj</AdditionalDependencies>
103+
<AdditionalDependencies>%(AdditionalDependencies);version.lib;WinAPIException.obj;debug.obj;stdafx.obj;SerialPortWriter.obj;SerialSetup.obj;SerialDeviceScanner.obj;EnumValue.obj;LogWriter.obj;util.obj;TerminalRedirectorBase.obj</AdditionalDependencies>
104104
</Link>
105105
</ItemDefinitionGroup>
106106
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -116,7 +116,7 @@
116116
<Link>
117117
<SubSystem>Windows</SubSystem>
118118
<AdditionalLibraryDirectories>$(ProjectDir)..\SimpleCom\$(Platform)\$(Configuration);$(ProjectDir)..\SimpleCom\SimpleCom\$(Platform)\$(Configuration);$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
119-
<AdditionalDependencies>%(AdditionalDependencies);version.lib;WinAPIException.obj;debug.obj;stdafx.obj;SerialPortWriter.obj;SerialSetup.obj;SerialDeviceScanner.obj;EnumValue.obj;LogWriter.obj;util.obj</AdditionalDependencies>
119+
<AdditionalDependencies>%(AdditionalDependencies);version.lib;WinAPIException.obj;debug.obj;stdafx.obj;SerialPortWriter.obj;SerialSetup.obj;SerialDeviceScanner.obj;EnumValue.obj;LogWriter.obj;util.obj;TerminalRedirectorBase.obj</AdditionalDependencies>
120120
</Link>
121121
</ItemDefinitionGroup>
122122
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -136,7 +136,7 @@
136136
<EnableCOMDATFolding>true</EnableCOMDATFolding>
137137
<OptimizeReferences>true</OptimizeReferences>
138138
<AdditionalLibraryDirectories>$(ProjectDir)..\SimpleCom\$(Platform)\$(Configuration);$(ProjectDir)..\SimpleCom\SimpleCom\$(Platform)\$(Configuration);$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
139-
<AdditionalDependencies>%(AdditionalDependencies);version.lib;WinAPIException.obj;debug.obj;stdafx.obj;SerialPortWriter.obj;SerialSetup.obj;SerialDeviceScanner.obj;EnumValue.obj;LogWriter.obj;util.obj</AdditionalDependencies>
139+
<AdditionalDependencies>%(AdditionalDependencies);version.lib;WinAPIException.obj;debug.obj;stdafx.obj;SerialPortWriter.obj;SerialSetup.obj;SerialDeviceScanner.obj;EnumValue.obj;LogWriter.obj;util.obj;TerminalRedirectorBase.obj</AdditionalDependencies>
140140
</Link>
141141
</ItemDefinitionGroup>
142142
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@@ -156,7 +156,7 @@
156156
<EnableCOMDATFolding>true</EnableCOMDATFolding>
157157
<OptimizeReferences>true</OptimizeReferences>
158158
<AdditionalLibraryDirectories>$(ProjectDir)..\SimpleCom\$(Platform)\$(Configuration);$(ProjectDir)..\SimpleCom\SimpleCom\$(Platform)\$(Configuration);$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
159-
<AdditionalDependencies>%(AdditionalDependencies);version.lib;WinAPIException.obj;debug.obj;stdafx.obj;SerialPortWriter.obj;SerialSetup.obj;SerialDeviceScanner.obj;EnumValue.obj;LogWriter.obj;util.obj</AdditionalDependencies>
159+
<AdditionalDependencies>%(AdditionalDependencies);version.lib;WinAPIException.obj;debug.obj;stdafx.obj;SerialPortWriter.obj;SerialSetup.obj;SerialDeviceScanner.obj;EnumValue.obj;LogWriter.obj;util.obj;TerminalRedirectorBase.obj</AdditionalDependencies>
160160
</Link>
161161
</ItemDefinitionGroup>
162162
<ItemGroup>
@@ -170,6 +170,7 @@
170170
</ClCompile>
171171
<ClCompile Include="SerialPortWriterTest.cpp" />
172172
<ClCompile Include="SerialSetupTest.cpp" />
173+
<ClCompile Include="TerminalRedirectorBaseTest.cpp" />
173174
<ClCompile Include="UtilTest.cpp" />
174175
<ClCompile Include="WinAPIExceptionTest.cpp" />
175176
</ItemGroup>

SimpleComTest/SimpleComTest.vcxproj.filters

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
<ClCompile Include="LogWriterTest.cpp">
3737
<Filter>ソース ファイル</Filter>
3838
</ClCompile>
39+
<ClCompile Include="TerminalRedirectorBaseTest.cpp">
40+
<Filter>ソース ファイル</Filter>
41+
</ClCompile>
3942
</ItemGroup>
4043
<ItemGroup>
4144
<ClInclude Include="pch.h">
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
/*
2+
* Copyright (C) 2025, Yasumasa Suenaga
3+
*
4+
* This program is free software; you can redistribute it and/or
5+
* modify it under the terms of the GNU General Public License
6+
* as published by the Free Software Foundation; either version 2
7+
* of the License, or (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with this program; if not, write to the Free Software
16+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17+
* 02110-1301, USA.
18+
*/
19+
#include "pch.h"
20+
#include "CppUnitTest.h"
21+
22+
#include "TerminalRedirectorBase.h"
23+
24+
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
25+
26+
static constexpr DWORD stdin_redirector_result = 100;
27+
static constexpr DWORD stdout_redirector_result = 200;
28+
29+
static DWORD WINAPI RedirectorTestThreadEntry(_In_ LPVOID lpParameter) {
30+
return reinterpret_cast<DWORD>(lpParameter);
31+
}
32+
33+
namespace SimpleComTest
34+
{
35+
36+
class TestRedirector : public SimpleCom::TerminalRedirectorBase
37+
{
38+
public:
39+
TestRedirector() : SimpleCom::TerminalRedirectorBase(INVALID_HANDLE_VALUE) {}
40+
41+
virtual std::tuple<LPTHREAD_START_ROUTINE, LPVOID> GetStdInRedirector() override
42+
{
43+
return { &RedirectorTestThreadEntry, reinterpret_cast<LPVOID>(stdin_redirector_result) };
44+
}
45+
46+
virtual std::tuple<LPTHREAD_START_ROUTINE, LPVOID> GetStdOutRedirector() override
47+
{
48+
return { &RedirectorTestThreadEntry, reinterpret_cast<LPVOID>(stdout_redirector_result) };
49+
}
50+
51+
DWORD GetStdInRedirectorResult()
52+
{
53+
DWORD result;
54+
if (!GetExitCodeThread(_hThreadStdIn, &result)) {
55+
result = -1;
56+
}
57+
return result;
58+
}
59+
60+
DWORD GetStdOutRedirectorResult()
61+
{
62+
DWORD result;
63+
if (!GetExitCodeThread(_hThreadStdOut, &result)) {
64+
result = -1;
65+
}
66+
return result;
67+
}
68+
69+
};
70+
71+
TEST_CLASS(TerminalRedirectorBaseTest)
72+
{
73+
public:
74+
75+
TEST_METHOD(RedirectorTest)
76+
{
77+
TestRedirector redirector;
78+
redirector.StartRedirector();
79+
redirector.AwaitTermination();
80+
81+
Assert::AreEqual(stdin_redirector_result, redirector.GetStdInRedirectorResult());
82+
Assert::AreEqual(stdout_redirector_result, redirector.GetStdOutRedirectorResult());
83+
}
84+
85+
TEST_METHOD(ReattachableTest) {
86+
TestRedirector redirector;
87+
Assert::IsFalse(redirector.Reattachable());
88+
}
89+
90+
};
91+
92+
}

0 commit comments

Comments
 (0)