Index: /branches/egtra/ab5.0/abdev/ab-common.props
===================================================================
--- /branches/egtra/ab5.0/abdev/ab-common.props	(revision 817)
+++ /branches/egtra/ab5.0/abdev/ab-common.props	(revision 818)
@@ -22,4 +22,5 @@
       <PreprocessorDefinitions>WIN32;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1;_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <AdditionalOptions>/Zm150 %(AdditionalOptions)</AdditionalOptions>
+      <MinimalRebuild>false</MinimalRebuild>
     </ClCompile>
     <Link>
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 817)
+++ /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 817)
+++ /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 817)
+++ /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 817)
+++ /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>
Index: /branches/egtra/ab5.0/jenga/include/MyAssert.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/MyAssert.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/MyAssert.h	(revision 818)
@@ -1,2 +1,4 @@
+#include <string>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/Binary.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/Binary.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/Binary.h	(revision 818)
@@ -1,2 +1,5 @@
+#include <boost/serialization/serialization.hpp>
+#include <boost/serialization/split_member.hpp>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/BoostSerializationSupport.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/BoostSerializationSupport.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/BoostSerializationSupport.h	(revision 818)
@@ -1,2 +1,5 @@
+#include <iosfwd>
+#include <string>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/CmdLine.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/CmdLine.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/CmdLine.h	(revision 818)
@@ -1,2 +1,4 @@
+#include <string>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/Directory.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/Directory.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/Directory.h	(revision 818)
@@ -1,2 +1,4 @@
+#include <string>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/EasyToken.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/EasyToken.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/EasyToken.h	(revision 818)
@@ -1,2 +1,4 @@
+#include <string>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/Environment.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/Environment.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/Environment.h	(revision 818)
@@ -1,2 +1,6 @@
+#include <string>
+#include <windows.h>
+#include <shlobj.h>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/Exception.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/Exception.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/Exception.h	(revision 818)
@@ -1,2 +1,4 @@
+#include <string>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/File.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/File.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/File.h	(revision 818)
@@ -1,2 +1,5 @@
+#include <string>
+#include <Windows.h>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/FileSystem.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/FileSystem.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/FileSystem.h	(revision 818)
@@ -1,2 +1,4 @@
+#include <string>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/Hashmap.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/Hashmap.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/Hashmap.h	(revision 818)
@@ -1,3 +1,3 @@
-#pragma once
+#include <stdexcept>
 #include <unordered_set>
 #include <boost/range/algorithm.hpp>
@@ -5,4 +5,9 @@
 #include <boost/iterator/transform_iterator.hpp>
 #include <boost/cast.hpp>
+#include <boost/serialization/serialization.hpp>
+#include <boost/serialization/split_member.hpp>
+
+#pragma once
+
 
 namespace Jenga{
Index: /branches/egtra/ab5.0/jenga/include/common/Path.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/Path.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/Path.h	(revision 818)
@@ -1,2 +1,4 @@
+#include <string>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/String.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/String.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/String.h	(revision 818)
@@ -1,2 +1,5 @@
+#include <string>
+#include <vector>
+
 #pragma once
 
Index: /branches/egtra/ab5.0/jenga/include/common/VectorSupporter.h
===================================================================
--- /branches/egtra/ab5.0/jenga/include/common/VectorSupporter.h	(revision 817)
+++ /branches/egtra/ab5.0/jenga/include/common/VectorSupporter.h	(revision 818)
@@ -7,12 +7,5 @@
 template<class T> void EraseVectorItem( T &v, int index )
 {
-	T::iterator it = v.begin();
-	int i = 0;
-	while( i < index )
-	{
-		i ++;
-		it ++;
-	}
-	v.erase( it );
+	v.erase(v.begin() + index);
 }
 
