You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@etch.apache.org by jd...@apache.org on 2009/04/22 19:25:51 UTC
svn commit: r767594 [9/43] - in /incubator/etch/trunk/binding-c/runtime/c:
./ ext/ ext/hashtab/ ext/lib/ inc/ lib/ project/ project/$etchstop/
project/bin/ project/etch/ project/logcli/ project/logsrv/ project/notes/
project/test/ project/test/logcli/ ...
Added: incubator/etch/trunk/binding-c/runtime/c/project/test/test_arraylist/test_arraylist.vcproj
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-c/runtime/c/project/test/test_arraylist/test_arraylist.vcproj?rev=767594&view=auto
==============================================================================
--- incubator/etch/trunk/binding-c/runtime/c/project/test/test_arraylist/test_arraylist.vcproj (added)
+++ incubator/etch/trunk/binding-c/runtime/c/project/test/test_arraylist/test_arraylist.vcproj Wed Apr 22 17:25:43 2009
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="test_arraylist"
+ ProjectGUID="{84DED881-0E5C-4218-B981-4F9D2E9448CA}"
+ RootNamespace="test_arraylist"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\inc;..\..\..\ext\hashtab;"$(APRPATH)\inc";"$(CUNITPATH)\inc""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;APR_DECLARE_STATIC"
+ MinimalRebuild="false"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="1"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/NODEFAULTLIB:LIBCMTD"
+ AdditionalDependencies="libcunit.lib etch.lib jenkhash.lib apr-1.lib WS2_32.LIB Mswsock.lib"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="..\..\..\lib;..\..\..\ext\lib;"$(APRPATH)\lib";"$(CUNITPATH)\lib\win32""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\src\test\common\test_arraylist.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: incubator/etch/trunk/binding-c/runtime/c/project/test/test_arrayvalue/test_arrayvalue.vcproj
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-c/runtime/c/project/test/test_arrayvalue/test_arrayvalue.vcproj?rev=767594&view=auto
==============================================================================
--- incubator/etch/trunk/binding-c/runtime/c/project/test/test_arrayvalue/test_arrayvalue.vcproj (added)
+++ incubator/etch/trunk/binding-c/runtime/c/project/test/test_arrayvalue/test_arrayvalue.vcproj Wed Apr 22 17:25:43 2009
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="test_arrayvalue"
+ ProjectGUID="{B1A0942D-9C49-4339-8CD8-A790D3AE573C}"
+ RootNamespace="test_arrayvalue"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\inc;..\..\..\ext\hashtab;"$(APRPATH)\inc";"$(CUNITPATH)\inc""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;APR_DECLARE_STATIC"
+ MinimalRebuild="false"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="1"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/NODEFAULTLIB:LIBCMTD"
+ AdditionalDependencies="libcunit.lib etch.lib jenkhash.lib apr-1.lib WS2_32.LIB Mswsock.lib"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="..\..\..\lib;..\..\..\ext\lib;"$(APRPATH)\lib";"$(CUNITPATH)\lib\win32""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\src\test\message\test_arrayvalue.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: incubator/etch/trunk/binding-c/runtime/c/project/test/test_assignment/test_assignment.vcproj
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-c/runtime/c/project/test/test_assignment/test_assignment.vcproj?rev=767594&view=auto
==============================================================================
--- incubator/etch/trunk/binding-c/runtime/c/project/test/test_assignment/test_assignment.vcproj (added)
+++ incubator/etch/trunk/binding-c/runtime/c/project/test/test_assignment/test_assignment.vcproj Wed Apr 22 17:25:43 2009
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="test_assignment"
+ ProjectGUID="{42A0BA98-B199-4CA0-AA59-6EDFF376E193}"
+ RootNamespace="test_assignment"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\inc;..\..\..\ext\hashtab;"$(APRPATH)\inc";"$(CUNITPATH)\inc""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/NODEFAULTLIB:LIBCMTD"
+ AdditionalDependencies="libcunit.lib etch.lib jenkhash.lib apr-1.lib WS2_32.LIB Mswsock.lib"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="..\..\..\lib;..\..\..\ext\lib;"$(APRPATH)\lib";"$(CUNITPATH)\lib\win32""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\src\test\common\test_assignment.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;APR_DECLARE_STATIC"
+ MinimalRebuild="false"
+ ExceptionHandling="0"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)1.obj"
+ XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: incubator/etch/trunk/binding-c/runtime/c/project/test/test_binarytditdo/test_binarytditdo.vcproj
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-c/runtime/c/project/test/test_binarytditdo/test_binarytditdo.vcproj?rev=767594&view=auto
==============================================================================
--- incubator/etch/trunk/binding-c/runtime/c/project/test/test_binarytditdo/test_binarytditdo.vcproj (added)
+++ incubator/etch/trunk/binding-c/runtime/c/project/test/test_binarytditdo/test_binarytditdo.vcproj Wed Apr 22 17:25:43 2009
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="test_binarytditdo"
+ ProjectGUID="{ADA0E60B-5592-44E3-8822-B392368776CB}"
+ RootNamespace="test_binarytditdo"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\inc;..\..\..\ext\hashtab;"$(APRPATH)\inc";"$(CUNITPATH)\inc""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;APR_DECLARE_STATIC"
+ MinimalRebuild="false"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="1"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/NODEFAULTLIB:LIBCMTD"
+ AdditionalDependencies="libcunit.lib etch.lib jenkhash.lib apr-1.lib WS2_32.LIB Mswsock.lib"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="..\..\..\lib;..\..\..\ext\lib;"$(APRPATH)\lib";"$(CUNITPATH)\lib\win32""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\..\src\test\message\test_binarytditdo.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: incubator/etch/trunk/binding-c/runtime/c/project/test/test_cache/test_cache.vcproj
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-c/runtime/c/project/test/test_cache/test_cache.vcproj?rev=767594&view=auto
==============================================================================
--- incubator/etch/trunk/binding-c/runtime/c/project/test/test_cache/test_cache.vcproj (added)
+++ incubator/etch/trunk/binding-c/runtime/c/project/test/test_cache/test_cache.vcproj Wed Apr 22 17:25:43 2009
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="test_cache"
+ ProjectGUID="{5504E4BC-AA75-45F8-A8B4-060CE1B2E3AE}"
+ RootNamespace="test_cache"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\inc;..\..\..\ext\hashtab;"$(APRPATH)\inc";"$(CUNITPATH)\inc""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;APR_DECLARE_STATIC"
+ MinimalRebuild="false"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="1"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/NODEFAULTLIB:LIBCMTD"
+ AdditionalDependencies="libcunit.lib etch.lib jenkhash.lib apr-1.lib WS2_32.LIB Mswsock.lib"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="..\..\..\lib;..\..\..\ext\lib;"$(APRPATH)\lib";"$(CUNITPATH)\lib\win32""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ >
+ <File
+ RelativePath="..\..\..\src\test\common\test_cache.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: incubator/etch/trunk/binding-c/runtime/c/project/test/test_defvalufact/test_defvalufact.c
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-c/runtime/c/project/test/test_defvalufact/test_defvalufact.c?rev=767594&view=auto
==============================================================================
--- incubator/etch/trunk/binding-c/runtime/c/project/test/test_defvalufact/test_defvalufact.c (added)
+++ incubator/etch/trunk/binding-c/runtime/c/project/test/test_defvalufact/test_defvalufact.c Wed Apr 22 17:25:43 2009
@@ -0,0 +1,1486 @@
+/* $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version
+ * 2.0 (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * test_defvalufact.c
+ * test default impl of value factory
+ */
+
+#include "apr_time.h" /* some apr must be included first */
+#include "etchthread.h"
+#include "etch_validator.h" /* must be included second */
+
+#include <tchar.h>
+#include <stdio.h>
+#include <conio.h>
+
+#include "cunit.h"
+#include "basic.h"
+#include "automated.h"
+
+#include "etch_tagdata.h"
+#include "etch_global.h"
+#include "etchmap.h"
+#include "etchlog.h"
+#include "etch_id_name.h"
+#include "etch_defvalufact.h"
+#include "etch_arrayval.h"
+#include "etch_syncobj.h"
+#include "etchexcp.h"
+
+int apr_setup(void);
+int apr_teardown(void);
+int this_setup();
+int this_teardown();
+apr_pool_t* g_apr_mempool;
+const char* pooltag = "etchpool";
+
+
+/* - - - - - - - - - - - - - -
+ * unit test infrastructure
+ * - - - - - - - - - - - - - -
+ */
+
+int init_suite(void)
+{
+ apr_setup();
+ etch_runtime_init(TRUE);
+ return this_setup();
+}
+
+int clean_suite(void)
+{
+ this_teardown();
+ etch_runtime_cleanup(0,0); /* free memtable and cache etc */
+ apr_teardown();
+ return 0;
+}
+
+int g_is_automated_test, g_bytes_allocated;
+
+#define IS_DEBUG_CONSOLE FALSE
+
+/*
+ * apr_setup()
+ * establish apache portable runtime environment
+ */
+int apr_setup(void)
+{
+ int result = apr_initialize();
+ if (result == 0)
+ { result = etch_apr_init();
+ g_apr_mempool = etch_apr_mempool;
+ }
+ if (g_apr_mempool)
+ apr_pool_tag(g_apr_mempool, pooltag);
+ else result = -1;
+ return result;
+}
+
+/*
+ * apr_teardown()
+ * free apache portable runtime environment
+ */
+int apr_teardown(void)
+{
+ if (g_apr_mempool)
+ apr_pool_destroy(g_apr_mempool);
+ g_apr_mempool = NULL;
+ apr_terminate();
+ return 0;
+}
+
+int this_setup()
+{
+ etch_apr_mempool = g_apr_mempool;
+ return 0;
+}
+
+int this_teardown()
+{
+ return 0;
+}
+
+
+/* - - - - - - - - - - - - - -
+ * unit test support
+ * - - - - - - - - - - - - - -
+ */
+
+/**
+ * do_test_type_field
+ */
+int do_test_type_field(default_value_factory* vf, etch_type* type, etch_field* key, objmask* value)
+{
+ etch_message* msg = new_message(type, 1, (etch_value_factory*)vf);
+
+ const int result = message_put(msg, key, value);
+
+ msg->destroy(msg);
+
+ return result;
+}
+
+
+/* - - - - - - - - - - - - - -
+ * unit tests
+ * - - - - - - - - - - - - - -
+ */
+
+/**
+ * test_constructor
+ * tests that all objects instatiated with a value factory such as builtin types
+ * and associated validators, are freed as expected.
+ */
+void test_constructor(void)
+{
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(vf);
+
+ vf->destroy(vf);
+
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE); /* verify all memory freed */
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear(); /* start fresh for next test */
+}
+
+
+/**
+ * test_builtin_types()
+ * test that the vf contains all expected default types
+ */
+void test_builtin_types(void)
+{
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+ int errs = 0;
+
+ if (NULL == vf->vtab->get_type_by_name(vf, builtins._mt__etch_auth_exception->name))
+ errs++;
+ if (NULL == vf->vtab->get_type_by_name(vf, builtins._mt__etch_datetime->name))
+ errs++;
+ if (NULL == vf->vtab->get_type_by_name(vf, builtins._mt__etch_list->name))
+ errs++;
+ if (NULL == vf->vtab->get_type_by_name(vf, builtins._mt__etch_map->name))
+ errs++;
+ if (NULL == vf->vtab->get_type_by_name(vf, builtins._mt__etch_runtime_exception->name))
+ errs++;
+ if (NULL == vf->vtab->get_type_by_name(vf, builtins._mt__etch_set->name))
+ errs++;
+ if (NULL == vf->vtab->get_type_by_name(vf, builtins._mt__exception->name))
+ errs++;
+
+ CU_ASSERT_EQUAL(errs, 0);
+
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE); /* verify all memory freed */
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear(); /* start fresh for next test */
+}
+
+
+/**
+ * test_add_type_a()
+ * test that a type can be added and its memory automatically freed.
+ */
+void test_add_type_a(void)
+{
+ default_value_factory *dvf = new_default_value_factory(NULL, NULL);
+
+ etch_type* newtype = new_static_type(L"testtype");
+ etch_type* efftype = dvf->vtab->add_type(dvf, newtype); /* not owned by vf */
+ CU_ASSERT_PTR_EQUAL(newtype, efftype);
+
+ dvf->destroy(dvf);
+ destroy_static_type(efftype); /* since not owned by vf */
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE); /* verify all memory freed */
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear(); /* start fresh for next test */
+}
+
+
+/**
+ * test_add_type_b()
+ * test that a duplicate type is rejected as expected.
+ */
+void test_add_type_b(void)
+{
+ default_value_factory *dvf = new_default_value_factory(NULL, NULL);
+
+ wchar_t* samestring = L"sametype";
+ etch_type* newtype1 = new_static_type(samestring);
+ etch_type* newtype2 = new_static_type(samestring);
+
+ etch_type* efftype = dvf->vtab->add_type(dvf, newtype1); /* not owned by vf */
+ CU_ASSERT_PTR_EQUAL(efftype, newtype1);
+
+ /* when try to add a duplicate, vf returns original and destroys duplicate */
+ efftype = dvf->vtab->add_type(dvf, newtype2);
+ CU_ASSERT_PTR_EQUAL(efftype, newtype1);
+
+ dvf->destroy(dvf);
+ destroy_static_type(newtype1); /* since not owned by vf */
+ /* don't destroy newtype2 since vf destroyed it */
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE); /* verify all memory freed */
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear(); /* start fresh for next test */
+}
+
+
+/**
+ * test_add_type_c()
+ * test that a duplicate of a builtin type is handled as expected.
+ */
+void test_add_type_c(void)
+{
+ default_value_factory *dvf = new_default_value_factory(NULL, NULL);
+
+ etch_type* duptype = new_type(str_etch_runtime_exception);
+
+ /* when try to add a duplicate, vf returns original and destroys duplicate */
+ etch_type* efftype = dvf->vtab->add_type(dvf, duptype);
+ CU_ASSERT_PTR_EQUAL(efftype, builtins._mt__etch_runtime_exception);
+
+ dvf->destroy(dvf);
+ /* don't destroy duptype since vf destroyed it */
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE); /* verify all memory freed */
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear(); /* start fresh for next test */
+}
+
+
+/**
+ * test_get_type_by_id()
+ * test that a type can be retrived by its id, and memory accounted for.
+ */
+void test_get_type_by_id(void)
+{
+ /* note that a *reference* is returned (not disposable), not a copy. */
+ unsigned saved_id = 0;
+ etch_type* newtype, *foundtype;
+ default_value_factory *dvf = new_default_value_factory(NULL, NULL);
+
+ newtype = new_type(L"testtype");
+ saved_id = newtype->id;
+ dvf->vtab->add_type(dvf, newtype);
+
+ foundtype = dvf->vtab->get_type_by_id(dvf, saved_id);
+
+ CU_ASSERT_PTR_NOT_NULL_FATAL(foundtype);
+ CU_ASSERT_EQUAL(saved_id, foundtype->id);
+
+ dvf->destroy(dvf);
+ /* newtype->destroy(newtype); */ /* vf now owns its nonstatic user types */
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_get_type_by_name()
+ * test that a type can be retrived by its name, and memory accounted for.
+ */
+void test_get_type_by_name(void)
+{
+ /* note that a *reference* is returned (not disposable), not a copy. */
+ etch_type* newtype, *foundtype;
+ default_value_factory *dvf = new_default_value_factory(NULL, NULL);
+
+ newtype = new_type(L"testtype");
+ dvf->vtab->add_type(dvf, newtype);
+
+ foundtype = dvf->vtab->get_type_by_name(dvf, L"testtype");
+ CU_ASSERT_PTR_NOT_NULL_FATAL(foundtype);
+
+ dvf->destroy(dvf);
+ /* newtype->destroy(newtype); */ /* types map now owns nonstatic user types */
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_get_types()
+ * test that all types can be retrived as a list, and memory accounted for.
+ */
+void test_get_types(void)
+{
+ int result;
+ etch_hashtable* map;
+ etch_iterator iterator;
+ etch_arraylist* typeslist;
+ etch_hashitem hashbucket, *thisitem = &hashbucket;
+
+ default_value_factory *dvf = new_default_value_factory(NULL, NULL);
+ map = dvf->types;
+
+ typeslist = dvf->vtab->get_types(dvf);
+
+ set_iterator(&iterator, typeslist, &typeslist->iterable);
+
+ while(iterator.has_next(&iterator))
+ {
+ /* we're iterating the arraylist, so we're looking at the value,
+ * which of course was the hashtable key */
+ etch_type* thistype = (etch_type*) iterator.current_value;
+ CU_ASSERT_PTR_NOT_NULL_FATAL(thistype);
+
+ /* map.remove() sends us back the key and value if we ask for it. so we
+ * are using remove both to look up the type, and to remove it so we can
+ * verify that the list content is one to one with the types map */
+ result = map->vtab->removeh
+ (map->realtable, thistype->hashkey, map, &thisitem);
+ CU_ASSERT_EQUAL(result, 0);
+
+ result = etchmap_count(map);
+ iterator.next(&iterator);
+ }
+
+ /* assert that list contnent and map content were the same */
+ result = etchmap_count(map);
+ CU_ASSERT_EQUAL(result, 0);
+
+ /* the list is marked to not free content, which is what we want, however
+ * if would not make a difference if it were not, since the types are refs
+ * to the builtin types, thus marked static, and so were the list to invoke
+ * destructors on its content, the destructor would take no action.
+ */
+ typeslist->destroy(typeslist);
+
+ dvf->destroy(dvf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_authxcp_fields()
+ * test that auth exception type is configured as expected
+ */
+void test_authxcp_fields(void)
+{
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ /* apparently the purpose of this test, ported from java test, is to test that
+ * the authxcp type has a _mf_msg field, and that if we then make a message
+ * of type authxcp and put to it a string value keyed by _mf_msg, that it
+ * validates OK. i.e., the _mf_msg field of a authxcp should be a string.
+ */
+ etch_type* msgtype = vf->vtab->get_type_by_name(vf, str_etch_auth_exception);
+ etch_field* msgkey1 = clone_field(builtins._mf_msg);
+ etch_field* msgkey2 = clone_field(builtins._mf_msg);
+ objmask* val_good = (objmask*) new_string(L"dlrow olleh", ETCH_ENCODING_UTF16);
+ objmask* val_unxp = (objmask*) new_int32(0);
+
+ int result = do_test_type_field(vf, msgtype, msgkey1, val_good);
+ CU_ASSERT_EQUAL(result, 0);
+
+ result = do_test_type_field(vf, msgtype, msgkey2, val_unxp);
+ CU_ASSERT_EQUAL(result, -1); /* type validation should fail */
+
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE); /* verify all memory freed */
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear(); /* start fresh for next test */
+}
+
+
+/**
+ * test_rtxcp_fields()
+ * test that runtime exception type is configured as expected
+ */
+void test_rtxcp_fields(void)
+{
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ etch_type* msgtype = vf->vtab->get_type_by_name(vf, str_etch_runtime_exception);
+ etch_field* msgkey1 = clone_field(builtins._mf_msg);
+ etch_field* msgkey2 = clone_field(builtins._mf_msg);
+ objmask* val_good = (objmask*) new_string(L"dlrow olleh", ETCH_ENCODING_UTF16);
+ objmask* val_unxp = (objmask*) new_int32(0);
+
+ int result = do_test_type_field(vf, msgtype, msgkey1, val_good);
+ CU_ASSERT_EQUAL(result, 0);
+
+ result = do_test_type_field(vf, msgtype, msgkey2, val_unxp);
+ CU_ASSERT_EQUAL(result, -1); /* type validation should fail */
+
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE); /* verify all memory freed */
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear(); /* start fresh for next test */
+}
+
+
+/**
+ * test_exception_fields()
+ * test that exception type is configured as expected
+ */
+void test_exception_fields(void)
+{
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ etch_type* msgtype = vf->vtab->get_type_by_name(vf, str_exception);
+ etch_field* key_result = clone_field(builtins._mf_result);
+ etch_field* key_msg_id = clone_field(builtins._mf__message_id);
+ etch_field* key_inrepto = clone_field(builtins._mf__in_reply_to);
+ objmask* val_rtexp = (objmask*) new_etch_exception(EXCPTYPE_ETCHRUNTIME, L"whatever", ETCHEXCP_COPYTEXT);
+ objmask* val_long1 = (objmask*) new_int64(123);
+ objmask* val_long2 = (objmask*) new_int64(456);
+
+ int result = do_test_type_field(vf, msgtype, key_result, val_rtexp);
+ CU_ASSERT_EQUAL(result, 0);
+
+ result = do_test_type_field(vf, msgtype, key_msg_id, val_long1);
+ CU_ASSERT_EQUAL(result, 0);
+
+ result = do_test_type_field(vf, msgtype, key_inrepto, val_long2);
+ CU_ASSERT_EQUAL(result, 0);
+
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE); /* verify all memory freed */
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear(); /* start fresh for next test */
+}
+
+
+/**
+ * test_get_string_encoding()
+ */
+void test_get_string_encoding(void)
+{
+ wchar_t* encoding;
+ etch_string* newstring;
+ int result, etch_encoding;
+ char* teststring = "8 bit characters";
+ default_value_factory *dvf = new_default_value_factory(NULL, NULL);
+
+ /* note that a reference to a raw string is returned */
+ encoding = dvf->vtab->get_string_encoding(dvf);
+
+ result = wcscmp(encoding, L"utf-8");
+ CU_ASSERT_EQUAL(result, 0);
+
+ etch_encoding = get_etch_string_encoding((etch_value_factory*)dvf);
+
+ newstring = new_string("8 bit characters", etch_encoding);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(newstring);
+ result = strcmp(newstring->v.valc, teststring);
+ CU_ASSERT_EQUAL(result, 0);
+
+ newstring->destroy(newstring);
+ dvf->destroy(dvf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_add_mixin()
+ */
+void test_add_mixin(void)
+{
+ int result = 0;
+ default_value_factory *mixvf1, *mixvf2;
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ mixvf1 = new_default_value_factory(NULL, NULL);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(mixvf1);
+ mixvf2 = new_default_value_factory(NULL, NULL);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(mixvf2);
+
+ result = defvf_add_mixin(vf, (etch_value_factory*) mixvf1);
+ CU_ASSERT_EQUAL(result, 0);
+ result = defvf_add_mixin(vf, (etch_value_factory*) mixvf2);
+ CU_ASSERT_EQUAL(result, 0);
+
+ result = vf->mixins->count;
+ CU_ASSERT_EQUAL(result, 2);
+
+ mixvf2->destroy(mixvf2);
+ mixvf1->destroy(mixvf1);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_mixin_recursion
+ * exercise the various vf apis which are mixin-recursive
+ */
+void test_mixin_recursion(void)
+{
+ int result = 0;
+ etch_type* rettype = NULL;
+ wchar_t* str_foo = L"foo", *str_bar = L"bar", *str_bogus = L"wtf";
+ default_value_factory *mixvf1 = NULL, *mixvf2 = NULL;
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+ etch_type* newtype1 = new_static_type(str_foo);
+ etch_type* newtype2 = new_static_type(str_bar);
+
+ mixvf1 = new_default_value_factory(NULL, NULL);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(mixvf1);
+ rettype = mixvf1->vtab->add_type(mixvf1, newtype1);
+ CU_ASSERT_PTR_EQUAL_FATAL(rettype, newtype1);
+
+ mixvf2 = new_default_value_factory(NULL, NULL);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(mixvf2);
+ rettype = mixvf2->vtab->add_type(mixvf2, newtype2);
+ CU_ASSERT_PTR_EQUAL_FATAL(rettype, newtype2);
+
+ result = defvf_add_mixin(vf, (etch_value_factory*) mixvf1);
+ CU_ASSERT_EQUAL(result, 0);
+ result = defvf_add_mixin(vf, (etch_value_factory*) mixvf2);
+ CU_ASSERT_EQUAL(result, 0);
+
+ result = defvf_add_mixin(mixvf1, (etch_value_factory*) mixvf2);
+ CU_ASSERT_EQUAL(result, 0);
+
+ rettype = vf->vtab->get_type_by_name(vf, str_exception);
+ CU_ASSERT_PTR_NOT_NULL(rettype); /* builtin type */
+
+ rettype = vf->vtab->get_type_by_name(mixvf1, str_exception);
+ CU_ASSERT_PTR_NOT_NULL(rettype); /* builtin type */
+
+ rettype = vf->vtab->get_type_by_name(mixvf2, str_exception);
+ CU_ASSERT_PTR_NOT_NULL(rettype); /* builtin type */
+
+ /* mixin recursive by-name lookup */
+ rettype = mixvf1->vtab->get_type_by_name(mixvf1, str_bar);
+ CU_ASSERT_PTR_NOT_NULL(rettype); /* via mixvf1 mixin 1 */
+
+ rettype = vf->vtab->get_type_by_name(vf, str_foo);
+ CU_ASSERT_PTR_NOT_NULL(rettype); /* via vf mixin 1 */
+
+ rettype = vf->vtab->get_type_by_name(vf, str_bar);
+ CU_ASSERT_PTR_NOT_NULL(rettype); /* via vf mixin 2 */
+
+ /* mixin recursive by-id lookup */
+ rettype = mixvf1->vtab->get_type_by_id(mixvf1, newtype2->id);
+ CU_ASSERT_PTR_NOT_NULL(rettype); /* via mixvf1 mixin 1 */
+
+ rettype = vf->vtab->get_type_by_id(vf, newtype1->id);
+ CU_ASSERT_PTR_NOT_NULL(rettype); /* via vf mixin 1 */
+
+ rettype = vf->vtab->get_type_by_id(vf, newtype2->id);
+ CU_ASSERT_PTR_NOT_NULL(rettype); /* via vf mixin 2 */
+
+ /* negative tests will recurse all mixins */
+ rettype = vf->vtab->get_type_by_name(mixvf1, str_bogus);
+ CU_ASSERT_PTR_NULL(rettype);
+
+ rettype = vf->vtab->get_type_by_id(vf, compute_id_name_id_from_widename(str_bogus));
+ CU_ASSERT_PTR_NULL(rettype); /* via vf mixin 1 */
+
+ mixvf2->destroy(mixvf2);
+ mixvf1->destroy(mixvf1);
+ vf->destroy(vf);
+
+ destroy_static_type(newtype1);
+ destroy_static_type(newtype2);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_custom_struct_type
+ *
+ */
+void test_custom_struct_type(void)
+{
+ int result = 0;
+ etch_type* rettype = NULL;
+ wchar_t *str_vf0 = L"vf0", *str_vf1 = L"vf1", *str_vf2 = L"vf2";
+ default_value_factory *vf0, *vf1 = NULL, *vf2 = NULL;
+
+ etch_type* cstype0 = new_static_type(str_vf0);
+ etch_type* cstype1 = new_static_type(str_vf1);
+ etch_type* cstype2 = new_static_type(str_vf2);
+
+ const unsigned short ETCHTYPE_CSCLASS0 = 0xe0, CLASSID_CSCLASS0 = 0xf0;
+ const unsigned short ETCHTYPE_CSCLASS1 = 0xe1, CLASSID_CSCLASS1 = 0xf1;
+ const unsigned short ETCHTYPE_CSCLASS2 = 0xe2, CLASSID_CSCLASS2 = 0xf2;
+ const unsigned short ETCHTYPE_CSBOGUS = 0xe3, CLASSID_BOGUS = 0xf3;
+
+ const unsigned csclass0 = ETCHMAKECLASS(ETCHTYPE_CSCLASS0, CLASSID_CSCLASS0);
+ const unsigned csclass1 = ETCHMAKECLASS(ETCHTYPE_CSCLASS1, CLASSID_CSCLASS1);
+ const unsigned csclass2 = ETCHMAKECLASS(ETCHTYPE_CSCLASS2, CLASSID_CSCLASS2);
+ const unsigned csbogus = ETCHMAKECLASS(ETCHTYPE_CSBOGUS, CLASSID_BOGUS);
+
+ vf0 = new_default_value_factory(NULL, NULL);
+ result = class_to_type_map_put(vf0->class_to_type, csclass0, cstype0);
+ CU_ASSERT_EQUAL_FATAL(result,0);
+
+ vf1 = new_default_value_factory(NULL, NULL);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(vf1);
+ result = class_to_type_map_put(vf1->class_to_type, csclass1, cstype1);
+ CU_ASSERT_EQUAL_FATAL(result,0);
+
+ vf2 = new_default_value_factory(NULL, NULL);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(vf2);
+ result = class_to_type_map_put(vf2->class_to_type, csclass2, cstype2);
+ CU_ASSERT_EQUAL_FATAL(result,0);
+
+ result = defvf_add_mixin(vf0, (etch_value_factory*) vf1);
+ CU_ASSERT_EQUAL(result, 0);
+ result = defvf_add_mixin(vf0, (etch_value_factory*) vf2);
+ CU_ASSERT_EQUAL(result, 0);
+
+ result = defvf_add_mixin(vf1, (etch_value_factory*) vf2);
+ CU_ASSERT_EQUAL(result, 0);
+
+ rettype = vf0->vtab->get_custom_struct_type(vf0, csclass0);
+ CU_ASSERT_PTR_EQUAL(rettype, cstype0);
+
+ /* recurse mixed-in vfs for custom types */
+ rettype = vf0->vtab->get_custom_struct_type(vf0, csclass1);
+ CU_ASSERT_PTR_EQUAL(rettype, cstype1);
+
+ rettype = vf0->vtab->get_custom_struct_type(vf0, csclass2);
+ CU_ASSERT_PTR_EQUAL(rettype, cstype2);
+
+ /* negative test will recurse all mixins */
+ rettype = vf0->vtab->get_custom_struct_type(vf0, csbogus);
+ CU_ASSERT_PTR_NULL(rettype);
+
+ vf2->destroy(vf2);
+ vf1->destroy(vf1);
+ vf0->destroy(vf0);
+
+ destroy_static_type(cstype0);
+ destroy_static_type(cstype1);
+ destroy_static_type(cstype2);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_get_set_message_id()
+ */
+void test_get_set_message_id(void)
+{
+ int result = 0;
+ int64 idvalue = 12345;
+ etch_type* newtype = new_static_type(L"testtype");
+ etch_int64* idobj = new_int64(idvalue), *retobj = NULL;
+
+ default_value_factory *dvf = new_default_value_factory(NULL, NULL);
+
+ etch_message* msg = new_message(newtype, ETCH_DEFSIZE, (etch_value_factory*) dvf);
+
+ etchtype_put_validator(newtype, builtins._mf__message_id, (objmask*) etchvtor_int64_get(0));
+
+ result = dvf->vtab->set_message_id(dvf, msg, idobj); /* we no longer own idobj */
+ CU_ASSERT_EQUAL_FATAL(result,0); /* ensure idobj validates ok */
+
+ /* we get back a reference to the ID object, not a copy */
+ retobj = dvf->vtab->get_message_id(dvf, msg);
+
+ CU_ASSERT_PTR_NOT_NULL_FATAL(retobj);
+ CU_ASSERT_EQUAL(retobj->value, idvalue);
+
+ msg->destroy(msg);
+ dvf->destroy(dvf);
+ destroy_static_type(newtype);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_get_set_in_reply_to()
+ */
+void test_get_set_in_reply_to(void)
+{
+ int result = 0;
+ int64 idvalue = 12345;
+ etch_type* newtype = new_static_type(L"testtype");
+ etch_int64* idobj = new_int64(idvalue), *retobj = NULL;
+
+ default_value_factory *dvf = new_default_value_factory(NULL, NULL);
+
+ etch_message* msg = new_message(newtype, ETCH_DEFSIZE, (etch_value_factory*) dvf);
+
+ etchtype_put_validator(newtype, builtins._mf__in_reply_to, (objmask*) etchvtor_int64_get(0));
+
+ result = dvf->vtab->set_in_reply_to(dvf, msg, idobj);
+ CU_ASSERT_EQUAL_FATAL(result,0); /* ensure idobj validates ok */
+
+ /* we get back a reference to the ID, not a copy */
+ retobj = dvf->vtab->get_in_reply_to(dvf, msg);
+
+ CU_ASSERT_PTR_NOT_NULL_FATAL(retobj);
+ CU_ASSERT_EQUAL(retobj->value, idvalue);
+
+ msg->destroy(msg);
+ dvf->destroy(dvf);
+ destroy_static_type(newtype);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_export_custom_value_exception()
+ * export an etch_exception
+ */
+void test_export_custom_value_exception(void)
+{
+ int result = 0;
+ etch_structvalue* sv = NULL;
+ etch_serializer* impexhelper = NULL;
+ etch_string* exported_stringobj = NULL;
+ etch_exception* nullptr_exception = NULL;
+ wchar_t* exception_string_u = L"dlr0w 0ll3h";
+ char* exception_string_a = "dlr0w 0ll3h";
+ char* exception_string_out = NULL, *substr = NULL;
+
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ nullptr_exception = new_etch_exception
+ (EXCPTYPE_NULLPTR, exception_string_u, ETCHEXCP_COPYTEXT);
+
+ /* retain ownership of nullptr_exception, assume ownership of returned struct */
+ sv = vf->vtab->export_custom_value(vf, (objmask*) nullptr_exception);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ /* we could hard code the struct key for the test, but to be thorough
+ * let's get it programmatically. we get the import-export helper for
+ * the type of object we are exporting (exception). from the helper
+ * will get the key for the expected string export value, which should
+ * be an etch_field of name "msg" */
+ impexhelper = etchtype_get_impexphelper(builtins._mt__exception);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ /* get reference to exported object from struct, expected to be an
+ * etch_string wrapping an ascii string which is the exception text.
+ * the exception text will contain the instance text specified above,
+ * specifically it should be "null pointer exception dlr0w 0ll3h" */
+ exported_stringobj = (etch_string*) structvalue_get(sv, impexhelper->field);
+ result = is_etch_string(exported_stringobj);
+ CU_ASSERT_EQUAL_FATAL(result,TRUE);
+
+ exception_string_out = exported_stringobj->v.valc;
+ CU_ASSERT_PTR_NOT_NULL_FATAL(exception_string_out);
+
+ substr = strstr(exception_string_out, exception_string_a);
+ CU_ASSERT_PTR_NOT_NULL(substr);
+
+ nullptr_exception->destroy(nullptr_exception);
+ sv->destroy(sv);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_import_custom_value_exception()
+ * import an etch exception type
+ */
+void test_import_custom_value_exception(void)
+{
+ etch_structvalue* sv = NULL;
+ etch_exception* inexcp = NULL;
+ default_value_factory *vf = NULL;
+ etch_serializer* impexhelper = NULL;
+ char *outtext = "null pointer exception fubar";
+ wchar_t *expected = L"null pointer exception fubar", *intext = NULL;
+ int result = 0;
+
+ vf = new_default_value_factory(NULL, NULL);
+
+ impexhelper = etchtype_get_impexphelper(builtins._mt__exception);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ sv = new_structvalue(builtins._mt__exception, 1);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ result = structvalue_put(sv, clone_field(impexhelper->field),
+ (objmask*) new_string(outtext, ETCH_ENCODING_UTF8));
+ CU_ASSERT_EQUAL_FATAL(result,0);
+
+ /* relinquish ownership of struct, assume ownership of inexcp */
+ /* todo need to serialize exception type perhaps, in order to be able to
+ * re-instantiate an exception as a null pointer exception for example */
+ inexcp = (etch_exception*) vf->vtab->import_custom_value(vf, sv);
+ CU_ASSERT_EQUAL_FATAL(is_etch_exception(inexcp), TRUE);
+
+ intext = inexcp->value->excptext;
+ CU_ASSERT_PTR_NOT_NULL_FATAL(intext);
+ result = wcscmp(intext, expected);
+ CU_ASSERT_EQUAL(result,0);
+
+ inexcp->destroy(inexcp);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_export_custom_value_runtime_exception()
+ * export an etch_runtime_exception
+ */
+void test_export_custom_value_runtime_exception(void)
+{
+ int result = 0;
+ etch_structvalue* sv = NULL;
+ etch_serializer* impexhelper = NULL;
+ etch_string* exported_stringobj = NULL;
+ etch_exception* runtime_exception = NULL;
+ wchar_t* exception_string_u = L"tey rabuf ew era";
+ char* exception_string_a = "tey rabuf ew era";
+ char* exception_string_out = NULL, *substr = NULL;
+
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ runtime_exception = new_etch_exception
+ (EXCPTYPE_ETCHRUNTIME, exception_string_u, ETCHEXCP_COPYTEXT);
+
+ /* retain ownership of runtime_exception, assume ownership of returned struct */
+ sv = vf->vtab->export_custom_value(vf, (objmask*) runtime_exception);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ /* see comments at this spot in test_export_custom_value_exception */
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_runtime_exception);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ /* get reference to exported object from struct, expected to be an
+ * etch_string wrapping an ascii string which is the exception text.
+ * the exception text will contain the instance text specified above,
+ * specifically it should be "etch runtime exception tey rabuf ew era" */
+ exported_stringobj = (etch_string*) structvalue_get(sv, impexhelper->field);
+ result = is_etch_string(exported_stringobj);
+ CU_ASSERT_EQUAL_FATAL(result,TRUE);
+
+ exception_string_out = exported_stringobj->v.valc;
+ CU_ASSERT_PTR_NOT_NULL_FATAL(exception_string_out);
+
+ substr = strstr(exception_string_out, exception_string_a);
+ CU_ASSERT_PTR_NOT_NULL(substr);
+
+ runtime_exception->destroy(runtime_exception);
+ sv->destroy(sv);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_import_custom_value_runtime_exception()
+ * import an etch rutime exception type
+ */
+void test_import_custom_value_runtime_exception(void)
+{
+ etch_structvalue* sv = NULL;
+ etch_exception* inexcp = NULL;
+ default_value_factory *vf = NULL;
+ etch_serializer* impexhelper = NULL;
+ char *outtext = "etch runtime exception fubar";
+ wchar_t *expected = L"etch runtime exception fubar", *intext = NULL;
+ int result = 0;
+
+ vf = new_default_value_factory(NULL, NULL);
+
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_runtime_exception);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ sv = new_structvalue(builtins._mt__etch_runtime_exception, 1);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ result = structvalue_put(sv, clone_field(impexhelper->field),
+ (objmask*) new_string(outtext, ETCH_ENCODING_UTF8));
+ CU_ASSERT_EQUAL_FATAL(result,0);
+
+ /* relinquish ownership of struct, assume ownership of inexcp */
+ inexcp = (etch_exception*) vf->vtab->import_custom_value(vf, sv);
+ CU_ASSERT_EQUAL_FATAL(is_etch_exception(inexcp), TRUE);
+
+ intext = inexcp->value->excptext;
+ CU_ASSERT_PTR_NOT_NULL_FATAL(intext);
+ result = wcscmp(intext, expected);
+ CU_ASSERT_EQUAL(result,0);
+
+ inexcp->destroy(inexcp);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_export_custom_value_list()
+ * export an etch list type
+ */
+void test_export_custom_value_list(void)
+{
+ int result = 0;
+ etch_iterator iterator;
+ etch_structvalue* sv = NULL;
+ etch_arraylist* outlist = NULL;
+ etch_arraylist* explist = NULL;
+ etch_serializer* impexhelper = NULL;
+
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ outlist = new_arraylist(0,0);
+ outlist->content_type = ETCHARRAYLIST_CONTENT_OBJECT;
+ outlist->is_readonly = FALSE;
+ outlist->content_obj_type = ETCHTYPEB_PRIMITIVE;
+ outlist->content_class_id = CLASSID_PRIMITIVE_INT32;
+ arraylist_add(outlist, new_int32(1));
+ arraylist_add(outlist, new_int32(2));
+
+ /* retain ownership of outlist, assume ownership of returned struct */
+ sv = vf->vtab->export_custom_value(vf, (objmask*) outlist);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ /* see comments at this spot in test_export_custom_value_exception() */
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_list);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ /* get reference to exported object from struct, an etch_arraylist whose
+ * members are references to the same objects populated in outlist.
+ * note that while it may seem convoluted to export to the same type of
+ * objects as the object being exported from, the reason is a consistent
+ * export interface, i.e. memory for the exported from object is always
+ * relinquished, memory for exported to objects is always acquired. and
+ * since we can't pass around raw arrays as does the java binding in this
+ * case, the list export helper chooses to use an arraylist as the export
+ * object type for lists.
+ */
+ explist = (etch_arraylist*) structvalue_get(sv, impexhelper->field);
+ result = is_etch_arraylist(explist);
+ CU_ASSERT_EQUAL_FATAL(result,TRUE);
+ CU_ASSERT_EQUAL(explist->count,2);
+
+ set_iterator(&iterator, explist, &explist->iterable);
+
+ /* verify that exported list content is same as original */
+ while(iterator.has_next(&iterator))
+ {
+ etch_int32* intobj = iterator.current_value;
+ CU_ASSERT_EQUAL_FATAL(is_etch_int32(intobj), TRUE);
+ switch(intobj->value) { case 1: case 2: break; default: result = -1; }
+ CU_ASSERT_NOT_EQUAL(result, -1);
+ iterator.next(&iterator);
+ }
+
+ outlist->destroy(outlist);
+ sv->destroy(sv);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_import_custom_value_list()
+ * import an etch list type
+ */
+void test_import_custom_value_list(void)
+{
+ etch_iterator iterator;
+ etch_structvalue* sv = NULL;
+ etch_arraylist* inlist = NULL;
+ etch_arraylist* outlist = NULL;
+ default_value_factory *vf = NULL;
+ etch_serializer* impexhelper = NULL;
+ int result = 0;
+
+ vf = new_default_value_factory(NULL, NULL);
+
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_list);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ sv = new_structvalue(builtins._mt__etch_list, 1);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ outlist = new_synchronized_arraylist(2,0);
+ outlist->content_type = ETCHARRAYLIST_CONTENT_OBJECT;
+ outlist->content_obj_type = ETCHTYPEB_PRIMITIVE;
+ outlist->content_class_id = CLASSID_PRIMITIVE_INT32;
+ arraylist_add(outlist, new_int32(1));
+ arraylist_add(outlist, new_int32(2));
+
+ result = structvalue_put(sv, clone_field(impexhelper->field), (objmask*) outlist);
+ CU_ASSERT_EQUAL_FATAL(result,0);
+
+ /* relinquish ownership of struct and outlist, assume ownership of inlist */
+ inlist = (etch_arraylist*) vf->vtab->import_custom_value(vf, sv);
+ CU_ASSERT_EQUAL_FATAL(is_etch_arraylist(inlist), TRUE);
+
+ set_iterator(&iterator, inlist, &inlist->iterable);
+
+ /* verify that imported list content is same as original */
+ while(iterator.has_next(&iterator))
+ {
+ etch_int32* intobj = iterator.current_value;
+ CU_ASSERT_EQUAL_FATAL(is_etch_int32(intobj), TRUE);
+ switch(intobj->value) { case 1: case 2: break; default: result = -1; }
+ CU_ASSERT_NOT_EQUAL(result, -1);
+ iterator.next(&iterator);
+ }
+
+ inlist->destroy(inlist);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_export_custom_value_map()
+ * export an etch map type
+ */
+void test_export_custom_value_map(void)
+{
+ etch_iterator iterator;
+ etch_structvalue* sv = NULL;
+ etch_hashtable* outmap = NULL;
+ etch_arraylist* explist = NULL;
+ etch_serializer* impexhelper = NULL;
+ int result = 0, outmapcount = 0;
+
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ outmap = new_etch_map(0); /* etch_map is an object-to-object hashtable */
+ etchmap_map_add (outmap, (objmask*) new_string("1", ETCH_ENCODING_ASCII), (objmask*) new_int32(1));
+ etchmap_map_add (outmap, (objmask*) new_string("2", ETCH_ENCODING_ASCII), (objmask*) new_int32(2));
+ outmapcount = etchmap_count(outmap);
+ CU_ASSERT_EQUAL_FATAL(outmapcount, 2);
+
+ /* retain ownership of outmap, assume ownership of returned struct */
+ sv = vf->vtab->export_custom_value(vf, (objmask*) outmap);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ /* see comments at this spot in test_export_custom_value_exception() */
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_map);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ /* get reference to exported object from struct, an etch_arraylist whose
+ * members are references to the keys and values from outmap.
+ */
+ explist = (etch_arraylist*) structvalue_get(sv, impexhelper->field);
+ CU_ASSERT_EQUAL_FATAL(is_etch_arraylist(explist), TRUE);
+ CU_ASSERT_EQUAL(explist->count, outmapcount * 2);
+
+ set_iterator(&iterator, explist, &explist->iterable);
+
+ /* verify that exported list content matches that of original map */
+ while(iterator.has_next(&iterator))
+ {
+ if (iterator.ordinal & 1) /* key is at every other list entry */
+ { etch_string* key = iterator.current_value;
+ CU_ASSERT_EQUAL(is_etch_string(key), TRUE);
+ }
+ else /* value follows its key */
+ { etch_int32* val = iterator.current_value;
+ CU_ASSERT_EQUAL_FATAL(is_etch_int32(val), TRUE);
+ switch(val->value) { case 1: case 2: break; default: result = -1; }
+ CU_ASSERT_NOT_EQUAL(result, -1);
+ }
+
+ iterator.next(&iterator);
+ }
+
+ outmap->destroy(outmap);
+ sv->destroy(sv);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_import_custom_value_map()
+ * import an etch map type
+ */
+void test_import_custom_value_map(void)
+{
+ etch_iterator iterator;
+ etch_structvalue* sv = NULL;
+ etch_hashtable* inmap = NULL;
+ etch_arraylist* outlist = NULL;
+ default_value_factory *vf = NULL;
+ etch_serializer* impexhelper = NULL;
+ int result = 0, mapcount = 0;
+
+ vf = new_default_value_factory(NULL, NULL);
+
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_map);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ sv = new_structvalue(builtins._mt__etch_map, 1);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ outlist = new_synchronized_arraylist(4,0);
+ arraylist_add (outlist, (objmask*) new_string("1", ETCH_ENCODING_ASCII));
+ arraylist_add (outlist, (objmask*) new_int32(1));
+ arraylist_add (outlist, (objmask*) new_string("2", ETCH_ENCODING_ASCII));
+ arraylist_add (outlist, (objmask*) new_int32(2));
+
+ result = structvalue_put(sv, clone_field(impexhelper->field), (objmask*) outlist);
+ CU_ASSERT_EQUAL_FATAL(result,0);
+
+ /* relinquish ownership of struct and outlist, assume ownership of inmap */
+ inmap = (etch_hashtable*) vf->vtab->import_custom_value(vf, sv);
+ CU_ASSERT_EQUAL_FATAL(is_etch_hashtable(inmap), TRUE);
+
+ set_iterator(&iterator, inmap, &inmap->iterable);
+
+ /* verify that imported map content is same as original */
+ while(iterator.has_next(&iterator))
+ {
+ etch_string* keyobj = iterator.current_key;
+ etch_int32* valobj = iterator.current_value;
+ CU_ASSERT_EQUAL_FATAL(is_etch_string(keyobj), TRUE);
+ CU_ASSERT_EQUAL_FATAL(is_etch_int32(valobj), TRUE);
+ switch(valobj->value) { case 1: case 2: break; default: result = -1; }
+ CU_ASSERT_NOT_EQUAL(result, -1);
+
+ iterator.next(&iterator);
+ }
+
+ inmap->destroy(inmap);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_export_custom_value_set()
+ * export an etch set type
+ */
+void test_export_custom_value_set(void)
+{
+ etch_iterator iterator;
+ etch_structvalue* sv = NULL;
+ etch_hashtable* outset = NULL;
+ etch_arraylist* explist = NULL;
+ etch_serializer* impexhelper = NULL;
+ int result = 0, outsetcount = 0;
+
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ outset = new_etch_set(0); /* etch_set is an object-to-null hashtable */
+ etchmap_set_add (outset, (objmask*) new_string("1", ETCH_ENCODING_ASCII));
+ etchmap_set_add (outset, (objmask*) new_string("2", ETCH_ENCODING_ASCII));
+ outsetcount = etchmap_count(outset);
+ CU_ASSERT_EQUAL_FATAL(outsetcount, 2);
+
+ /* retain ownership of outset, assume ownership of returned struct */
+ sv = vf->vtab->export_custom_value(vf, (objmask*) outset);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ /* see comments at this spot in test_export_custom_value_exception() */
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_set);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ /* get reference to exported object from struct, an etch_arraylist
+ * whose values are references to the keys from the original set */
+ explist = (etch_arraylist*) structvalue_get(sv, impexhelper->field);
+ CU_ASSERT_EQUAL_FATAL(is_etch_arraylist(explist), TRUE);
+ CU_ASSERT_EQUAL(explist->count, outsetcount);
+
+ set_iterator(&iterator, explist, &explist->iterable);
+
+ /* verify that exported list content matches that of original set */
+ while(iterator.has_next(&iterator))
+ {
+ etch_string* setmember = iterator.current_value;
+ CU_ASSERT_EQUAL(is_etch_string(setmember), TRUE);
+ iterator.next(&iterator);
+ }
+
+ outset->destroy(outset);
+ sv->destroy(sv);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_import_custom_value_set()
+ * import an etch set type
+ */
+void test_import_custom_value_set(void)
+{
+ etch_iterator iterator;
+ etch_structvalue* sv = NULL;
+ etch_hashtable* inset = NULL;
+ etch_arraylist* outlist = NULL;
+ default_value_factory *vf = NULL;
+ etch_serializer* impexhelper = NULL;
+ int result = 0, setcount = 0;
+
+ vf = new_default_value_factory(NULL, NULL);
+
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_set);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ sv = new_structvalue(builtins._mt__etch_set, 1);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ outlist = new_synchronized_arraylist(2,0);
+ arraylist_add (outlist, (objmask*) new_string("1", ETCH_ENCODING_ASCII));
+ arraylist_add (outlist, (objmask*) new_string("2", ETCH_ENCODING_ASCII));
+
+ result = structvalue_put(sv, clone_field(impexhelper->field), (objmask*) outlist);
+ CU_ASSERT_EQUAL_FATAL(result,0);
+
+ /* relinquish ownership of struct and outlist, assume ownership of inset */
+ inset = (etch_hashtable*) vf->vtab->import_custom_value(vf, sv);
+ CU_ASSERT_EQUAL_FATAL(is_etch_set(inset), TRUE);
+
+ set_iterator(&iterator, inset, &inset->iterable);
+
+ /* verify that imported map content is same as original */
+ while(iterator.has_next(&iterator))
+ {
+ etch_string* setobj = iterator.current_key;
+ CU_ASSERT_EQUAL(is_etch_string(setobj), TRUE);
+ CU_ASSERT_PTR_NULL(iterator.current_value);
+ iterator.next(&iterator);
+ }
+
+ inset->destroy(inset);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_export_custom_value_date()
+ * export an etch date type
+ */
+void test_export_custom_value_date(void)
+{
+ etch_date* outdate = NULL;
+ etch_int64* expdate = NULL;
+ etch_structvalue* sv = NULL;
+ etch_serializer* impexhelper = NULL;
+
+ default_value_factory *vf = new_default_value_factory(NULL, NULL);
+
+ outdate = new_date();
+
+ /* retain ownership of outdate, assume ownership of returned struct */
+ sv = vf->vtab->export_custom_value(vf, (objmask*) outdate);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ /* see comments at this spot in test_export_custom_value_exception() */
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_datetime);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ /* get reference to exported etch_int64 object from struct */
+ expdate = (etch_int64*) structvalue_get(sv, impexhelper->field);
+ CU_ASSERT_EQUAL_FATAL(is_etch_int64(expdate), TRUE);
+
+ outdate->destroy(outdate);
+ sv->destroy(sv);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+/**
+ * test_import_custom_value_date()
+ * import an etch date type
+ */
+void test_import_custom_value_date(void)
+{
+ etch_date* indate = NULL;
+ etch_int64* outval = NULL;
+ etch_structvalue* sv = NULL;
+ default_value_factory *vf = NULL;
+ etch_serializer* impexhelper = NULL;
+ time_t outtime, intime;
+ int result = 0;
+ time(&outtime);
+
+ vf = new_default_value_factory(NULL, NULL);
+
+ impexhelper = etchtype_get_impexphelper(builtins._mt__etch_datetime);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(impexhelper);
+
+ sv = new_structvalue(builtins._mt__etch_datetime, 1);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(sv);
+
+ result = structvalue_put(sv, clone_field(impexhelper->field), (objmask*) new_int64(outtime));
+ CU_ASSERT_EQUAL_FATAL(result,0);
+
+ /* relinquish ownership of struct, assume ownership of indate */
+ indate = (etch_date*) vf->vtab->import_custom_value(vf, sv);
+ CU_ASSERT_EQUAL_FATAL(is_etch_date(indate), TRUE);
+
+ intime = (time_t) indate->value;
+ CU_ASSERT_EQUAL(intime, outtime);
+
+ indate->destroy(indate);
+ vf->destroy(vf);
+ etchvf_free_builtins();
+
+ g_bytes_allocated = etch_showmem(0, IS_DEBUG_CONSOLE);
+ CU_ASSERT_EQUAL(g_bytes_allocated, 0);
+ memtable_clear();
+}
+
+
+
+/**
+ * main
+ */
+int _tmain(int argc, _TCHAR* argv[])
+{
+ char c=0;
+ CU_pSuite pSuite = NULL;
+ g_is_automated_test = argc > 1 && 0 != wcscmp(argv[1], L"-a");
+ if (CUE_SUCCESS != CU_initialize_registry()) return 0;
+ pSuite = CU_add_suite("suite_defvf", init_suite, clean_suite);
+ CU_set_output_filename("../test_defvf");
+ etch_watch_id = 0;
+
+ CU_add_test(pSuite, "test constructor", test_constructor);
+ CU_add_test(pSuite, "test builtins", test_builtin_types);
+ CU_add_test(pSuite, "test add type a", test_add_type_a);
+ CU_add_test(pSuite, "test add type b", test_add_type_b);
+ CU_add_test(pSuite, "test add type c", test_add_type_c);
+ CU_add_test(pSuite, "test get type by id", test_get_type_by_id);
+ CU_add_test(pSuite, "test get type by name", test_get_type_by_name);
+ CU_add_test(pSuite, "test get all types", test_get_types);
+ CU_add_test(pSuite, "test auth excp fields", test_authxcp_fields);
+ CU_add_test(pSuite, "test runtime excp fields", test_rtxcp_fields);
+ CU_add_test(pSuite, "test get_set_message_id", test_get_set_message_id);
+ CU_add_test(pSuite, "test get_set_in_reply_to", test_get_set_in_reply_to);
+ CU_add_test(pSuite, "test exception fields", test_exception_fields);
+ CU_add_test(pSuite, "test get encoding", test_get_string_encoding);
+
+ CU_add_test(pSuite, "test add mixin", test_add_mixin);
+ CU_add_test(pSuite, "test mixin recursion", test_mixin_recursion);
+ CU_add_test(pSuite, "test custom struct type", test_custom_struct_type);
+
+ CU_add_test(pSuite, "test export custom (exception)", test_export_custom_value_exception);
+ CU_add_test(pSuite, "test export custom (runtime)", test_export_custom_value_runtime_exception);
+ CU_add_test(pSuite, "test export custom (list)", test_export_custom_value_list);
+ CU_add_test(pSuite, "test export custom (map)", test_export_custom_value_map);
+ CU_add_test(pSuite, "test export custom (set)", test_export_custom_value_set);
+ CU_add_test(pSuite, "test export custom (date)", test_export_custom_value_date);
+
+ CU_add_test(pSuite, "test import custom (exception)", test_import_custom_value_exception);
+ CU_add_test(pSuite, "test import custom (runtime)", test_import_custom_value_runtime_exception);
+ CU_add_test(pSuite, "test import custom (list)", test_import_custom_value_list);
+ CU_add_test(pSuite, "test import custom (map)", test_import_custom_value_map);
+ CU_add_test(pSuite, "test import custom (set)", test_import_custom_value_set);
+ CU_add_test(pSuite, "test import custom (date)", test_import_custom_value_date);
+
+ if (g_is_automated_test)
+ CU_automated_run_tests();
+ else
+ { CU_basic_set_mode(CU_BRM_VERBOSE);
+ CU_basic_run_tests();
+ }
+
+ if (!g_is_automated_test) { printf("any key ..."); while(!c) c = _getch(); printf("\n"); }
+ CU_cleanup_registry();
+ return CU_get_error();
+}
\ No newline at end of file
Added: incubator/etch/trunk/binding-c/runtime/c/project/test/test_defvalufact/test_defvalufact.vcproj
URL: http://svn.apache.org/viewvc/incubator/etch/trunk/binding-c/runtime/c/project/test/test_defvalufact/test_defvalufact.vcproj?rev=767594&view=auto
==============================================================================
--- incubator/etch/trunk/binding-c/runtime/c/project/test/test_defvalufact/test_defvalufact.vcproj (added)
+++ incubator/etch/trunk/binding-c/runtime/c/project/test/test_defvalufact/test_defvalufact.vcproj Wed Apr 22 17:25:43 2009
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="test_defvalufact"
+ ProjectGUID="{ADDAC8DC-1E51-42DF-A81A-1775C7DBDF1D}"
+ RootNamespace="test_defvalufact"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\inc;..\..\..\ext\hashtab;"$(APRPATH)\inc";"$(CUNITPATH)\inc""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;APR_DECLARE_STATIC"
+ MinimalRebuild="false"
+ ExceptionHandling="0"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ WarnAsError="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="1"
+ CompileAs="1"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/NODEFAULTLIB:LIBCMTD"
+ AdditionalDependencies="libcunit.lib etch.lib jenkhash.lib apr-1.lib WS2_32.LIB Mswsock.lib"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="..\..\..\lib;..\..\..\ext\lib;"$(APRPATH)\lib";"$(CUNITPATH)\lib\win32""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\test_defvalufact.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>