--- /dev/null
+Option Explicit\r
+\r
+' ***** \90Ý\92è\8fî\95ñ *****\r
+\r
+' \83o\83b\83N\83A\83b\83v\8c³\82Ì\83t\83H\83\8b\83_\81B\r
+Const gstrSourceFolderPath = "\\sse2f-fs\\83V\83X\83e\83\80\8aJ\94\95\94\8aÂ\8b«\8d\\92z"\r
+\r
+' \83o\83b\83N\83A\83b\83v\82Ì\8eí\97Þ\81B\r
+' "Full"...\8a®\91S\83o\83b\83N\83A\83b\83v\81B\r
+' "Different"...\8d·\95ª\83o\83b\83N\83A\83b\83v\81B\r
+' "Incremental"...\91\9d\95ª\83o\83b\83N\83A\83b\83v\81B\r
+Const gstrBackupType = "Full"\r
+\r
+' \83f\83o\83b\83O\81E\83\8d\83O\82ð\8fo\97Í\82·\82é\82©\82Ç\82¤\82©\81B\r
+' True...\83f\83o\83b\83O\81E\83\8d\83O\82ð\8fo\97Í\82·\82é(\90\84\8f§)\81B\r
+' False...\83f\83o\83b\83O\81E\83\8d\83O\82ð\8fo\97Í\82µ\82È\82¢\81B\r
+Const gblnDebugLog = True\r
+\r
+\r
+\r
+\r
+\r
+\r
+' ***** \8ed\97l *****\r
+\r
+' \83o\83b\83N\83A\83b\83v\81E\83X\83N\83\8a\83v\83g\81B\r
+' \8a®\91S\83o\83b\83N\83A\83b\83v(full backup)\81A\8d·\95ª\83o\83b\83N\83A\83b\83v(different backup)\81A\91\9d\95ª\83o\83b\83N\83A\83b\83v(incremental backup)\82ð\8ds\82¤\81B\r
+' \82à\82¿\82ë\82ñ\81A\95\9c\8c³(restore)\82à\8ds\82¦\82é\81B\r
+\r
+' \83o\83b\83N\83A\83b\83v\82ð\8ds\82¤\82Æ\81A\8eÀ\8dÛ\82Ì\83t\83@\83C\83\8b\81A\8by\82Ñ\83o\83b\83N\83A\83b\83v\8fî\95ñ\82ª\8dì\90¬\82³\82ê\82é\81B\r
+' \8a®\91S\83o\83b\83N\83A\83b\83v\82Ì\8fê\8d\87\81A\83o\83b\83N\83A\83b\83v\8fî\95ñ\82Í\83t\83@\83C\83\8b\91S\82Ä\82Ì\8fî\95ñ\82Æ\82È\82é\81B\r
+' \8d·\95ª\83o\83b\83N\83A\83b\83v\82Ì\8fê\8d\87\81A\83o\83b\83N\83A\83b\83v\8fî\95ñ\82Í\8aî\8f\80\93_\82Æ\82Ì\8d·\95ª\8fî\95ñ\82Æ\82È\82é\81B\r
+' \91\9d\95ª\83o\83b\83N\83A\83b\83v\82Ì\8fê\8d\87\81A\83o\83b\83N\83A\83b\83v\8fî\95ñ\82Í\91O\89ñ\82Æ\82Ì\8d·\95ª\8fî\95ñ\82Æ\82È\82é\81B\r
+' \8d·\95ª\8fî\95ñ\82Í\81A\82Ç\82Ì\82æ\82¤\82È\95Ï\8dX\82ª\82 \82Á\82½\82©\82Ì\82Ý\82ð\8bL\82·\81B\r
+' \83o\83b\83N\83A\83b\83v\8fî\95ñ\82Í\83t\83@\83C\83\8b\81E\83t\83H\83\8b\83_\96¼\82ð\95Û\8e\9d\82µ\81A\83p\83X\82Í\95Û\8e\9d\82µ\82È\82¢\81B\82±\82Ì\82½\82ß\81A\83o\83b\83N\83A\83b\83v\81E\83\\81[\83X\82Ì\8fê\8f\8a\82ª\95Ï\82í\82Á\82Ä\82à\91±\8ds\82·\82é\82±\82Æ\82ª\82Å\82«\82é\81B\r
+\r
+' \83t\83H\83\8b\83_\8d\\90¬\r
+' (\83\8a\83|\83W\83g\83\8a)\\r
+' +---bak.vbs\r
+' +---log.txt\r
+' +---rev\\r
+' +---rev.txt\r
+' +---1.xml\r
+' +---2.xml\r
+' +---1\\r
+' | +---(\83t\83@\83C\83\8b)\\r
+' +---2\\r
+' | +---(\83t\83@\83C\83\8b)\\r
+' ...\r
+\r
+' \8a®\91S\83o\83b\83N\83A\83b\83v\82Ì\93®\8dì\81B\r
+' \96\88\89ñ\81A\83o\83b\83N\83A\83b\83v\8c³\82Ì\91S\82Ä\82Ì\83t\83@\83C\83\8b\82ð\83R\83s\81[\82·\82é\81B\r
+\r
+' \8d·\95ª\83o\83b\83N\83A\83b\83v\82Ì\93®\8dì\81B\r
+' \8aî\8f\80\83\8a\83r\83W\83\87\83\93\82ª\8ew\92è\82³\82ê\82½\8fê\8d\87\81A\8aî\8f\80\83\8a\83r\83W\83\87\83\93\82Ì\83o\83b\83N\83A\83b\83v\8fî\95ñ\82Æ\82Ì\8d·\95ª\82ð\8eZ\8fo\82µ\81A\8d·\95ª\82Ì\83t\83@\83C\83\8b\82Ì\82Ý\82ð\83R\83s\81[\82·\82é\81B\r
+' \8aî\8f\80\83\8a\83r\83W\83\87\83\93\82Í\8a®\91S\83o\83b\83N\83A\83b\83v\82Ì\8fî\95ñ\82ð\8e\9d\82½\82È\82¯\82ê\82Î\82È\82ç\82È\82¢\81B\r
+' \8aî\8f\80\83\8a\83r\83W\83\87\83\93\82ª\8ew\92è\82³\82ê\82È\82¢\8fê\8d\87\81A\83\8a\83r\83W\83\87\83\93\82ð\82³\82©\82Ì\82Ú\82Á\82Ä\81A\91O\89ñ\82Ì\8a®\91S\83o\83b\83N\83A\83b\83v\82Æ\82Ì\8d·\95ª\82ð\83o\83b\83N\83A\83b\83v\82·\82é\81B\r
+' \91O\89ñ\82Ì\8a®\91S\83o\83b\83N\83A\83b\83v\82ª\8c©\82Â\82©\82ç\82È\82¢\8fê\8d\87(\82Â\82Ü\82è\81A\8f\89\82ß\82Ä\82Ì\83o\83b\83N\83A\83b\83v\82Ì\8fê\8d\87)\81A\8a®\91S\83o\83b\83N\83A\83b\83v\82ð\8ds\82¤\81B\r
+\r
+' \91\9d\95ª\83o\83b\83N\83A\83b\83v\82Ì\93®\8dì\81B\r
+' \91O\89ñ\82Ü\82Å\82Ì\8fî\95ñ\82Å\83o\83b\83N\83A\83b\83v\8fî\95ñ\82ð\8d\\92z\82µ\81A\82»\82ê\82Æ\83o\83b\83N\83A\83b\83v\8c³\82Æ\82Ì\8d·\95ª\82ð\83o\83b\83N\83A\83b\83v\82·\82é\81B\r
+' \82Â\82Ü\82è\81A\8fí\82É\91O\89ñ\82Æ\82Ì\8d·\95ª\82ð\83o\83b\83N\83A\83b\83v\82·\82é\81B\r
+' \91O\89ñ\82Ì\83o\83b\83N\83A\83b\83v\8fî\95ñ\82ð\8d\\92z\82Å\82«\82È\82¢\8fê\8d\87(\82Â\82Ü\82è\81A\8f\89\82ß\82Ä\82Ì\83o\83b\83N\83A\83b\83v\82Ì\8fê\8d\87)\81A\8a®\91S\83o\83b\83N\83A\83b\83v\82ð\8ds\82¤\81B\r
+\r
+' TODO \8d·\95ª\83o\83b\83N\83A\83b\83v\82ð\8eÀ\91\95\82µ\82Ä\82Ý\82é\81B\r
+' TODO \8f\9c\8aO\8ew\92è\82ð\82Å\82«\82é\82æ\82¤\82É\82·\82é\81B\r
+' TODO \8aú\8aÔ\82Å\83\8d\81[\83\8a\83\93\83O\82Å\82«\82é\82æ\82¤\82É\82·\82é\81B\r
+' TODO \83\8d\83O\82ð\90®\94õ\82·\82é\81B\r
+\r
+\r
+\r
+\r
+\r
+' ***** \83O\83\8d\81[\83o\83\8b\95Ï\90\94\81E\92è\90\94 *****\r
+\r
+Dim gfso\r
+Dim gfsoLogStream\r
+\r
+Const IOMode_ForAppending = 8\r
+Const IOMode_ForReading = 1\r
+Const IOMode_ForWriting = 2\r
+\r
+' ***** \8f\88\97\9d\8eÀ\8ds *****\r
+\r
+Call Backup()\r
+\r
+MsgBox "ok"\r
+\r
+Call WScript.Quit(0)\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+' ********************************************************************************\r
+' \83o\83b\83N\83A\83b\83v\r
+' ********************************************************************************\r
+\r
+Sub Backup()\r
+Set gfso = CreateObject("Scripting.FileSystemObject")\r
+Set gfsoLogStream = gfso.OpenTextFile(gfso.BuildPath(gfso.GetParentFolderName(WScript.ScriptFullName), "log.txt"), IOMode_ForAppending, True)\r
+\r
+Call StartFunction("Backup")\r
+ Dim strRepositoryFolderPath\r
+ Dim strRevisionRootFolderPath\r
+ Dim strRevisionFolderPath\r
+ Dim strRevisionTxtFilePath\r
+ Dim strRevisionDiffFilePath\r
+ Dim lngRevision\r
+ Dim lngOldRevision\r
+ Dim objFSInfo\r
+ Dim objOldFSInfo\r
+ Dim objDiffInfo\r
+ \r
+ Call WriteLog("[INFO]\83o\83b\83N\83A\83b\83v\82ð\8aJ\8en\82µ\82Ü\82·\81B")\r
+ \r
+ ' \8f\89\8aú\89»\81B\r
+ \r
+ Call WriteLog("[INFO]\8f\89\8aú\89»\82µ\82Ü\82·\81B\83t\83H\83\8b\83_\81A\83t\83@\83C\83\8b\82È\82Ç\82Ì\8dì\90¬\81A\90Ý\92è\82Ì\93Ç\82Ý\8d\9e\82Ý\82ð\8ds\82¢\82Ü\82·\81B")\r
+ \r
+ strRepositoryFolderPath = gfso.GetParentFolderName(WScript.ScriptFullName)\r
+ \r
+ strRevisionRootFolderPath = gfso.BuildPath(strRepositoryFolderPath, "rev")\r
+ If Not gfso.FolderExists(strRevisionRootFolderPath) Then\r
+ Call CreateFolder(strRevisionRootFolderPath)\r
+ End If\r
+ \r
+ strRevisionTxtFilePath = gfso.BuildPath(strRevisionRootFolderPath, "rev.txt")\r
+ If Not gfso.FileExists(strRevisionTxtFilePath) Then\r
+ Call WriteFile(strRevisionTxtFilePath, "0")\r
+ End If\r
+ \r
+ lngRevision = CLng(ReadFile(strRevisionTxtFilePath)) + 1\r
+ \r
+ strRevisionFolderPath = gfso.BuildPath(strRevisionRootFolderPath, CStr(lngRevision))\r
+ Call CreateFolder(strRevisionFolderPath)\r
+ \r
+ strRevisionDiffFilePath = gfso.BuildPath(strRevisionRootFolderPath, CStr(lngRevision) & ".xml")\r
+ \r
+ lngOldRevision = GetOldRevision(strRepositoryFolderPath, lngRevision)\r
+ \r
+ Call WriteLog("[INFO]\83o\83b\83N\83A\83b\83v\8c³\83t\83H\83\8b\83_=" & gstrSourceFolderPath)\r
+ Call WriteLog("[INFO]\83o\83b\83N\83A\83b\83v\82Ì\8eí\97Þ=" & gstrBackupType)\r
+ Call WriteLog("[INFO]\83\8a\83|\83W\83g\83\8a\81E\83t\83H\83\8b\83_=" & strRepositoryFolderPath)\r
+ Call WriteLog("[INFO]\83\8a\83r\83W\83\87\83\93\81E\83\8b\81[\83g\81E\83t\83H\83\8b\83_=" & strRevisionRootFolderPath)\r
+ Call WriteLog("[INFO]\83\8a\83r\83W\83\87\83\93\81E\83t\83H\83\8b\83_=" & strRevisionFolderPath)\r
+ Call WriteLog("[INFO]\83\8a\83r\83W\83\87\83\93\90Ý\92è\83t\83@\83C\83\8b=" & strRevisionTxtFilePath)\r
+ Call WriteLog("[INFO]\83\8a\83r\83W\83\87\83\93\8d·\95ª\83t\83@\83C\83\8b=" & strRevisionDiffFilePath)\r
+ Call WriteLog("[INFO]\8c»\8dÝ\82Ì\83\8a\83r\83W\83\87\83\93=" & lngRevision)\r
+ Call WriteLog("[INFO]\94ä\8ar\8c³\82Ì\83\8a\83r\83W\83\87\83\93=" & lngOldRevision)\r
+ \r
+ ' \83o\83b\83N\83A\83b\83v\81B\r
+ Call WriteLog("[INFO]\94ä\8ar\8c³\83\8a\83r\83W\83\87\83\93\82Ì\83t\83@\83C\83\8b\81E\83V\83X\83e\83\80\8fî\95ñ\82ð\8d\\92z\82µ\82Ü\82·\81B[\94ä\8ar\8c³\82Ì\83\8a\83r\83W\83\87\83\93=" & lngOldRevision & "]")\r
+ \r
+ Set objOldFSInfo = BuildFileSystemInfoFromRevision(strRepositoryFolderPath, lngOldRevision)\r
+ \r
+ Call WriteLog("[INFO]\83o\83b\83N\83A\83b\83v\8c³\83t\83H\83\8b\83_\82Ì\83t\83@\83C\83\8b\81E\83V\83X\83e\83\80\8fî\95ñ\82ð\8d\\92z\82µ\82Ü\82·\81B[\83o\83b\83N\83A\83b\83v\8c³\83t\83H\83\8b\83_=" & gstrSourceFolderPath & ", \8c»\8dÝ\82Ì\83\8a\83r\83W\83\87\83\93=" & lngRevision & "]")\r
+ \r
+ Set objFSInfo = New FileSystemInfo\r
+ Call objFSInfo.BuildFromFolderPath(gstrSourceFolderPath, lngRevision)\r
+ \r
+ Call WriteLog("[INFO]\94ä\8ar\8c³\83\8a\83r\83W\83\87\83\93\82Æ\83o\83b\83N\83A\83b\83v\8c³\83t\83H\83\8b\83_\82Ì\83t\83@\83C\83\8b\81E\83V\83X\83e\83\80\8fî\95ñ\82Ì\8d·\95ª\8fî\95ñ\82ð\8d\\92z\82µ\82Ü\82·\81B")\r
+ \r
+ Set objDiffInfo = New DiffInfo\r
+ Call objDiffInfo.BuildFromFileSystemInfo(objOldFSInfo, objFSInfo)\r
+ \r
+ Call WriteLog("[INFO]\8d·\95ª\8fî\95ñ\82ð\83t\83@\83C\83\8b\82É\8f\91\82«\8d\9e\82Ý\82Ü\82·\81B[\8d·\95ª\8fî\95ñ\83t\83@\83C\83\8b=" & strRevisionDiffFilePath & "]")\r
+ \r
+ Call objDiffInfo.ToXmlFile(strRevisionDiffFilePath)\r
+ \r
+ Call WriteLog("[INFO]\8d·\95ª\8fî\95ñ\82ð\8c³\82É\81A\83o\83b\83N\83A\83b\83v\8c³\83t\83H\83\8b\83_\82©\82ç\83\8a\83r\83W\83\87\83\93\81E\83t\83H\83\8b\83_\82É\83t\83@\83C\83\8b\82ð\83R\83s\81[\82µ\82Ü\82·\81B[\83o\83b\83N\83A\83b\83v\8c³\83t\83H\83\8b\83_=" & gstrSourceFolderPath & ", \83\8a\83r\83W\83\87\83\93\81E\83t\83H\83\8b\83_=" & strRevisionFolderPath & "]")\r
+ \r
+ Call objDiffInfo.Backup(gstrSourceFolderPath, strRevisionFolderPath)\r
+ \r
+ ' \8fI\97¹\81B\r
+ Call WriteLog("[INFO]\8c»\8dÝ\82Ì\83\8a\83r\83W\83\87\83\93\82ð\83\8a\83r\83W\83\87\83\93\90Ý\92è\83t\83@\83C\83\8b\82É\8f\91\82«\8d\9e\82Ý\82Ü\82·\81B[\83\8a\83r\83W\83\87\83\93\90Ý\92è\83t\83@\83C\83\8b=" & strRevisionTxtFilePath & "]")\r
+ \r
+ Call WriteFile(strRevisionTxtFilePath, lngRevision)\r
+ \r
+ Call WriteLog("[INFO]\83o\83b\83N\83A\83b\83v\82ª\8a®\97¹\82µ\82Ü\82µ\82½\81B")\r
+Call EndFunction("Backup")\r
+\r
+Call gfsoLogStream.Close()\r
+End Sub\r
+\r
+Function GetOldRevision(strRepositoryFolderPath, lngRevision)\r
+Call StartFunction("GetOldRevision")\r
+ If gstrBackupType = "Full" Then\r
+ GetOldRevision = 0\r
+ ElseIf gstrBackupType = "Different" Then\r
+ ' TODO \91O\89ñ\82Ì\8a®\91S\83o\83b\83N\83A\83b\83v\82Ì\83\8a\83r\83W\83\87\83\93\82ð\95Ô\82·\81B\r
+ GetOldRevision = 0\r
+ ElseIf gstrBackupType = "Incremental" Then\r
+ GetOldRevision = lngRevision - 1\r
+ Else\r
+ Call Err.Raise(1, "bak.vbs", "\94F\8e¯\82Å\82«\82È\82¢\83o\83b\83N\83A\83b\83v\82Ì\8eí\97Þ\82Å\82·\81B[" & gstrBackupType & "]")\r
+ End If\r
+Call EndFunction("GetOldRevision")\r
+End Function\r
+\r
+Function BuildFileSystemInfoFromRevision(strRepositoryFolderPath, lngRevision)\r
+Call StartFunction("BuildFileSystemInfoFromRevision")\r
+ Dim objFSInfo, objDiffInfo\r
+ \r
+ If lngRevision = 0 Then\r
+ Set objFSInfo = New FileSystemInfo\r
+ Call objFSInfo.InitializeFolderInfo()\r
+ \r
+ Set BuildFileSystemInfoFromRevision = objFSInfo\r
+ Else\r
+ Set objDiffInfo = New DiffInfo\r
+ Call objDiffInfo.BuildFromXmlFile(gfso.BuildPath(strRepositoryFolderPath, "rev\" & CStr(lngRevision) & ".xml"))\r
+ \r
+ Set objFSInfo = BuildFileSystemInfoFromRevision(strRepositoryFolderPath, objDiffInfo.OldFileSystemInfo.Revision)\r
+ \r
+ Call objDiffInfo.Merge(objFSInfo)\r
+ \r
+ objFSInfo.Revision = lngRevision\r
+ \r
+ Set BuildFileSystemInfoFromRevision = objFSInfo\r
+ End If\r
+Call EndFunction("BuildFileSystemInfoFromRevision")\r
+End Function\r
+\r
+' \83t\83@\83C\83\8b(\8by\82Ñ\83t\83H\83\8b\83_)\8fî\95ñ\82ð\88µ\82¢\82Ü\82·\81B\r
+Class FileSystemInfo\r
+ Public Name ' String\8c^\81B\83t\83@\83C\83\8b\96¼\81B\83p\83X\82Å\82Í\82È\82¢\81B\r
+ Public Attributes ' Long\8c^\81B\91®\90«\81B\r
+ Public DateCreated ' Date\8c^\81B\8dì\90¬\93ú\8e\9e\81B\r
+ Public DateLastModified ' Date\8c^\81B\8dÅ\8fI\8dX\90V\93ú\8e\9e\81B\r
+ Public Size ' Long\8c^\81B\83t\83@\83C\83\8b\81E\83T\83C\83Y\81B\r
+ Public FileType ' String\8c^\81B\83I\83u\83W\83F\83N\83g\82Ì\8eí\97Þ\81B\82±\82Ì\83I\83u\83W\83F\83N\83g\82ª\83t\83@\83C\83\8b\82Ì\8fê\8d\87\82Í"File"\81A\83t\83H\83\8b\83_\82Ì\8fê\8d\87\82Í"Folder"\81B\r
+ Public Revision ' Long\8c^\81B\83o\83b\83N\83A\83b\83v\8aÇ\97\9d\82É\82¨\82¯\82é\83\8a\83r\83W\83\87\83\93\94Ô\8d\86\81B\r
+ Public Children ' Dictionary\8c^\81B\8eq\83I\83u\83W\83F\83N\83g\82ð\8ai\94[\82·\82é\81B\83L\81[\82ÍName\81B\r
+ \r
+ Private Sub Class_Initialize()\r
+ Call StartFunction("FileSystemInfo.Class_Initialize")\r
+ Name = ""\r
+ Attributes = 0\r
+ DateCreated = CDate("1900/1/1 00:00:00")\r
+ DateLastModified = CDate("1900/1/1 00:00:00")\r
+ Size = 0\r
+ FileType = ""\r
+ Revision = 0\r
+ Set Children = Nothing\r
+ Call EndFunction("FileSystemInfo.Class_Initialize")\r
+ End Sub\r
+ \r
+ Public Sub InitializeFolderInfo()\r
+ Call StartFunction("FileSystemInfo.InitializeFolderInfo")\r
+ Name = ""\r
+ Attributes = 0\r
+ DateCreated = CDate("1900/1/1 00:00:00")\r
+ DateLastModified = CDate("1900/1/1 00:00:00")\r
+ Size = 0\r
+ FileType = "Folder"\r
+ Revision = 0\r
+ Set Children = New Dictionary\r
+ Call EndFunction("FileSystemInfo.Class_Initialize")\r
+ End Sub\r
+ \r
+ Public Sub BuildFromFileSystemObject(fsoItem, lngRevision)\r
+ Call StartFunction("FileSystemInfo.BuildFromFileSystemObject")\r
+ Dim fsoChildItem, objChildFSInfo\r
+ \r
+ Name = fsoItem.Name\r
+ If TypeName(fsoItem) = "Folder" Then\r
+ If Not fsoItem.IsRootFolder Then\r
+ Attributes = fsoItem.Attributes\r
+ DateCreated = fsoItem.DateCreated\r
+ DateLastModified = fsoItem.DateLastModified\r
+ End If\r
+ Else\r
+ Attributes = fsoItem.Attributes\r
+ DateCreated = fsoItem.DateCreated\r
+ DateLastModified = fsoItem.DateLastModified\r
+ End If\r
+ \r
+ Revision = lngRevision\r
+ \r
+ If TypeName(fsoItem) = "File" Then\r
+ Size = fsoItem.Size\r
+ FileType = "File"\r
+ \r
+ Set Children = Nothing\r
+ Else\r
+ Size = 0\r
+ FileType = "Folder"\r
+ \r
+ Set Children = New Dictionary\r
+ \r
+ For Each fsoChildItem In fsoItem.Files\r
+ Set objChildFSInfo = New FileSystemInfo\r
+ Call objChildFSInfo.BuildFromFileSystemObject(fsoChildItem, lngRevision)\r
+ Set Children.Item(objChildFSInfo.Name) = objChildFSInfo\r
+ Next\r
+ \r
+ For Each fsoChildItem In fsoItem.SubFolders\r
+ Set objChildFSInfo = New FileSystemInfo\r
+ Call objChildFSInfo.BuildFromFileSystemObject(fsoChildItem, lngRevision)\r
+ Set Children.Item(objChildFSInfo.Name) = objChildFSInfo\r
+ Next\r
+ \r
+ Call Children.Sort(New PrimitiveKeyComparator)\r
+ End If\r
+ Call EndFunction("FileSystemInfo.BuildFromFileSystemObject")\r
+ End Sub\r
+ \r
+ Public Sub BuildFromFolderPath(strFolderPath, lngRevision)\r
+ Call StartFunction("FileSystemInfo.BuildFromFolderPath")\r
+ Call BuildFromFileSystemObject(gfso.GetFolder(strFolderPath), lngRevision)\r
+ Call EndFunction("FileSystemInfo.BuildFromFolderPath")\r
+ End Sub\r
+ \r
+ Public Sub BuildFromXmlNode(xmlNode)\r
+ Call StartFunction("FileSystemInfo.BuildFromXmlNode")\r
+ Dim xmlChildNode\r
+ Dim objChildFSInfo\r
+ \r
+ Name = xmlNode.attributes.getNamedItem("name").nodeValue\r
+ Attributes = CLng(xmlNode.attributes.getNamedItem("attributes").nodeValue)\r
+ DateCreated = CDate(xmlNode.attributes.getNamedItem("dateCreated").nodeValue)\r
+ DateLastModified = CDate(xmlNode.attributes.getNamedItem("dateLastModified").nodeValue)\r
+ Size = CLng(xmlNode.attributes.getNamedItem("size").nodeValue)\r
+ FileType = xmlNode.attributes.getNamedItem("fileType").nodeValue\r
+ Revision = CLng(xmlNode.attributes.getNamedItem("revision").nodeValue)\r
+ \r
+ If FileType = "File" Then\r
+ Set Children = Nothing\r
+ Else\r
+ Set Children = New Dictionary\r
+ \r
+ For Each xmlChildNode In xmlNode.selectNodes("item")\r
+ Set objChildFSInfo = New FileSystemInfo\r
+ Call objChildFSInfo.BuildFromXmlNode(xmlChildNode)\r
+ Set Children.Item(objChildFSInfo.Name) = objChildFSInfo\r
+ Next\r
+ \r
+ Call Children.Sort(New PrimitiveKeyComparator)\r
+ End If\r
+ Call EndFunction("FileSystemInfo.BuildFromXmlNode")\r
+ End Sub\r
+ \r
+ Public Sub BuildFromXmlDocument(xmlDocument)\r
+ Call StartFunction("FileSystemInfo.BuildFromXmlDocument")\r
+ Dim xmlNode, xmlChildNode, objChildFSInfo\r
+ \r
+ Set xmlNode = xmlDocument.selectSingleNode("source")\r
+ \r
+ FileType = "Folder"\r
+ Revision = CLng(xmlNode.attributes.getNamedItem("revision").nodeValue)\r
+ \r
+ Set Children = New Dictionary\r
+ \r
+ For Each xmlChildNode In xmlNode.selectNodes("item")\r
+ Set objChildFSInfo = New FileSystemInfo\r
+ Call objChildFSInfo.BuildFromXmlNode(xmlChildNode)\r
+ Set Children.Item(objChildFSInfo.Name) = objChildFSInfo\r
+ Next\r
+ Call EndFunction("FileSystemInfo.BuildFromXmlDocument")\r
+ End Sub\r
+ \r
+ Public Sub BuildFromXmlFile(strFilePath)\r
+ Call StartFunction("FileSystemInfo.BuildFromXmlFile")\r
+ Dim xmlDocument\r
+ \r
+ Set xmlDocument = CreateObject("MSXML2.DOMDocument")\r
+ Call xmlDocument.load(strFilePath)\r
+ \r
+ Call BuildFromXmlDocument(xmlDocument)\r
+ Call EndFunction("FileSystemInfo.BuildFromXmlFile")\r
+ End Sub\r
+ \r
+ Public Function ToXmlNode(xmlDocument)\r
+ Call StartFunction("FileSystemInfo.ToXmlNode")\r
+ Dim xmlNode, objChildFSInfo\r
+ \r
+ Set xmlNode = xmlDocument.createElement("item")\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("name"))\r
+ xmlNode.attributes.getNamedItem("name").nodeValue = Name\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("attributes"))\r
+ xmlNode.attributes.getNamedItem("attributes").nodeValue = Attributes\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("dateCreated"))\r
+ xmlNode.attributes.getNamedItem("dateCreated").nodeValue = DateCreated\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("dateLastModified"))\r
+ xmlNode.attributes.getNamedItem("dateLastModified").nodeValue = DateLastModified\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("size"))\r
+ xmlNode.attributes.getNamedItem("size").nodeValue = Size\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("fileType"))\r
+ xmlNode.attributes.getNamedItem("fileType").nodeValue = FileType\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("revision"))\r
+ xmlNode.attributes.getNamedItem("revision").nodeValue = Revision\r
+ \r
+ If FileType = "Folder" Then\r
+ For Each objChildFSInfo In Children.Values\r
+ Call xmlNode.appendChild(objChildFSInfo.ToXmlNode(xmlDocument))\r
+ Next\r
+ End If\r
+ \r
+ Set ToXmlNode = xmlNode\r
+ Call EndFunction("FileSystemInfo.ToXmlNode")\r
+ End Function\r
+ \r
+ Public Function ToXmlDocument()\r
+ Call StartFunction("FileSystemInfo.ToXmlDocument")\r
+ Dim xmlDocument\r
+ Dim xmlNode\r
+ Dim objChildFSInfo\r
+ \r
+ Set xmlDocument = CreateObject("MSXML2.DOMDocument")\r
+ \r
+ Set xmlNode = xmlDocument.createElement("source")\r
+ Call xmlDocument.appendChild(xmlNode)\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("revision"))\r
+ xmlNode.attributes.getNamedItem("revision").nodeValue = Revision\r
+ \r
+ For Each objChildFSInfo In Children.Values\r
+ Call xmlNode.appendChild(objChildFSInfo.ToXmlNode(xmlDocument))\r
+ Next\r
+ \r
+ Set ToXmlDocument = xmlDocument\r
+ Call EndFunction("FileSystemInfo.ToXmlDocument")\r
+ End Function\r
+ \r
+ Public Sub ToXmlFile(strFilePath)\r
+ Call StartFunction("FileSystemInfo.ToXmlFile")\r
+ Call ToXmlDocument().save(strFilePath)\r
+ Call EndFunction("FileSystemInfo.ToXmlFile")\r
+ End Sub\r
+ \r
+ Public Function IsEqualProperty(objFSInfo)\r
+ Call StartFunction("FileSystemInfo.IsEqualProperty")\r
+ IsEqualProperty = (Name = objFSInfo.Name _\r
+ And Attributes = objFSInfo.Attributes _\r
+ And DateCreated = objFSInfo.DateCreated _\r
+ And DateLastModified = objFSInfo.DateLastModified _\r
+ And Size = objFSInfo.Size _\r
+ And FileType = objFSInfo.FileType)\r
+ Call EndFunction("FileSystemInfo.IsEqualProperty")\r
+ End Function\r
+End Class\r
+\r
+Class DiffInfo\r
+ Public Name ' String\8c^\81B\83t\83@\83C\83\8b\96¼\81B\83p\83X\82Å\82Í\82È\82¢\81B\r
+ Public Status ' String\8c^\81B\8d·\95ª\8fó\8bµ\81B\90V\8bK\82Í"Create"\81A\8dX\90V\82Í"Update"\81A\8dí\8f\9c\82Í"Delete"\81A\83t\83H\83\8b\83_\82Ì\8fê\8d\87\82Ì\82Ý\95Ï\8dX\96³\82µ\82Ì\8fê\8d\87\82Í""\81B\r
+ Public FileType ' String\8c^\81B\83I\83u\83W\83F\83N\83g\82Ì\8eí\97Þ\81B\82±\82Ì\83I\83u\83W\83F\83N\83g\82ª\83t\83@\83C\83\8b\82Ì\8fê\8d\87\82Í"File"\81A\83t\83H\83\8b\83_\82Ì\8fê\8d\87\82Í"Folder"\81B\r
+ Public OldFileSystemInfo ' FileSystemInfo\8c^\81B\8b\8c\83t\83@\83C\83\8b\8fî\95ñ\81B\r
+ Public NewFileSystemInfo ' FileSystemInfo\8c^\81B\90V\83t\83@\83C\83\8b\8fî\95ñ\81B\r
+ Public Children ' Collection\8c^\81B\8eq\8d·\95ª\8fî\95ñ\81B\93¯\88ê\96¼\82Å\8dí\8f\9c\81A\8dì\90¬\82ð\8ds\82¤\8fê\8d\87\82ª\82 \82é\82½\82ß\81ADictionary\8c^\82Å\82Í\82È\82¢\81B\r
+ \r
+ Private Sub Class_Initialize()\r
+ Call StartFunction("DiffInfo.Class_Initialize")\r
+ Name = ""\r
+ Status = ""\r
+ Set OldFileSystemInfo = Nothing\r
+ Set NewFileSystemInfo = Nothing\r
+ Set Children = Nothing\r
+ Call EndFunction("DiffInfo.Class_Initialize")\r
+ End Sub\r
+ \r
+ Public Sub BuildFromFileSystemInfo(objOldFileSystemInfo, objNewFileSystemInfo)\r
+ Call StartFunction("DiffInfo.BuildFromFileSystemInfo")\r
+ Dim strName, dicName\r
+ Dim objChildOldFSInfo, objChildNewFSInfo\r
+ \r
+ Set OldFileSystemInfo = objOldFileSystemInfo\r
+ Set NewFileSystemInfo = objNewFileSystemInfo\r
+ \r
+ If OldFileSystemInfo Is Nothing And Not NewFileSystemInfo Is Nothing Then\r
+ Name = NewFileSystemInfo.Name\r
+ Status = "Create"\r
+ FileType = NewFileSystemInfo.FileType\r
+ \r
+ If FileType = "Folder" Then\r
+ Set Children = New Collection\r
+ For Each objChildNewFSInfo In NewFileSystemInfo.Children.Values\r
+ Call AddChildDiffInfo(Nothing, objChildNewFSInfo)\r
+ Next\r
+ \r
+ Call Children.Sort(New DiffInfoComparator)\r
+ End If\r
+ ElseIf Not OldFileSystemInfo Is Nothing And NewFileSystemInfo Is Nothing Then\r
+ Name = OldFileSystemInfo.Name\r
+ Status = "Delete"\r
+ FileType = OldFileSystemInfo.FileType\r
+ Else\r
+ Name = NewFileSystemInfo.Name\r
+ If OldFileSystemInfo.IsEqualProperty(NewFileSystemInfo) Then\r
+ Status = ""\r
+ Else\r
+ Status = "Update"\r
+ End If\r
+ FileType = NewFileSystemInfo.FileType\r
+ \r
+ If FileType = "Folder" Then\r
+ Set dicName = CreateObject("Scripting.Dictionary")\r
+ For Each strName In OldFileSystemInfo.Children.Keys\r
+ dicName(strName) = strName\r
+ Next\r
+ For Each strName In NewFileSystemInfo.Children.Keys\r
+ dicName(strName) = strName\r
+ Next\r
+ \r
+ Set Children = New Collection\r
+ For Each strName In dicName.Keys\r
+ If OldFileSystemInfo.Children.ExistKey(strName) Then\r
+ Set objChildOldFSInfo = OldFileSystemInfo.Children.Item(strName)\r
+ Else\r
+ Set objChildOldFSInfo = Nothing\r
+ End If\r
+ If NewFileSystemInfo.Children.ExistKey(strName) Then\r
+ Set objChildNewFSInfo = NewFileSystemInfo.Children.Item(strName)\r
+ Else\r
+ Set objChildNewFSInfo = Nothing\r
+ End If\r
+ \r
+ If objChildOldFSInfo Is Nothing Or objChildNewFSInfo Is Nothing Then\r
+ Call AddChildDiffInfo(objChildOldFSInfo, objChildNewFSInfo)\r
+ ElseIf objChildOldFSInfo.FileType = objChildNewFSInfo.FileType Then\r
+ Call AddChildDiffInfo(objChildOldFSInfo, objChildNewFSInfo)\r
+ Else\r
+ Call AddChildDiffInfo(objChildOldFSInfo, Nothing)\r
+ Call AddChildDiffInfo(Nothing, objChildNewFSInfo)\r
+ End If\r
+ Next\r
+ \r
+ Call Children.Sort(New DiffInfoComparator)\r
+ End If\r
+ End If\r
+ Call EndFunction("DiffInfo.BuildFromFileSystemInfo")\r
+ End Sub\r
+ \r
+ Private Sub AddChildDiffInfo(objOldFSInfo, objNewFSInfo)\r
+ Call StartFunction("DiffInfo.AddChildDiffInfo")\r
+ Dim objChildDiffInfo\r
+ \r
+ Set objChildDiffInfo = New DiffInfo\r
+ Call objChildDiffInfo.BuildFromFileSystemInfo(objOldFSInfo, objNewFSInfo)\r
+ If objChildDiffInfo.Status <> "" Then\r
+ Call Children.Add(objChildDiffInfo)\r
+ ElseIf Not objChildDiffInfo.Children Is Nothing Then\r
+ If objChildDiffInfo.Children.Count > 0 Then\r
+ Call Children.Add(objChildDiffInfo)\r
+ End If\r
+ End If\r
+ Call EndFunction("DiffInfo.AddChildDiffInfo")\r
+ End Sub\r
+ \r
+ Public Sub BuildFromXmlNode(xmlNode)\r
+ Call StartFunction("DiffInfo.BuildFromXmlNode")\r
+ Dim xmlChildNode, objChildDiffInfo\r
+ \r
+ Name = xmlNode.attributes.getNamedItem("name").nodeValue\r
+ Status = xmlNode.attributes.getNamedItem("status").nodeValue\r
+ FileType = xmlNode.attributes.getNamedItem("fileType").nodeValue\r
+ \r
+ If Status = "Delete" Or Status = "Update" Or Status = "" Then\r
+ Set OldFileSystemInfo = New FileSystemInfo\r
+ \r
+ OldFileSystemInfo.Name = Name\r
+ OldFileSystemInfo.Attributes = CLng(xmlNode.attributes.getNamedItem("oldAttributes").nodeValue)\r
+ OldFileSystemInfo.DateCreated = CDate(xmlNode.attributes.getNamedItem("oldDateCreated").nodeValue)\r
+ OldFileSystemInfo.DateLastModified = CDate(xmlNode.attributes.getNamedItem("oldDateLastModified").nodeValue)\r
+ OldFileSystemInfo.Size = CLng(xmlNode.attributes.getNamedItem("oldSize").nodeValue)\r
+ OldFileSystemInfo.FileType = FileType\r
+ OldFileSystemInfo.Revision = CLng(xmlNode.attributes.getNamedItem("oldRevision").nodeValue)\r
+ End If\r
+ \r
+ If Status = "Create" Or Status = "Update" Or Status = "" Then\r
+ Set NewFileSystemInfo = New FileSystemInfo\r
+ \r
+ NewFileSystemInfo.Name = Name\r
+ NewFileSystemInfo.Attributes = CLng(xmlNode.attributes.getNamedItem("newAttributes").nodeValue)\r
+ NewFileSystemInfo.DateCreated = CDate(xmlNode.attributes.getNamedItem("newDateCreated").nodeValue)\r
+ NewFileSystemInfo.DateLastModified = CDate(xmlNode.attributes.getNamedItem("newDateLastModified").nodeValue)\r
+ NewFileSystemInfo.Size = CLng(xmlNode.attributes.getNamedItem("newSize").nodeValue)\r
+ NewFileSystemInfo.FileType = FileType\r
+ NewFileSystemInfo.Revision = CLng(xmlNode.attributes.getNamedItem("newRevision").nodeValue)\r
+ End If\r
+ \r
+ If FileType = "Folder" And Status <> "Delete" Then\r
+ Set Children = New Collection\r
+ For Each xmlChildNode In xmlNode.selectNodes("item")\r
+ Set objChildDiffInfo = New DiffInfo\r
+ Call objChildDiffInfo.BuildFromXmlNode(xmlChildNode)\r
+ Call Children.Add(objChildDiffInfo)\r
+ Next\r
+ \r
+ Call Children.Sort(New DiffInfoComparator)\r
+ End If\r
+ Call EndFunction("DiffInfo.BuildFromXmlNode")\r
+ End Sub\r
+ \r
+ Public Sub BuildFromXmlDocument(xmlDocument)\r
+ Call StartFunction("DiffInfo.BuildFromXmlDocument")\r
+ Dim xmlNode, xmlChildNode, objChildDiffInfo\r
+ \r
+ Set xmlNode = xmlDocument.selectSingleNode("diff")\r
+ \r
+ Set OldFileSystemInfo = New FileSystemInfo\r
+ \r
+ OldFileSystemInfo.FileType = "Folder"\r
+ OldFileSystemInfo.Revision = CLng(xmlNode.attributes.getNamedItem("oldRevision").nodeValue)\r
+ \r
+ Set NewFileSystemInfo = New FileSystemInfo\r
+ \r
+ NewFileSystemInfo.FileType = "Folder"\r
+ NewFileSystemInfo.Revision = CLng(xmlNode.attributes.getNamedItem("newRevision").nodeValue)\r
+ \r
+ Set Children = New Collection\r
+ For Each xmlChildNode In xmlNode.selectNodes("item")\r
+ Set objChildDiffInfo = New DiffInfo\r
+ Call objChildDiffInfo.BuildFromXmlNode(xmlChildNode)\r
+ Call Children.Add(objChildDiffInfo)\r
+ Next\r
+ Call EndFunction("DiffInfo.BuildFromXmlDocument")\r
+ End Sub\r
+ \r
+ Public Sub BuildFromXmlFile(strPath)\r
+ Call StartFunction("DiffInfo.BuildFromXmlFile")\r
+ Dim xmlDocument\r
+ \r
+ Set xmlDocument = CreateObject("MSXML2.DOMDocument")\r
+ Call xmlDocument.load(strPath)\r
+ \r
+ Call BuildFromXmlDocument(xmlDocument)\r
+ Call EndFunction("DiffInfo.BuildFromXmlFile")\r
+ End Sub\r
+ \r
+ Public Function ToXmlNode(xmlDocument)\r
+ Call StartFunction("DiffInfo.ToXmlNode")\r
+ Dim xmlNode\r
+ Dim objChildDiffInfo\r
+ \r
+ Set xmlNode = xmlDocument.createElement("item")\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("name"))\r
+ xmlNode.attributes.getNamedItem("name").nodeValue = Name\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("status"))\r
+ xmlNode.attributes.getNamedItem("status").nodeValue = Status\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("fileType"))\r
+ xmlNode.attributes.getNamedItem("fileType").nodeValue = FileType\r
+ \r
+ If Not OldFileSystemInfo Is Nothing Then\r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("oldAttributes"))\r
+ xmlNode.attributes.getNamedItem("oldAttributes").nodeValue = OldFileSystemInfo.Attributes\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("oldDateCreated"))\r
+ xmlNode.attributes.getNamedItem("oldDateCreated").nodeValue = OldFileSystemInfo.DateCreated\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("oldDateLastModified"))\r
+ xmlNode.attributes.getNamedItem("oldDateLastModified").nodeValue = OldFileSystemInfo.DateLastModified\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("oldSize"))\r
+ xmlNode.attributes.getNamedItem("oldSize").nodeValue = OldFileSystemInfo.Size\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("oldRevision"))\r
+ xmlNode.attributes.getNamedItem("oldRevision").nodeValue = OldFileSystemInfo.Revision\r
+ End If\r
+ \r
+ If Not NewFileSystemInfo Is Nothing Then\r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("newAttributes"))\r
+ xmlNode.attributes.getNamedItem("newAttributes").nodeValue = NewFileSystemInfo.Attributes\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("newDateCreated"))\r
+ xmlNode.attributes.getNamedItem("newDateCreated").nodeValue = NewFileSystemInfo.DateCreated\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("newDateLastModified"))\r
+ xmlNode.attributes.getNamedItem("newDateLastModified").nodeValue = NewFileSystemInfo.DateLastModified\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("newSize"))\r
+ xmlNode.attributes.getNamedItem("newSize").nodeValue = NewFileSystemInfo.Size\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("newRevision"))\r
+ xmlNode.attributes.getNamedItem("newRevision").nodeValue = NewFileSystemInfo.Revision\r
+ End If\r
+ \r
+ If Not Children Is Nothing Then\r
+ For Each objChildDiffInfo In Children.Items\r
+ Call xmlNode.appendChild(objChildDiffInfo.ToXmlNode(xmlDocument))\r
+ Next\r
+ End If\r
+ \r
+ Set ToXmlNode = xmlNode\r
+ Call EndFunction("DiffInfo.ToXmlNode")\r
+ End Function\r
+ \r
+ Public Function ToXmlDocument()\r
+ Call StartFunction("DiffInfo.ToXmlDocument")\r
+ Dim xmlDocument, xmlNode\r
+ Dim objChildDiffInfo\r
+ \r
+ Set xmlDocument = CreateObject("MSXML2.DOMDocument")\r
+ \r
+ Set xmlNode = xmlDocument.createElement("diff")\r
+ Call xmlDocument.appendChild(xmlNode)\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("oldRevision"))\r
+ xmlNode.attributes.getNamedItem("oldRevision").nodeValue = OldFileSystemInfo.Revision\r
+ \r
+ Call xmlNode.attributes.setNamedItem(xmlDocument.createAttribute("newRevision"))\r
+ xmlNode.attributes.getNamedItem("newRevision").nodeValue = NewFileSystemInfo.Revision\r
+ \r
+ For Each objChildDiffInfo In Children.Items\r
+ Call xmlNode.appendChild(objChildDiffInfo.ToXmlNode(xmlDocument))\r
+ Next\r
+ \r
+ Set ToXmlDocument = xmlDocument\r
+ Call EndFunction("DiffInfo.ToXmlDocument")\r
+ End Function\r
+ \r
+ Public Function ToXmlFile(strFilePath)\r
+ Call StartFunction("DiffInfo.ToXmlFile")\r
+ Call ToXmlDocument().save(strFilePath)\r
+ Call EndFunction("DiffInfo.ToXmlFile")\r
+ End Function\r
+ \r
+ Public Sub Backup(strSourceFolderPath, strDestinationFolderPath)\r
+ Call StartFunction("DiffInfo.Backup")\r
+ Dim objChildDiffInfo\r
+ Dim strSrcPath, strDstPath\r
+ \r
+ For Each objChildDiffInfo In Children.Items\r
+ If objChildDiffInfo.Status = "Create" Or objChildDiffInfo.Status = "Update" Or objChildDiffInfo.Status = "" Then\r
+ strSrcPath = gfso.BuildPath(strSourceFolderPath, objChildDiffInfo.Name)\r
+ strDstPath = gfso.BuildPath(strDestinationFolderPath, objChildDiffInfo.Name)\r
+ \r
+ If objChildDiffInfo.FileType = "File" Then\r
+ Call CopyFile(strSrcPath, strDstPath)\r
+ Else\r
+ Call CreateFolder(strDstPath)\r
+ Call objChildDiffInfo.Backup(strSrcPath, strDstPath)\r
+ End If\r
+ End If\r
+ Next\r
+ Call EndFunction("DiffInfo.Backup")\r
+ End Sub\r
+ \r
+ Public Sub Merge(objFileSystemInfo)\r
+ Call StartFunction("DiffInfo.Merge")\r
+ Dim objChildDiffInfo\r
+ \r
+ For Each objChildDiffInfo In Children.Items\r
+ If objChildDiffInfo.Status = "" Then\r
+ Call objChildDiffInfo.Merge(objFileSystemInfo.Children.Item(objChildDiffInfo.Name))\r
+ End If\r
+ Next\r
+ \r
+ For Each objChildDiffInfo In Children.Items\r
+ If objChildDiffInfo.Status = "Delete" Then\r
+ Call objFileSystemInfo.Children.Remove(objChildDiffInfo.Name)\r
+ End If\r
+ Next\r
+ \r
+ For Each objChildDiffInfo In Children.Items\r
+ If objChildDiffInfo.Status = "Update" Then\r
+ If objChildDiffInfo.FileType = "File" Then\r
+ Set objFileSystemInfo.Children.Item(objChildDiffInfo.Name) = objChildDiffInfo.NewFileSystemInfo\r
+ Else\r
+ Set objChildDiffInfo.NewFileSystemInfo.Children = objFileSystemInfo.Children(objChildDiffInfo.Name).Children\r
+ Set objFileSystemInfo.Children.Item(objChildDiffInfo.Name) = objChildDiffInfo.NewFileSystemInfo\r
+ Call objChildDiffInfo.Merge(objChildDiffInfo.NewFileSystemInfo)\r
+ End If\r
+ End If\r
+ Next\r
+ \r
+ For Each objChildDiffInfo In Children.Items\r
+ If objChildDiffInfo.Status = "Create" Then\r
+ If objChildDiffInfo.FileType = "File" Then\r
+ Set objFileSystemInfo.Children.Item(objChildDiffInfo.Name) = objChildDiffInfo.NewFileSystemInfo\r
+ Else\r
+ Set objChildDiffInfo.NewFileSystemInfo.Children = New Dictionary\r
+ Set objFileSystemInfo.Children.Item(objChildDiffInfo.Name) = objChildDiffInfo.NewFileSystemInfo\r
+ Call objChildDiffInfo.Merge(objChildDiffInfo.NewFileSystemInfo)\r
+ End If\r
+ End If\r
+ Next\r
+ \r
+ If objFileSystemInfo.FileType = "Folder" Then\r
+ Call objFileSystemInfo.Children.Sort(New PrimitiveKeyComparator)\r
+ End If\r
+ Call EndFunction("DiffInfo.Merge")\r
+ End Sub\r
+End Class\r
+\r
+Class DiffInfoComparator\r
+ Public Function Compare(objDiffInfo1, objDiffInfo2)\r
+ Call StartFunction("DiffInfoComparator.Compare")\r
+ Dim intStatus1, intStatus2\r
+ \r
+ intStatus1 = StatusToInteger(objDiffInfo1.Status)\r
+ intStatus2 = StatusToInteger(objDiffInfo2.Status)\r
+ \r
+ If intStatus1 > intStatus2 Then\r
+ Compare = 1\r
+ ElseIf intStatus1 < intStatus2 Then\r
+ Compare = -1\r
+ ElseIf objDiffInfo1.Name > objDiffInfo2.Name Then\r
+ Compare = 1\r
+ ElseIf objDiffInfo1.Name < objDiffInfo2.Name Then\r
+ Compare = -1\r
+ Else\r
+ Compare = 0\r
+ End If\r
+ Call EndFunction("DiffInfoComparator.Compare")\r
+ End Function\r
+ \r
+ Private Function StatusToInteger(strStatus)\r
+ Call StartFunction("DiffInfoComparator.StatusToInteger")\r
+ If strStatus = "Create" Then\r
+ StatusToInteger = 0\r
+ ElseIf strStatus = "Update" Then\r
+ StatusToInteger = 1\r
+ ElseIf strStatus = "Delete" Then\r
+ StatusToInteger = 2\r
+ Else\r
+ StatusToInteger = 3\r
+ End If\r
+ Call EndFunction("DiffInfoComparator.StatusToInteger")\r
+ End Function\r
+End Class\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+' ********************************************************************************\r
+' \83t\83@\83C\83\8bI/O\r
+' ********************************************************************************\r
+\r
+Sub WriteFile(strFilePath, strText)\r
+Call StartFunction("WriteFile,strFilePath=" & strFilePath & ",Len(strText)=" & Len(strText))\r
+ Dim fsoStream\r
+ \r
+ Set fsoStream = gfso.OpenTextFile(strFilePath, IOMode_ForWriting, True)\r
+ Call fsoStream.Write(strText)\r
+ Call fsoStream.Close()\r
+Call EndFunction("WriteFile")\r
+End Sub\r
+\r
+Sub AppendFile(strFilePath, strText)\r
+Call StartFunction("AppendFile,strFilePath=" & strFilePath & ",Len(strText)=" & Len(strText))\r
+ Dim fsoStream\r
+ \r
+ Set fsoStream = gfso.OpenTextFile(strFilePath, IOMode_ForAppending, True)\r
+ Call fsoStream.Write(strText)\r
+ Call fsoStream.Close()\r
+Call EndFunction("AppendFile")\r
+End Sub\r
+\r
+Function ReadFile(strFilePath)\r
+Call StartFunction("ReadFile,strFilePath=" & strFilePath)\r
+ Dim fsoStream\r
+ \r
+ Set fsoStream = gfso.OpenTextFile(strFilePath)\r
+ ReadFile = fsoStream.ReadAll()\r
+ Call fsoStream.Close()\r
+Call StartFunction("ReadFile,Len=" & Len(ReadFile))\r
+End Function\r
+\r
+Sub CopyFile(strSourceFilePath, strDestinationFilePath)\r
+Call StartFunction("CopyFile,strSourceFilePath=" & strSourceFilePath & ",strDestinationFilePath=" & strDestinationFilePath)\r
+ Call gfso.CopyFile(strSourceFilePath, strDestinationFilePath)\r
+Call EndFunction("CopyFile")\r
+End Sub\r
+\r
+Function CreateFolder(strFolderPath)\r
+Call StartFunction("CreateFolder,strFolderPath=" & strFolderPath)\r
+ Set CreateFolder = gfso.CreateFolder(strFolderPath)\r
+Call EndFunction("CreateFolder")\r
+End Function\r
+\r
+' ***** \83\8d\83O\8fo\97Í *****\r
+\r
+Sub WriteLog(strText)\r
+ If Not gfsoLogStream Is Nothing And Not IsEmpty(gfsoLogStream) Then\r
+ Call gfsoLogStream.Write(GetNowToString() & "," & strText & vbCrLf)\r
+ End If\r
+End Sub\r
+\r
+Sub StartFunction(strFunctionName)\r
+ If Not gfsoLogStream Is Nothing And Not IsEmpty(gfsoLogStream) And gblnDebugLog Then\r
+ Call gfsoLogStream.Write(GetNowToString() & ",[StartFunction]" & strFunctionName & vbCrLf)\r
+ End If\r
+End Sub\r
+\r
+Sub EndFunction(strFunctionName)\r
+ If Not gfsoLogStream Is Nothing And Not IsEmpty(gfsoLogStream) And gblnDebugLog Then\r
+ Call gfsoLogStream.Write(GetNowToString() & ",[EndFunction]" & strFunctionName & vbCrLf)\r
+ End If\r
+End Sub\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+' ********************************************************************************\r
+' \95¶\8e\9a\97ñ\91\80\8dì\r
+' ********************************************************************************\r
+\r
+Function GetNowToString()\r
+ GetNowToString = Year(Now()) & "-" _\r
+ & Right("00" & Month(Now()), 2) & "-" _\r
+ & Right("00" & Day(Now()), 2) & " " _\r
+ & Right("00" & Hour(Now()), 2) & ":" _\r
+ & Right("00" & Minute(Now()), 2) & ":" _\r
+ & Right("00" & Second(Now()), 2)\r
+End Function\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+' ********************************************************************************\r
+' \83R\83\8c\83N\83V\83\87\83\93\r
+' ********************************************************************************\r
+\r
+Class Collection\r
+ Private paryItem\r
+ \r
+ Private Sub Class_Initialize()\r
+ ReDim paryItem(-1)\r
+ End Sub\r
+ \r
+ Public Property Get Count()\r
+ Count = UBound(paryItem) + 1\r
+ End Property\r
+ \r
+ Public Property Get Item(intIndex)\r
+ If IsObject(paryItem(intIndex)) Then\r
+ Set Item = paryItem(intIndex)\r
+ Else\r
+ Item = paryItem(intIndex)\r
+ End If\r
+ End Property\r
+ \r
+ Public Property Let Item(intIndex, varItem)\r
+ paryItem(intIndex) = varItem\r
+ End Property\r
+ \r
+ Public Property Set Item(intIndex, varItem)\r
+ Set paryItem(intIndex) = varItem\r
+ End Property\r
+ \r
+ Public Property Get Items()\r
+ Items = CopyArray(paryItem)\r
+ End Property\r
+ \r
+ Public Sub Add(varItem)\r
+ Call AddArray(paryItem, varItem)\r
+ End Sub\r
+ \r
+ Public Function Remove(intIndex)\r
+ If IsObject(paryItem(intIndex)) Then\r
+ Set Remove = paryItem(intIndex)\r
+ Else\r
+ Remove = paryItem(intIndex)\r
+ End If\r
+ \r
+ Call RemoveArray(paryItem, intIndex)\r
+ End Function\r
+ \r
+ Public Function RemoveLast()\r
+ Call Remove(Count - 1)\r
+ End Function\r
+ \r
+ Public Function Exist(varItem)\r
+ Exist = (FindItem(varItem) > -1)\r
+ End Function\r
+ \r
+ Public Function FindItem(varItem)\r
+ Dim intIndex\r
+ \r
+ FindItem = -1\r
+ \r
+ For intIndex = 0 To UBound(paryItem)\r
+ If paryItem(intIndex) = varItem Then\r
+ FindItem = intIndex\r
+ Exit For\r
+ End If\r
+ Next\r
+ End Function\r
+ \r
+ Public Sub Sort(objComparator)\r
+ Call SortArray(paryItem, objComparator)\r
+ End Sub\r
+ \r
+ Public Function Copy()\r
+ Dim col, varItem\r
+ \r
+ Set col = New Collection\r
+ \r
+ For Each varItem In paryItem\r
+ Call col.Add(varItem)\r
+ Next\r
+ \r
+ Set Copy = col\r
+ End Function\r
+ \r
+ Public Function IsEqual(col)\r
+ Dim intIndex\r
+ \r
+ If TypeName(col) <> "Collection" Then\r
+ IsEqual = False\r
+ Exit Function\r
+ ElseIf col.Count <> Count Then\r
+ IsEqual = False\r
+ Exit Function\r
+ Else\r
+ For intIndex = 0 To Count - 1\r
+ If Item(intIndex) <> col.Item(intIndex) Then\r
+ IsEqual = False\r
+ Exit Function\r
+ End If\r
+ Next\r
+ End If\r
+ \r
+ IsEqual = True\r
+ End Function\r
+End Class\r
+\r
+Class Dictionary\r
+ Private paryItem\r
+ \r
+ Private Sub Class_Initialize()\r
+ ReDim paryItem(-1)\r
+ End Sub\r
+ \r
+ Public Property Get Count()\r
+ Count = UBound(paryItem) + 1\r
+ End Property\r
+ \r
+ Public Property Set Item(varKey, varValue)\r
+ Call SetItem(varKey, varValue)\r
+ End Property\r
+ \r
+ Public Property Let Item(varKey, varValue)\r
+ Call SetItem(varKey, varValue)\r
+ End Property\r
+ \r
+ Public Property Get Item(varKey)\r
+ Dim intIndex\r
+ \r
+ intIndex = FindIndex(varKey)\r
+ \r
+ If intIndex <> -1 Then\r
+ If IsObject(paryItem(intIndex).Value) Then\r
+ Set Item = paryItem(intIndex).Value\r
+ Else\r
+ Item = paryItem(intIndex).Value\r
+ End If\r
+ Else\r
+ Item = Empty\r
+ End If\r
+ End Property\r
+ \r
+ Public Property Get Items()\r
+ Items = CopyArray(paryItem)\r
+ End Property\r
+ \r
+ Public Property Get Keys()\r
+ Dim aryKey, intIndex\r
+ \r
+ ReDim aryKey(UBound(paryItem))\r
+ \r
+ For intIndex = 0 To UBound(paryItem)\r
+ If IsObject(paryItem(intIndex).Key) Then\r
+ Set aryKey(intIndex) = paryItem(intIndex).Key\r
+ Else\r
+ aryKey(intIndex) = paryItem(intIndex).Key\r
+ End If\r
+ Next\r
+ \r
+ Keys = aryKey\r
+ End Property\r
+ \r
+ Public Property Get Values()\r
+ Dim aryValue, intIndex\r
+ \r
+ ReDim aryValue(UBound(paryItem))\r
+ \r
+ For intIndex = 0 To UBound(paryItem)\r
+ If IsObject(paryItem(intIndex).Value) Then\r
+ Set aryValue(intIndex) = paryItem(intIndex).Value\r
+ Else\r
+ aryValue(intIndex) = paryItem(intIndex).Value\r
+ End If\r
+ Next\r
+ \r
+ Values = aryValue\r
+ End Property\r
+ \r
+ Private Sub SetItem(varKey, varValue)\r
+ Dim intIndex\r
+ Dim objDicItem\r
+ \r
+ intIndex = FindIndex(varKey)\r
+ \r
+ If intIndex <> -1 Then\r
+ If IsObject(varValue) Then\r
+ Set paryItem(intIndex).Value = varValue\r
+ Else\r
+ paryItem(intIndex).Value = varValue\r
+ End If\r
+ Else\r
+ Set objDicItem = New DictionaryItem\r
+ If IsObject(varKey) Then\r
+ Set objDicItem.Key = varKey\r
+ Else\r
+ objDicItem.Key = varKey\r
+ End If\r
+ If IsObject(varValue) Then\r
+ Set objDicItem.Value = varValue\r
+ Else\r
+ objDicItem.Value = varValue\r
+ End If\r
+ \r
+ Call AddArray(paryItem, objDicItem)\r
+ End If\r
+ End Sub\r
+ \r
+ Public Function Remove(varKey)\r
+ Dim intIndex\r
+ \r
+ intIndex = FindIndex(varKey)\r
+ \r
+ If IsObject(paryItem(intIndex).Value) Then\r
+ Set Remove = paryItem(intIndex).Value\r
+ Else\r
+ Remove = paryItem(intIndex).Value\r
+ End If\r
+ \r
+ Call RemoveArray(paryItem, intIndex)\r
+ End Function\r
+ \r
+ Private Function FindIndex(varKey)\r
+ Dim intIndex\r
+ \r
+ FindIndex = -1\r
+ \r
+ For intIndex = 0 To UBound(paryItem)\r
+ If paryItem(intIndex).Key = varKey Then\r
+ FindIndex = intIndex\r
+ End If\r
+ Next\r
+ End Function\r
+ \r
+ Public Sub Sort(objComparator)\r
+ Call SortArray(paryItem, objComparator)\r
+ End Sub\r
+ \r
+ Public Function Copy()\r
+ Dim dic, varKey\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ For Each varKey In Keys\r
+ If IsObject(Item(varKey)) Then\r
+ Set dic.Item(varKey) = Item(varKey)\r
+ Else\r
+ dic.Item(varKey) = Item(varKey)\r
+ End If\r
+ Next\r
+ \r
+ Set Copy = dic\r
+ End Function\r
+ \r
+ Public Function ExistKey(varKey)\r
+ ExistKey = (FindIndex(varKey) <> -1)\r
+ End Function\r
+ \r
+ Public Function ExistValue(varValue)\r
+ Dim var\r
+ \r
+ ExistValue = False\r
+ \r
+ For Each var In Values\r
+ If var = varValue Then\r
+ ExistValue = True\r
+ Exit For\r
+ End If\r
+ Next\r
+ End Function\r
+ \r
+ Public Function IsEqual(dic)\r
+ Dim varKey\r
+ \r
+ If TypeName(dic) <> "Dictionary" Then\r
+ IsEqual = False\r
+ Exit Function\r
+ ElseIf dic.Count <> Count Then\r
+ IsEqual = False\r
+ Exit Function\r
+ Else\r
+ For Each varKey In dic.Keys\r
+ If dic.Item(varKey) <> Item(varKey) Then\r
+ IsEqual = False\r
+ Exit Function\r
+ End If\r
+ Next\r
+ End If\r
+ \r
+ IsEqual = True\r
+ End Function\r
+End Class\r
+\r
+Class DictionaryItem\r
+ Public Key\r
+ Public Value\r
+End Class\r
+\r
+Sub AddArray(ary, var)\r
+ ReDim Preserve ary(UBound(ary) + 1)\r
+ \r
+ If IsObject(var) Then\r
+ Set ary(UBound(ary)) = var\r
+ Else\r
+ ary(UBound(ary)) = var\r
+ End If\r
+End Sub\r
+\r
+Sub RemoveArray(ary, intRemoveIndex)\r
+ Dim intIndex\r
+ \r
+ For intIndex = intRemoveIndex + 1 To UBound(ary)\r
+ If IsObject(ary(intIndex)) Then\r
+ Set ary(intIndex - 1) = ary(intIndex)\r
+ Else\r
+ ary(intIndex - 1) = ary(intIndex)\r
+ End If\r
+ Next\r
+ \r
+ ReDim Preserve ary(UBound(ary) - 1)\r
+End Sub\r
+\r
+Function CopyArray(ary)\r
+ Dim aryDst\r
+ ReDim aryDst(UBound(ary))\r
+ Dim intIndex\r
+ \r
+ For intIndex = 0 To UBound(ary)\r
+ If IsObject(ary(intIndex)) Then\r
+ Set aryDst(intIndex) = ary(intIndex)\r
+ Else\r
+ aryDst(intIndex) = ary(intIndex)\r
+ End If\r
+ Next\r
+ \r
+ CopyArray = aryDst\r
+End Function\r
+\r
+Sub SortArray(ary, objComparator)\r
+ Dim intIndex, intIndex2\r
+ Dim varTemp\r
+ \r
+ For intIndex = 0 To UBound(ary) - 1\r
+ For intIndex2 = intIndex + 1 To UBound(ary)\r
+ If objComparator.Compare(ary(intIndex), ary(intIndex2)) > 0 Then\r
+ If IsObject(ary(intIndex)) Then\r
+ Set varTemp = ary(intIndex)\r
+ Else\r
+ varTemp = ary(intIndex)\r
+ End If\r
+ \r
+ If IsObject(ary(intIndex2)) Then\r
+ Set ary(intIndex) = ary(intIndex2)\r
+ Else\r
+ ary(intIndex) = ary(intIndex2)\r
+ End If\r
+ \r
+ If IsObject(varTemp) Then\r
+ Set ary(intIndex2) = varTemp\r
+ Else\r
+ ary(intIndex2) = varTemp\r
+ End If\r
+ End If\r
+ Next\r
+ Next\r
+End Sub\r
+\r
+Class PrimitiveComparator\r
+ Public Function Compare(var1, var2)\r
+ If var1 > var2 Then\r
+ Compare = 1\r
+ ElseIf var1 < var2 Then\r
+ Compare = -1\r
+ Else\r
+ Compare = 0\r
+ End If\r
+ End Function\r
+End Class\r
+\r
+Class PrimitiveKeyComparator\r
+ Public Function Compare(dicItem1, dicItem2)\r
+ If dicItem1.Key > dicItem2.Key Then\r
+ Compare = 1\r
+ ElseIf dicItem1.Key < dicItem2.Key Then\r
+ Compare = -1\r
+ Else\r
+ Compare = 0\r
+ End If\r
+ End Function\r
+End Class\r
+\r
+' ***** \83e\83X\83g *****\r
+\r
+Sub AssertEqual(var1, var2, strMessage)\r
+ If var1 <> var2 Then\r
+ Call Err.Raise(1, "\83e\83X\83g\8e¸\94s", strMessage)\r
+ End If\r
+End Sub\r
+\r
+Sub TestAddArray()\r
+ Dim ary\r
+ \r
+ ReDim ary(2)\r
+ \r
+ ary(0) = "foo"\r
+ ary(1) = "bar"\r
+ ary(2) = "boo"\r
+ \r
+ Call AddArray(ary, "hoge")\r
+ \r
+ Call AssertEqual(UBound(ary), 3, "TestAddArray - \94z\97ñ\82Ì\92·\82³\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(ary(0), "foo", "TestAddArray - \94z\97ñ\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(1), "bar", "TestAddArray - \94z\97ñ\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(2), "boo", "TestAddArray - \94z\97ñ\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(3), "hoge", "TestAddArray - \94z\97ñ\82Ì\97v\91f3\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestRemoveArray()\r
+ Dim ary\r
+ \r
+ ReDim ary(2)\r
+ \r
+ ary(0) = "foo"\r
+ ary(1) = "bar"\r
+ ary(2) = "boo"\r
+ \r
+ Call RemoveArray(ary, 1)\r
+ \r
+ Call AssertEqual(UBound(ary), 1, "TestRemoveArray - \94z\97ñ\82Ì\92·\82³\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(ary(0), "foo", "TestRemoveArray - \94z\97ñ\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(1), "boo", "TestRemoveArray - \94z\97ñ\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCopyArray()\r
+ Dim ary, aryDst\r
+ \r
+ ReDim ary(2)\r
+ \r
+ ary(0) = "foo"\r
+ ary(1) = "bar"\r
+ ary(2) = "boo"\r
+ \r
+ aryDst = CopyArray(ary)\r
+ \r
+ Call AssertEqual(UBound(aryDst), 2, "TestCopyArray - \94z\97ñ\82Ì\92·\82³\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(aryDst(0), "foo", "TestCopyArray - \94z\97ñ\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(aryDst(1), "bar", "TestCopyArray - \94z\97ñ\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(aryDst(2), "boo", "TestCopyArray - \94z\97ñ\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestSortArray()\r
+ Dim ary\r
+ \r
+ ReDim ary(2)\r
+ \r
+ ary(0) = "foo"\r
+ ary(1) = "bar"\r
+ ary(2) = "boo"\r
+ \r
+ Call SortArray(ary, New PrimitiveComparator)\r
+ \r
+ Call AssertEqual(UBound(ary), 2, "TestSortArray - \94z\97ñ\82Ì\92·\82³\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(ary(0), "bar", "TestSortArray - \94z\97ñ\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(1), "boo", "TestSortArray - \94z\97ñ\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(2), "foo", "TestSortArray - \94z\97ñ\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionClassInitialize()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call AssertEqual(col.Count, 0, "TestCollectionCount - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionAdd()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionAdd - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Item(0), "foo", "TestCollectionAdd - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(1), "bar", "TestCollectionAdd - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(2), "boo", "TestCollectionAdd - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionRemove()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.Remove(1), "bar", "TestCollectionRemove - \8dí\8f\9c\82µ\82½\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Count, 2, "TestCollectionRemove - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Item(0), "foo", "TestCollectionRemove - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(1), "boo", "TestCollectionRemove - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionItems()\r
+ Dim col, var, intIndex\r
+ \r
+ Set col = New Collection\r
+ \r
+ For Each var In col.Items\r
+ Call AssertEqual(True, False, "TestCollectionItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ Next\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionItems - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each var In col.Items\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(var, "foo", "TestCollectionItems - \97ñ\8b\93\82³\82ê\82½\92l(0)\82ª\88Ù\82È\82é\81B")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(var, "bar", "TestCollectionItems - \97ñ\8b\93\82³\82ê\82½\92l(1)\82ª\88Ù\82È\82é\81B")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(var, "boo", "TestCollectionItems - \97ñ\8b\93\82³\82ê\82½\92l(2)\82ª\88Ù\82È\82é\81B")\r
+ Else\r
+ Call AssertEqual(True, False, "TestCollectionItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Sub TestCollectionSort()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call col.Sort(New PrimitiveComparator)\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionSort - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Item(0), "bar", "TestCollectionSort - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(1), "boo", "TestCollectionSort - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(2), "foo", "TestCollectionSort - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionCopy()\r
+ Dim col, colDst\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Set colDst = col.Copy()\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Item(0), "foo", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(1), "bar", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(2), "boo", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(colDst.Count, 3, "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(colDst.Item(0), "foo", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(colDst.Item(1), "bar", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(colDst.Item(2), "boo", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call colDst.Add("hoge")\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(colDst.Count, 4, "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionExist()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.Exist("bar"), True, "TestCollectionExist - \91¶\8dÝ\94»\92è\82ª\8aÔ\88á\82¦\82Ä\82¢\82é(True)\81B")\r
+ Call AssertEqual(col.Exist("hoge"), False, "TestCollectionExist - \91¶\8dÝ\94»\92è\82ª\8aÔ\88á\82¦\82Ä\82¢\82é(False)\81B")\r
+End Sub\r
+\r
+Sub TestCollectionFindItem()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.FindItem("bar"), 1, "TestCollectionFindItem - \97v\91f\82Ì\8c\9f\8dõ\8c\8b\89Ê\82ª\88Ù\82È\82é(1)\81B")\r
+ Call AssertEqual(col.FindItem("hoge"), -1, "TestCollectionFindItem - \97v\91f\82Ì\8c\9f\8dõ\8c\8b\89Ê\82ª\88Ù\82È\82é(-1)\81B")\r
+End Sub\r
+\r
+Sub TestCollectionIsEqual()\r
+ Dim col1, col2\r
+ \r
+ Set col1 = New Collection\r
+ \r
+ Call col1.Add("foo")\r
+ Call col1.Add("bar")\r
+ Call col1.Add("boo")\r
+ \r
+ Set col2 = New Collection\r
+ \r
+ Call col2.Add("foo")\r
+ Call col2.Add("bar")\r
+ Call col2.Add("boo")\r
+ \r
+ Call AssertEqual(col1.IsEqual(col2), True, "TestCollectionIsEqual - \93\99\89¿\94»\92è\82ª\88Ù\82È\82é\81B(True)")\r
+ \r
+ Call col2.Add("hoge")\r
+ \r
+ Call AssertEqual(col1.IsEqual(col2), False, "TestCollectionIsEqual - \93\99\89¿\94»\92è\82ª\88Ù\82È\82é\81B(False)")\r
+End Sub\r
+\r
+Public Sub TestDictionaryClassInitialize()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ Call AssertEqual(dic.Count, 0, "TestDictionaryInitialize - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Public Sub TestDictionaryItem()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic.Count, 3, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Item("foo"), "\82Ó\81[", "TestDictionaryItem - \97v\91f(foo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("bar"), "\82Î\81[", "TestDictionaryItem - \97v\91f(bar)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("boo"), "\82Ô\81[", "TestDictionaryItem - \97v\91f(boo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Item("hoge"), Empty, "TestDictionaryItem - \91¶\8dÝ\82µ\82È\82¢\97v\91f\82Ì\92l\82ªEmpty\82Å\82Í\82È\82¢\81B")\r
+End Sub\r
+\r
+Public Sub TestDictionaryRemove()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic.Remove("bar"), "\82Î\81[", "TestDictionaryRemove - \8dí\8f\9c\82µ\82½\97v\91f\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Count, 2, "TestDictionaryRemove - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Item("foo"), "\82Ó\81[", "TestDictionaryItem - \97v\91f(foo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("boo"), "\82Ô\81[", "TestDictionaryItem - \97v\91f(boo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Public Sub TestDictionaryItems()\r
+ Dim dic, varItem, intIndex\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ For Each varItem In dic.Items\r
+ Call AssertEqual(True, False, "TestDictionaryItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ Next\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each varItem In dic.Items\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(varItem.Key, "foo", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(0)")\r
+ Call AssertEqual(varItem.Value, "\82Ó\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(0)")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(varItem.Key, "bar", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(1)")\r
+ Call AssertEqual(varItem.Value, "\82Î\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(1)")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(varItem.Key, "boo", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(2)")\r
+ Call AssertEqual(varItem.Value, "\82Ô\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(2)")\r
+ Else\r
+ Call AssertEqual(True, False, "TestDictionaryItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Public Sub TestDictionaryKeys()\r
+ Dim dic, varKey, intIndex\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ For Each varKey In dic.Keys\r
+ Call AssertEqual(True, False, "TestDictionaryKeys - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ Next\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each varKey In dic.Keys\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(varKey, "foo", "TestDictionaryKeys - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(0)")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(varKey, "bar", "TestDictionaryKeys - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(1)")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(varKey, "boo", "TestDictionaryKeys - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(2)")\r
+ Else\r
+ Call AssertEqual(True, False, "TestDictionaryKeys - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Public Sub TestDictionaryValues()\r
+ Dim dic, varValue, intIndex\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ For Each varValue In dic.Values\r
+ Call AssertEqual(True, False, "TestDictionaryValues - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ Next\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each varValue In dic.Values\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(varValue, "\82Ó\81[", "TestDictionaryValues - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(0)")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(varValue, "\82Î\81[", "TestDictionaryValues - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(1)")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(varValue, "\82Ô\81[", "TestDictionaryValues - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(2)")\r
+ Else\r
+ Call AssertEqual(True, False, "TestDictionaryValues - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Public Sub TestDictionarySort()\r
+ Dim dic, varItem, intIndex\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call dic.Sort(New PrimitiveKeyComparator)\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each varItem In dic.Items\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(varItem.Key, "bar", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(0)")\r
+ Call AssertEqual(varItem.Value, "\82Î\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(0)")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(varItem.Key, "boo", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(1)")\r
+ Call AssertEqual(varItem.Value, "\82Ô\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(1)")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(varItem.Key, "foo", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(2)")\r
+ Call AssertEqual(varItem.Value, "\82Ó\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(2)")\r
+ Else\r
+ Call AssertEqual(True, False, "TestDictionaryItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Public Sub TestDictionaryCopy()\r
+ Dim dic, dic2\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Set dic2 = dic.Copy()\r
+ \r
+ Call AssertEqual(dic.Count, 3, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Item("foo"), "\82Ó\81[", "TestDictionaryItem - \97v\91f(foo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("bar"), "\82Î\81[", "TestDictionaryItem - \97v\91f(bar)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("boo"), "\82Ô\81[", "TestDictionaryItem - \97v\91f(boo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic2.Count, 3, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic2.Item("foo"), "\82Ó\81[", "TestDictionaryItem - \97v\91f(foo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic2.Item("bar"), "\82Î\81[", "TestDictionaryItem - \97v\91f(bar)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic2.Item("boo"), "\82Ô\81[", "TestDictionaryItem - \97v\91f(boo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ dic2.Item("hoge") = "\82Ù\82°"\r
+ \r
+ Call AssertEqual(dic.Count, 3, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic2.Count, 4, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Public Sub TestDictionaryExistKey()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic.ExistKey("foo"), True, "TestDictionaryExistKey - \91¶\8dÝ\94»\92è\82ª\88Ù\82È\82é\81B(True)")\r
+ Call AssertEqual(dic.ExistKey("hoge"), False, "TestDictionaryExistKey - \91¶\8dÝ\94»\92è\82ª\88Ù\82È\82é\81B(False)")\r
+End Sub\r
+\r
+Public Sub TestDictionaryExistValue()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic.ExistValue("\82Ó\81["), True, "TestDictionaryExistValue - \91¶\8dÝ\94»\92è\82ª\88Ù\82È\82é\81B(True)")\r
+ Call AssertEqual(dic.ExistValue("foo"), False, "TestDictionaryExistValue - \91¶\8dÝ\94»\92è\82ª\88Ù\82È\82é\81B(False)")\r
+End Sub\r
+\r
+Public Sub TestDictionaryIsEqual()\r
+ Dim dic1, dic2\r
+ \r
+ Set dic1 = New Dictionary\r
+ \r
+ dic1.Item("foo") = "\82Ó\81["\r
+ dic1.Item("bar") = "\82Î\81["\r
+ dic1.Item("boo") = "\82Ô\81["\r
+ \r
+ Set dic2 = New Dictionary\r
+ \r
+ dic2.Item("foo") = "\82Ó\81["\r
+ dic2.Item("bar") = "\82Î\81["\r
+ dic2.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic1.IsEqual(dic2), True, "TestDictionaryIsEqual - \93\99\89¿\94»\92è\82ª\88Ù\82È\82é\81B(True)")\r
+ \r
+ dic2.Item("boo") = "\82Ô\82£"\r
+ \r
+ Call AssertEqual(dic1.IsEqual(dic2), False, "TestDictionaryIsEqual - \93\99\89¿\94»\92è\82ª\88Ù\82È\82é\81B(False)")\r
+End Sub\r
+\r
+Sub AllTest()\r
+ Call TestAddArray()\r
+ Call TestRemoveArray()\r
+ Call TestCopyArray()\r
+ Call TestSortArray()\r
+ \r
+ Call TestCollectionClassInitialize()\r
+ Call TestCollectionAdd()\r
+ Call TestCollectionRemove()\r
+ Call TestCollectionItems()\r
+ Call TestCollectionSort()\r
+ Call TestCollectionCopy()\r
+ Call TestCollectionExist()\r
+ Call TestCollectionFindItem()\r
+ Call TestCollectionIsEqual()\r
+ \r
+ Call TestDictionaryClassInitialize()\r
+ Call TestDictionaryItem()\r
+ Call TestDictionaryRemove()\r
+ Call TestDictionaryItems()\r
+ Call TestDictionaryKeys()\r
+ Call TestDictionaryValues()\r
+ Call TestDictionarySort()\r
+ Call TestDictionaryCopy()\r
+ Call TestDictionaryExistKey()\r
+ Call TestDictionaryExistValue()\r
+ Call TestDictionaryIsEqual()\r
+ \r
+ MsgBox "\83e\83X\83g\90¬\8c÷"\r
+End Sub\r
+\r
+Call AllTest()\r
--- /dev/null
+Option Explicit\r
+\r
+Class Collection\r
+ Private paryItem\r
+ \r
+ Private Sub Class_Initialize()\r
+ ReDim paryItem(-1)\r
+ End Sub\r
+ \r
+ Public Property Get Count()\r
+ Count = UBound(paryItem) + 1\r
+ End Property\r
+ \r
+ Public Property Get Item(intIndex)\r
+ If IsObject(paryItem(intIndex)) Then\r
+ Set Item = paryItem(intIndex)\r
+ Else\r
+ Item = paryItem(intIndex)\r
+ End If\r
+ End Property\r
+ \r
+ Public Property Let Item(intIndex, varItem)\r
+ paryItem(intIndex) = varItem\r
+ End Property\r
+ \r
+ Public Property Set Item(intIndex, varItem)\r
+ Set paryItem(intIndex) = varItem\r
+ End Property\r
+ \r
+ Public Property Get Items()\r
+ Items = CopyArray(paryItem)\r
+ End Property\r
+ \r
+ Public Sub Add(varItem)\r
+ Call AddArray(paryItem, varItem)\r
+ End Sub\r
+ \r
+ Public Function Remove(intIndex)\r
+ If IsObject(paryItem(intIndex)) Then\r
+ Set Remove = paryItem(intIndex)\r
+ Else\r
+ Remove = paryItem(intIndex)\r
+ End If\r
+ \r
+ Call RemoveArray(paryItem, intIndex)\r
+ End Function\r
+ \r
+ Public Function RemoveLast()\r
+ Call Remove(Count - 1)\r
+ End Function\r
+ \r
+ Public Function Exist(varItem)\r
+ Exist = (FindItem(varItem) > -1)\r
+ End Function\r
+ \r
+ Public Function FindItem(varItem)\r
+ Dim intIndex\r
+ \r
+ FindItem = -1\r
+ \r
+ For intIndex = 0 To UBound(paryItem)\r
+ If paryItem(intIndex) = varItem Then\r
+ FindItem = intIndex\r
+ Exit For\r
+ End If\r
+ Next\r
+ End Function\r
+ \r
+ Public Sub Sort(objComparator)\r
+ Call SortArray(paryItem, objComparator)\r
+ End Sub\r
+ \r
+ Public Function Copy()\r
+ Dim col, varItem\r
+ \r
+ Set col = New Collection\r
+ \r
+ For Each varItem In paryItem\r
+ Call col.Add(varItem)\r
+ Next\r
+ \r
+ Set Copy = col\r
+ End Function\r
+ \r
+ Public Function IsEqual(col)\r
+ Dim intIndex\r
+ \r
+ If TypeName(col) <> "Collection" Then\r
+ IsEqual = False\r
+ Exit Function\r
+ ElseIf col.Count <> Count Then\r
+ IsEqual = False\r
+ Exit Function\r
+ Else\r
+ For intIndex = 0 To Count - 1\r
+ If Item(intIndex) <> col.Item(intIndex) Then\r
+ IsEqual = False\r
+ Exit Function\r
+ End If\r
+ Next\r
+ End If\r
+ \r
+ IsEqual = True\r
+ End Function\r
+End Class\r
+\r
+Class Dictionary\r
+ Private paryItem\r
+ \r
+ Private Sub Class_Initialize()\r
+ ReDim paryItem(-1)\r
+ End Sub\r
+ \r
+ Public Property Get Count()\r
+ Count = UBound(paryItem) + 1\r
+ End Property\r
+ \r
+ Public Property Set Item(varKey, varValue)\r
+ Call SetItem(varKey, varValue)\r
+ End Property\r
+ \r
+ Public Property Let Item(varKey, varValue)\r
+ Call SetItem(varKey, varValue)\r
+ End Property\r
+ \r
+ Public Property Get Item(varKey)\r
+ Dim intIndex\r
+ \r
+ intIndex = FindIndex(varKey)\r
+ \r
+ If intIndex <> -1 Then\r
+ If IsObject(paryItem(intIndex).Value) Then\r
+ Set Item = paryItem(intIndex).Value\r
+ Else\r
+ Item = paryItem(intIndex).Value\r
+ End If\r
+ Else\r
+ Item = Empty\r
+ End If\r
+ End Property\r
+ \r
+ Public Property Get Items()\r
+ Items = CopyArray(paryItem)\r
+ End Property\r
+ \r
+ Public Property Get Keys()\r
+ Dim aryKey, intIndex\r
+ \r
+ ReDim aryKey(UBound(paryItem))\r
+ \r
+ For intIndex = 0 To UBound(paryItem)\r
+ If IsObject(paryItem(intIndex).Key) Then\r
+ Set aryKey(intIndex) = paryItem(intIndex).Key\r
+ Else\r
+ aryKey(intIndex) = paryItem(intIndex).Key\r
+ End If\r
+ Next\r
+ \r
+ Keys = aryKey\r
+ End Property\r
+ \r
+ Public Property Get Values()\r
+ Dim aryValue, intIndex\r
+ \r
+ ReDim aryValue(UBound(paryItem))\r
+ \r
+ For intIndex = 0 To UBound(paryItem)\r
+ If IsObject(paryItem(intIndex).Value) Then\r
+ Set aryValue(intIndex) = paryItem(intIndex).Value\r
+ Else\r
+ aryValue(intIndex) = paryItem(intIndex).Value\r
+ End If\r
+ Next\r
+ \r
+ Values = aryValue\r
+ End Property\r
+ \r
+ Private Sub SetItem(varKey, varValue)\r
+ Dim intIndex\r
+ Dim objDicItem\r
+ \r
+ intIndex = FindIndex(varKey)\r
+ \r
+ If intIndex <> -1 Then\r
+ If IsObject(varValue) Then\r
+ Set paryItem(intIndex).Value = varValue\r
+ Else\r
+ paryItem(intIndex).Value = varValue\r
+ End If\r
+ Else\r
+ Set objDicItem = New DictionaryItem\r
+ If IsObject(varKey) Then\r
+ Set objDicItem.Key = varKey\r
+ Else\r
+ objDicItem.Key = varKey\r
+ End If\r
+ If IsObject(varValue) Then\r
+ Set objDicItem.Value = varValue\r
+ Else\r
+ objDicItem.Value = varValue\r
+ End If\r
+ \r
+ Call AddArray(paryItem, objDicItem)\r
+ End If\r
+ End Sub\r
+ \r
+ Public Function Remove(varKey)\r
+ Dim intIndex\r
+ \r
+ intIndex = FindIndex(varKey)\r
+ \r
+ If IsObject(paryItem(intIndex).Value) Then\r
+ Set Remove = paryItem(intIndex).Value\r
+ Else\r
+ Remove = paryItem(intIndex).Value\r
+ End If\r
+ \r
+ Call RemoveArray(paryItem, intIndex)\r
+ End Function\r
+ \r
+ Private Function FindIndex(varKey)\r
+ Dim intIndex\r
+ \r
+ FindIndex = -1\r
+ \r
+ For intIndex = 0 To UBound(paryItem)\r
+ If paryItem(intIndex).Key = varKey Then\r
+ FindIndex = intIndex\r
+ End If\r
+ Next\r
+ End Function\r
+ \r
+ Public Sub Sort(objComparator)\r
+ Call SortArray(paryItem, objComparator)\r
+ End Sub\r
+ \r
+ Public Function Copy()\r
+ Dim dic, varKey\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ For Each varKey In Keys\r
+ If IsObject(Item(varKey)) Then\r
+ Set dic.Item(varKey) = Item(varKey)\r
+ Else\r
+ dic.Item(varKey) = Item(varKey)\r
+ End If\r
+ Next\r
+ \r
+ Set Copy = dic\r
+ End Function\r
+ \r
+ Public Function ExistKey(varKey)\r
+ ExistKey = (FindIndex(varKey) <> -1)\r
+ End Function\r
+ \r
+ Public Function ExistValue(varValue)\r
+ Dim var\r
+ \r
+ ExistValue = False\r
+ \r
+ For Each var In Values\r
+ If var = varValue Then\r
+ ExistValue = True\r
+ Exit For\r
+ End If\r
+ Next\r
+ End Function\r
+ \r
+ Public Function IsEqual(dic)\r
+ Dim varKey\r
+ \r
+ If TypeName(dic) <> "Dictionary" Then\r
+ IsEqual = False\r
+ Exit Function\r
+ ElseIf dic.Count <> Count Then\r
+ IsEqual = False\r
+ Exit Function\r
+ Else\r
+ For Each varKey In dic.Keys\r
+ If dic.Item(varKey) <> Item(varKey) Then\r
+ IsEqual = False\r
+ Exit Function\r
+ End If\r
+ Next\r
+ End If\r
+ \r
+ IsEqual = True\r
+ End Function\r
+End Class\r
+\r
+Class DictionaryItem\r
+ Public Key\r
+ Public Value\r
+End Class\r
+\r
+Sub AddArray(ary, var)\r
+ ReDim Preserve ary(UBound(ary) + 1)\r
+ \r
+ If IsObject(var) Then\r
+ Set ary(UBound(ary)) = var\r
+ Else\r
+ ary(UBound(ary)) = var\r
+ End If\r
+End Sub\r
+\r
+Sub RemoveArray(ary, intRemoveIndex)\r
+ Dim intIndex\r
+ \r
+ For intIndex = intRemoveIndex + 1 To UBound(ary)\r
+ If IsObject(ary(intIndex)) Then\r
+ Set ary(intIndex - 1) = ary(intIndex)\r
+ Else\r
+ ary(intIndex - 1) = ary(intIndex)\r
+ End If\r
+ Next\r
+ \r
+ ReDim Preserve ary(UBound(ary) - 1)\r
+End Sub\r
+\r
+Function CopyArray(ary)\r
+ Dim aryDst\r
+ ReDim aryDst(UBound(ary))\r
+ Dim intIndex\r
+ \r
+ For intIndex = 0 To UBound(ary)\r
+ If IsObject(ary(intIndex)) Then\r
+ Set aryDst(intIndex) = ary(intIndex)\r
+ Else\r
+ aryDst(intIndex) = ary(intIndex)\r
+ End If\r
+ Next\r
+ \r
+ CopyArray = aryDst\r
+End Function\r
+\r
+Sub SortArray(ary, objComparator)\r
+ Dim intIndex, intIndex2\r
+ Dim varTemp\r
+ \r
+ For intIndex = 0 To UBound(ary) - 1\r
+ For intIndex2 = intIndex + 1 To UBound(ary)\r
+ If objComparator.Compare(ary(intIndex), ary(intIndex2)) > 0 Then\r
+ If IsObject(ary(intIndex)) Then\r
+ Set varTemp = ary(intIndex)\r
+ Else\r
+ varTemp = ary(intIndex)\r
+ End If\r
+ \r
+ If IsObject(ary(intIndex2)) Then\r
+ Set ary(intIndex) = ary(intIndex2)\r
+ Else\r
+ ary(intIndex) = ary(intIndex2)\r
+ End If\r
+ \r
+ If IsObject(varTemp) Then\r
+ Set ary(intIndex2) = varTemp\r
+ Else\r
+ ary(intIndex2) = varTemp\r
+ End If\r
+ End If\r
+ Next\r
+ Next\r
+End Sub\r
+\r
+Class PrimitiveComparator\r
+ Public Function Compare(var1, var2)\r
+ If var1 > var2 Then\r
+ Compare = 1\r
+ ElseIf var1 < var2 Then\r
+ Compare = -1\r
+ Else\r
+ Compare = 0\r
+ End If\r
+ End Function\r
+End Class\r
+\r
+Class PrimitiveKeyComparator\r
+ Public Function Compare(dicItem1, dicItem2)\r
+ If dicItem1.Key > dicItem2.Key Then\r
+ Compare = 1\r
+ ElseIf dicItem1.Key < dicItem2.Key Then\r
+ Compare = -1\r
+ Else\r
+ Compare = 0\r
+ End If\r
+ End Function\r
+End Class\r
+\r
+' ***** \83e\83X\83g *****\r
+\r
+Sub AssertEqual(var1, var2, strMessage)\r
+ If var1 <> var2 Then\r
+ Call Err.Raise(1, "\83e\83X\83g\8e¸\94s", strMessage)\r
+ End If\r
+End Sub\r
+\r
+Sub TestAddArray()\r
+ Dim ary\r
+ \r
+ ReDim ary(2)\r
+ \r
+ ary(0) = "foo"\r
+ ary(1) = "bar"\r
+ ary(2) = "boo"\r
+ \r
+ Call AddArray(ary, "hoge")\r
+ \r
+ Call AssertEqual(UBound(ary), 3, "TestAddArray - \94z\97ñ\82Ì\92·\82³\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(ary(0), "foo", "TestAddArray - \94z\97ñ\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(1), "bar", "TestAddArray - \94z\97ñ\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(2), "boo", "TestAddArray - \94z\97ñ\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(3), "hoge", "TestAddArray - \94z\97ñ\82Ì\97v\91f3\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestRemoveArray()\r
+ Dim ary\r
+ \r
+ ReDim ary(2)\r
+ \r
+ ary(0) = "foo"\r
+ ary(1) = "bar"\r
+ ary(2) = "boo"\r
+ \r
+ Call RemoveArray(ary, 1)\r
+ \r
+ Call AssertEqual(UBound(ary), 1, "TestRemoveArray - \94z\97ñ\82Ì\92·\82³\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(ary(0), "foo", "TestRemoveArray - \94z\97ñ\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(1), "boo", "TestRemoveArray - \94z\97ñ\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCopyArray()\r
+ Dim ary, aryDst\r
+ \r
+ ReDim ary(2)\r
+ \r
+ ary(0) = "foo"\r
+ ary(1) = "bar"\r
+ ary(2) = "boo"\r
+ \r
+ aryDst = CopyArray(ary)\r
+ \r
+ Call AssertEqual(UBound(aryDst), 2, "TestCopyArray - \94z\97ñ\82Ì\92·\82³\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(aryDst(0), "foo", "TestCopyArray - \94z\97ñ\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(aryDst(1), "bar", "TestCopyArray - \94z\97ñ\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(aryDst(2), "boo", "TestCopyArray - \94z\97ñ\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestSortArray()\r
+ Dim ary\r
+ \r
+ ReDim ary(2)\r
+ \r
+ ary(0) = "foo"\r
+ ary(1) = "bar"\r
+ ary(2) = "boo"\r
+ \r
+ Call SortArray(ary, New PrimitiveComparator)\r
+ \r
+ Call AssertEqual(UBound(ary), 2, "TestSortArray - \94z\97ñ\82Ì\92·\82³\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(ary(0), "bar", "TestSortArray - \94z\97ñ\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(1), "boo", "TestSortArray - \94z\97ñ\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(ary(2), "foo", "TestSortArray - \94z\97ñ\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionClassInitialize()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call AssertEqual(col.Count, 0, "TestCollectionCount - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionAdd()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionAdd - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Item(0), "foo", "TestCollectionAdd - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(1), "bar", "TestCollectionAdd - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(2), "boo", "TestCollectionAdd - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionRemove()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.Remove(1), "bar", "TestCollectionRemove - \8dí\8f\9c\82µ\82½\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Count, 2, "TestCollectionRemove - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Item(0), "foo", "TestCollectionRemove - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(1), "boo", "TestCollectionRemove - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionItems()\r
+ Dim col, var, intIndex\r
+ \r
+ Set col = New Collection\r
+ \r
+ For Each var In col.Items\r
+ Call AssertEqual(True, False, "TestCollectionItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ Next\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionItems - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each var In col.Items\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(var, "foo", "TestCollectionItems - \97ñ\8b\93\82³\82ê\82½\92l(0)\82ª\88Ù\82È\82é\81B")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(var, "bar", "TestCollectionItems - \97ñ\8b\93\82³\82ê\82½\92l(1)\82ª\88Ù\82È\82é\81B")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(var, "boo", "TestCollectionItems - \97ñ\8b\93\82³\82ê\82½\92l(2)\82ª\88Ù\82È\82é\81B")\r
+ Else\r
+ Call AssertEqual(True, False, "TestCollectionItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Sub TestCollectionSort()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call col.Sort(New PrimitiveComparator)\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionSort - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Item(0), "bar", "TestCollectionSort - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(1), "boo", "TestCollectionSort - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(2), "foo", "TestCollectionSort - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionCopy()\r
+ Dim col, colDst\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Set colDst = col.Copy()\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(col.Item(0), "foo", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(1), "bar", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(col.Item(2), "boo", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(colDst.Count, 3, "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(colDst.Item(0), "foo", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f0\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(colDst.Item(1), "bar", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f1\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(colDst.Item(2), "boo", "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f2\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call colDst.Add("hoge")\r
+ \r
+ Call AssertEqual(col.Count, 3, "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(colDst.Count, 4, "TestCollectionCopy - \83R\83\8c\83N\83V\83\87\83\93\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Sub TestCollectionExist()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.Exist("bar"), True, "TestCollectionExist - \91¶\8dÝ\94»\92è\82ª\8aÔ\88á\82¦\82Ä\82¢\82é(True)\81B")\r
+ Call AssertEqual(col.Exist("hoge"), False, "TestCollectionExist - \91¶\8dÝ\94»\92è\82ª\8aÔ\88á\82¦\82Ä\82¢\82é(False)\81B")\r
+End Sub\r
+\r
+Sub TestCollectionFindItem()\r
+ Dim col\r
+ \r
+ Set col = New Collection\r
+ \r
+ Call col.Add("foo")\r
+ Call col.Add("bar")\r
+ Call col.Add("boo")\r
+ \r
+ Call AssertEqual(col.FindItem("bar"), 1, "TestCollectionFindItem - \97v\91f\82Ì\8c\9f\8dõ\8c\8b\89Ê\82ª\88Ù\82È\82é(1)\81B")\r
+ Call AssertEqual(col.FindItem("hoge"), -1, "TestCollectionFindItem - \97v\91f\82Ì\8c\9f\8dõ\8c\8b\89Ê\82ª\88Ù\82È\82é(-1)\81B")\r
+End Sub\r
+\r
+Sub TestCollectionIsEqual()\r
+ Dim col1, col2\r
+ \r
+ Set col1 = New Collection\r
+ \r
+ Call col1.Add("foo")\r
+ Call col1.Add("bar")\r
+ Call col1.Add("boo")\r
+ \r
+ Set col2 = New Collection\r
+ \r
+ Call col2.Add("foo")\r
+ Call col2.Add("bar")\r
+ Call col2.Add("boo")\r
+ \r
+ Call AssertEqual(col1.IsEqual(col2), True, "TestCollectionIsEqual - \93\99\89¿\94»\92è\82ª\88Ù\82È\82é\81B(True)")\r
+ \r
+ Call col2.Add("hoge")\r
+ \r
+ Call AssertEqual(col1.IsEqual(col2), False, "TestCollectionIsEqual - \93\99\89¿\94»\92è\82ª\88Ù\82È\82é\81B(False)")\r
+End Sub\r
+\r
+Public Sub TestDictionaryClassInitialize()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ Call AssertEqual(dic.Count, 0, "TestDictionaryInitialize - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Public Sub TestDictionaryItem()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic.Count, 3, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Item("foo"), "\82Ó\81[", "TestDictionaryItem - \97v\91f(foo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("bar"), "\82Î\81[", "TestDictionaryItem - \97v\91f(bar)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("boo"), "\82Ô\81[", "TestDictionaryItem - \97v\91f(boo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Item("hoge"), Empty, "TestDictionaryItem - \91¶\8dÝ\82µ\82È\82¢\97v\91f\82Ì\92l\82ªEmpty\82Å\82Í\82È\82¢\81B")\r
+End Sub\r
+\r
+Public Sub TestDictionaryRemove()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic.Remove("bar"), "\82Î\81[", "TestDictionaryRemove - \8dí\8f\9c\82µ\82½\97v\91f\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Count, 2, "TestDictionaryRemove - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Item("foo"), "\82Ó\81[", "TestDictionaryItem - \97v\91f(foo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("boo"), "\82Ô\81[", "TestDictionaryItem - \97v\91f(boo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Public Sub TestDictionaryItems()\r
+ Dim dic, varItem, intIndex\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ For Each varItem In dic.Items\r
+ Call AssertEqual(True, False, "TestDictionaryItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ Next\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each varItem In dic.Items\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(varItem.Key, "foo", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(0)")\r
+ Call AssertEqual(varItem.Value, "\82Ó\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(0)")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(varItem.Key, "bar", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(1)")\r
+ Call AssertEqual(varItem.Value, "\82Î\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(1)")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(varItem.Key, "boo", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(2)")\r
+ Call AssertEqual(varItem.Value, "\82Ô\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(2)")\r
+ Else\r
+ Call AssertEqual(True, False, "TestDictionaryItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Public Sub TestDictionaryKeys()\r
+ Dim dic, varKey, intIndex\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ For Each varKey In dic.Keys\r
+ Call AssertEqual(True, False, "TestDictionaryKeys - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ Next\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each varKey In dic.Keys\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(varKey, "foo", "TestDictionaryKeys - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(0)")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(varKey, "bar", "TestDictionaryKeys - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(1)")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(varKey, "boo", "TestDictionaryKeys - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(2)")\r
+ Else\r
+ Call AssertEqual(True, False, "TestDictionaryKeys - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Public Sub TestDictionaryValues()\r
+ Dim dic, varValue, intIndex\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ For Each varValue In dic.Values\r
+ Call AssertEqual(True, False, "TestDictionaryValues - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ Next\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each varValue In dic.Values\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(varValue, "\82Ó\81[", "TestDictionaryValues - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(0)")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(varValue, "\82Î\81[", "TestDictionaryValues - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(1)")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(varValue, "\82Ô\81[", "TestDictionaryValues - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(2)")\r
+ Else\r
+ Call AssertEqual(True, False, "TestDictionaryValues - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Public Sub TestDictionarySort()\r
+ Dim dic, varItem, intIndex\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call dic.Sort(New PrimitiveKeyComparator)\r
+ \r
+ intIndex = 0\r
+ \r
+ For Each varItem In dic.Items\r
+ If intIndex = 0 Then\r
+ Call AssertEqual(varItem.Key, "bar", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(0)")\r
+ Call AssertEqual(varItem.Value, "\82Î\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(0)")\r
+ ElseIf intIndex = 1 Then\r
+ Call AssertEqual(varItem.Key, "boo", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(1)")\r
+ Call AssertEqual(varItem.Value, "\82Ô\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(1)")\r
+ ElseIf intIndex = 2 Then\r
+ Call AssertEqual(varItem.Key, "foo", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\83L\81[\82ª\88Ù\82È\82é\81B(2)")\r
+ Call AssertEqual(varItem.Value, "\82Ó\81[", "TestDictionaryItems - \97ñ\8b\93\82³\82ê\82½\97v\91f\82Ì\92l\82ª\88Ù\82È\82é\81B(2)")\r
+ Else\r
+ Call AssertEqual(True, False, "TestDictionaryItems - \97ñ\8b\93\94Í\88Í\82ð\92´\82¦\82½\81B")\r
+ End If\r
+ \r
+ intIndex = intIndex + 1\r
+ Next\r
+End Sub\r
+\r
+Public Sub TestDictionaryCopy()\r
+ Dim dic, dic2\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Set dic2 = dic.Copy()\r
+ \r
+ Call AssertEqual(dic.Count, 3, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic.Item("foo"), "\82Ó\81[", "TestDictionaryItem - \97v\91f(foo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("bar"), "\82Î\81[", "TestDictionaryItem - \97v\91f(bar)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic.Item("boo"), "\82Ô\81[", "TestDictionaryItem - \97v\91f(boo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic2.Count, 3, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ \r
+ Call AssertEqual(dic2.Item("foo"), "\82Ó\81[", "TestDictionaryItem - \97v\91f(foo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic2.Item("bar"), "\82Î\81[", "TestDictionaryItem - \97v\91f(bar)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic2.Item("boo"), "\82Ô\81[", "TestDictionaryItem - \97v\91f(boo)\82Ì\92l\82ª\88Ù\82È\82é\81B")\r
+ \r
+ dic2.Item("hoge") = "\82Ù\82°"\r
+ \r
+ Call AssertEqual(dic.Count, 3, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+ Call AssertEqual(dic2.Count, 4, "TestDictionaryItem - \83f\83B\83N\83V\83\87\83i\83\8a\82Ì\97v\91f\90\94\82ª\88Ù\82È\82é\81B")\r
+End Sub\r
+\r
+Public Sub TestDictionaryExistKey()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic.ExistKey("foo"), True, "TestDictionaryExistKey - \91¶\8dÝ\94»\92è\82ª\88Ù\82È\82é\81B(True)")\r
+ Call AssertEqual(dic.ExistKey("hoge"), False, "TestDictionaryExistKey - \91¶\8dÝ\94»\92è\82ª\88Ù\82È\82é\81B(False)")\r
+End Sub\r
+\r
+Public Sub TestDictionaryExistValue()\r
+ Dim dic\r
+ \r
+ Set dic = New Dictionary\r
+ \r
+ dic.Item("foo") = "\82Ó\81["\r
+ dic.Item("bar") = "\82Î\81["\r
+ dic.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic.ExistValue("\82Ó\81["), True, "TestDictionaryExistValue - \91¶\8dÝ\94»\92è\82ª\88Ù\82È\82é\81B(True)")\r
+ Call AssertEqual(dic.ExistValue("foo"), False, "TestDictionaryExistValue - \91¶\8dÝ\94»\92è\82ª\88Ù\82È\82é\81B(False)")\r
+End Sub\r
+\r
+Public Sub TestDictionaryIsEqual()\r
+ Dim dic1, dic2\r
+ \r
+ Set dic1 = New Dictionary\r
+ \r
+ dic1.Item("foo") = "\82Ó\81["\r
+ dic1.Item("bar") = "\82Î\81["\r
+ dic1.Item("boo") = "\82Ô\81["\r
+ \r
+ Set dic2 = New Dictionary\r
+ \r
+ dic2.Item("foo") = "\82Ó\81["\r
+ dic2.Item("bar") = "\82Î\81["\r
+ dic2.Item("boo") = "\82Ô\81["\r
+ \r
+ Call AssertEqual(dic1.IsEqual(dic2), True, "TestDictionaryIsEqual - \93\99\89¿\94»\92è\82ª\88Ù\82È\82é\81B(True)")\r
+ \r
+ dic2.Item("boo") = "\82Ô\82£"\r
+ \r
+ Call AssertEqual(dic1.IsEqual(dic2), False, "TestDictionaryIsEqual - \93\99\89¿\94»\92è\82ª\88Ù\82È\82é\81B(False)")\r
+End Sub\r
+\r
+Sub AllTest()\r
+ Call TestAddArray()\r
+ Call TestRemoveArray()\r
+ Call TestCopyArray()\r
+ Call TestSortArray()\r
+ \r
+ Call TestCollectionClassInitialize()\r
+ Call TestCollectionAdd()\r
+ Call TestCollectionRemove()\r
+ Call TestCollectionItems()\r
+ Call TestCollectionSort()\r
+ Call TestCollectionCopy()\r
+ Call TestCollectionExist()\r
+ Call TestCollectionFindItem()\r
+ Call TestCollectionIsEqual()\r
+ \r
+ Call TestDictionaryClassInitialize()\r
+ Call TestDictionaryItem()\r
+ Call TestDictionaryRemove()\r
+ Call TestDictionaryItems()\r
+ Call TestDictionaryKeys()\r
+ Call TestDictionaryValues()\r
+ Call TestDictionarySort()\r
+ Call TestDictionaryCopy()\r
+ Call TestDictionaryExistKey()\r
+ Call TestDictionaryExistValue()\r
+ Call TestDictionaryIsEqual()\r
+ \r
+ MsgBox "\83e\83X\83g\90¬\8c÷"\r
+End Sub\r
+\r
+Call AllTest()\r