Index: branches/egtra/ab5.0/abdev/ab-test/TestMain.cpp
===================================================================
--- branches/egtra/ab5.0/abdev/ab-test/TestMain.cpp	(revision 818)
+++ branches/egtra/ab5.0/abdev/ab-test/TestMain.cpp	(revision 818)
@@ -0,0 +1,11 @@
+/**
+@file TestMain.cpp
+
+@brief BOOST_TEST_MAIN付きで<boost/test/unit_test.hpp>を読み込むためのファイル。
+
+このファイルはプリコンパイルドヘッダ(stdafx.h)を用いない設定でコンパイルする必要がある。
+なぜなら、stdafx.hではBOOST_TEST_MAINを定義しない状態で<boost/test/unit_test.hpp>をインクルードしているためである。
+*/
+
+#define BOOST_TEST_MAIN
+#include <boost/test/unit_test.hpp>
Index: branches/egtra/ab5.0/abdev/ab-test/ab-test.cpp
===================================================================
--- branches/egtra/ab5.0/abdev/ab-test/ab-test.cpp	(revision 811)
+++ branches/egtra/ab5.0/abdev/ab-test/ab-test.cpp	(revision 818)
@@ -1,12 +1,5 @@
 #include "stdafx.h"
 
-#include <cstdint>
-#include <cstring>
-
 #include <GdiPlus.h>
-
-#define BOOST_TEST_MAIN
-
-#include <boost/test/unit_test.hpp>
 
 #include <boost/preprocessor/cat.hpp>
@@ -19,4 +12,6 @@
 
 namespace abres = ActiveBasic::Resource;
+
+using boost::implicit_cast;
 
 struct HModuleDeleter
@@ -102,5 +97,5 @@
 
 	UniqueHModule hmodRes(::LoadLibraryExW((systemDir / name).wstring().c_str(), nullptr, LOAD_LIBRARY_AS_DATAFILE));
-	BOOST_CHECK(hmodRes != nullptr);
+	BOOST_REQUIRE_NE(hmodRes.get(), implicit_cast<HMODULE>(nullptr));
 	return hmodRes;
 }
Index: branches/egtra/ab5.0/abdev/ab-test/ab-test.vcxproj
===================================================================
--- branches/egtra/ab5.0/abdev/ab-test/ab-test.vcxproj	(revision 811)
+++ branches/egtra/ab5.0/abdev/ab-test/ab-test.vcxproj	(revision 818)
@@ -145,4 +145,5 @@
   <ItemGroup>
     <ClCompile Include="ab-test.cpp" />
+    <ClCompile Include="jenga.cpp" />
     <ClCompile Include="stdafx.cpp">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
@@ -151,6 +152,15 @@
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
     </ClCompile>
+    <ClCompile Include="TestMain.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\jenga\projects\jenga\jenga.vcxproj">
+      <Project>{f01805b6-65b4-4708-88f4-a5e07dea9fbd}</Project>
+    </ProjectReference>
     <ProjectReference Include="..\abdev-impl\abdev-impl.vcxproj">
       <Project>{58ff88a2-86bc-4480-95f4-71af693fef28}</Project>
Index: branches/egtra/ab5.0/abdev/ab-test/ab-test.vcxproj.filters
===================================================================
--- branches/egtra/ab5.0/abdev/ab-test/ab-test.vcxproj.filters	(revision 811)
+++ branches/egtra/ab5.0/abdev/ab-test/ab-test.vcxproj.filters	(revision 818)
@@ -30,4 +30,10 @@
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="jenga.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="TestMain.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>
Index: branches/egtra/ab5.0/abdev/ab-test/jenga.cpp
===================================================================
--- branches/egtra/ab5.0/abdev/ab-test/jenga.cpp	(revision 818)
+++ branches/egtra/ab5.0/abdev/ab-test/jenga.cpp	(revision 818)
@@ -0,0 +1,39 @@
+/**
+@file jenga.cpp
+
+@brief jengaプロジェクト内のコードに対するテスト。
+*/
+
+
+#include "stdafx.h"
+
+#include <locale>
+#include <jenga/include/jenga.h>
+
+using namespace Jenga::Common;
+
+/**
+@breif Jenga/Common/String.hの関数などに対するテスト。
+*/
+BOOST_AUTO_TEST_CASE( JengaCommonString )
+{
+	std::string s = "Dete koi dete koi ike no koi";
+	StringReplace(s, "koi", "ike");
+	BOOST_CHECK_EQUAL(s, "Dete ike dete ike ike no ike");
+	BOOST_CHECK_EQUAL(ToString(42), "42");
+	BOOST_CHECK_EQUAL(ToString(-7), "-7");
+	BOOST_CHECK_EQUAL(ToString(std::wstring(L"ABC123")), "ABC123");
+	BOOST_CHECK(ToWString(std::string("ABC123")) == L"ABC123");
+	BOOST_CHECK(IsIdentifierTopChar('a'));
+	BOOST_CHECK(IsIdentifierTopChar('z'));
+	BOOST_CHECK(IsIdentifierTopChar('A'));
+	BOOST_CHECK(IsIdentifierTopChar('Z'));
+	BOOST_CHECK(IsIdentifierTopChar('_'));
+	BOOST_CHECK(IsIdentifierChar('a'));
+	BOOST_CHECK(IsIdentifierChar('z'));
+	BOOST_CHECK(IsIdentifierChar('A'));
+	BOOST_CHECK(IsIdentifierChar('Z'));
+	BOOST_CHECK(IsIdentifierChar('_'));
+	BOOST_CHECK(IsIdentifierChar('0'));
+	BOOST_CHECK(IsIdentifierChar('9'));
+}
Index: branches/egtra/ab5.0/abdev/ab-test/stdafx.h
===================================================================
--- branches/egtra/ab5.0/abdev/ab-test/stdafx.h	(revision 811)
+++ branches/egtra/ab5.0/abdev/ab-test/stdafx.h	(revision 818)
@@ -7,7 +7,11 @@
 
 #include <memory>
-
-#include <boost/filesystem/path.hpp>
+#include <cstdint>
+#include <cstring>
 
 #include <windows.h>
 #include <tchar.h>
+
+#include <boost/filesystem/path.hpp>
+#include <boost/test/unit_test.hpp>
+#include <boost/implicit_cast.hpp>
