few JSON fixes and tests

This commit is contained in:
aleks-f 2013-03-18 20:59:29 -05:00
parent 9cc9697e2a
commit ab952e689d
8 changed files with 946 additions and 184 deletions

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="debug_shared|Win32">
@ -32,83 +32,83 @@
<RootNamespace>Benchmark</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_md|Win32&apos;" Label="Configuration">
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_md|Win32&apos;" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_mt|Win32&apos;" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_mt|Win32&apos;" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_shared|Win32&apos;" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_shared|Win32&apos;" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
<ImportGroup Label="ExtensionSettings"/>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_md|Win32&apos;" Label="PropertySheets">
<Import Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_md|Win32&apos;" Label="PropertySheets">
<Import Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_mt|Win32&apos;" Label="PropertySheets">
<Import Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_mt|Win32&apos;" Label="PropertySheets">
<Import Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_shared|Win32&apos;" Label="PropertySheets">
<Import Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
</ImportGroup>
<ImportGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_shared|Win32&apos;" Label="PropertySheets">
<Import Condition="exists(&apos;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&apos;)" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros"/>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_shared|Win32&apos;">bin\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_shared|Win32&apos;">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_shared|Win32&apos;">true</LinkIncremental>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_shared|Win32&apos;">bin\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_shared|Win32&apos;">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_shared|Win32&apos;">false</LinkIncremental>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_mt|Win32&apos;">bin\static_mt\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_mt|Win32&apos;">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_mt|Win32&apos;">true</LinkIncremental>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_mt|Win32&apos;">bin\static_mt\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_mt|Win32&apos;">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_mt|Win32&apos;">false</LinkIncremental>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_md|Win32&apos;">bin\static_md\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_md|Win32&apos;">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_md|Win32&apos;">true</LinkIncremental>
<OutDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_md|Win32&apos;">bin\static_md\</OutDir>
<IntDir Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_md|Win32&apos;">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_md|Win32&apos;">false</LinkIncremental>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_shared|Win32&apos;">Benchmarkd</TargetName>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_md|Win32&apos;">Benchmarkd</TargetName>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_mt|Win32&apos;">Benchmarkd</TargetName>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_shared|Win32&apos;">Benchmark</TargetName>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_md|Win32&apos;">Benchmark</TargetName>
<TargetName Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_mt|Win32&apos;">Benchmark</TargetName>
<OutDir Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">bin\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">bin\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">bin\static_mt\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">bin\static_mt\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">bin\static_md\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">bin\static_md\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">obj\$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">false</LinkIncremental>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">Benchmarkd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">Benchmarkd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">Benchmarkd</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">Benchmark</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">Benchmark</TargetName>
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">Benchmark</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_shared|Win32&apos;">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.\;.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<MinimalRebuild>true</MinimalRebuild>
@ -118,7 +118,7 @@
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>Default</CompileAs>
@ -135,14 +135,14 @@
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_shared|Win32&apos;">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.\;.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@ -150,9 +150,9 @@
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<DebugInformationFormat />
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
@ -167,10 +167,10 @@
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_mt|Win32&apos;">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.\;.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<MinimalRebuild>true</MinimalRebuild>
@ -180,7 +180,7 @@
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>Default</CompileAs>
@ -197,14 +197,14 @@
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_mt|Win32&apos;">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.\;.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -212,9 +212,9 @@
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<DebugInformationFormat />
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
@ -229,10 +229,10 @@
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;debug_static_md|Win32&apos;">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.\;.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<MinimalRebuild>true</MinimalRebuild>
@ -242,7 +242,7 @@
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<CompileAs>Default</CompileAs>
@ -259,14 +259,14 @@
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="&apos;$(Configuration)|$(Platform)&apos;==&apos;release_static_md|Win32&apos;">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>.\;.\include;..\..\..\Foundation\include;..\..\..\JSON\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@ -274,9 +274,9 @@
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeader/>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat/>
<DebugInformationFormat />
<CompileAs>Default</CompileAs>
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
@ -292,8 +292,8 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="src\Benchmark.cpp"/>
<ClCompile Include="src\Benchmark.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
<ImportGroup Label="ExtensionTargets"/>
</Project>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>

View File

@ -1,88 +0,0 @@
{"web-app": {
"servlet": [
{
"servlet-name": "cofaxCDS",
"servlet-class": "org.cofax.cds.CDSServlet",
"init-param": {
"configGlossary:installationAt": "Philadelphia, PA",
"configGlossary:adminEmail": "ksm@pobox.com",
"configGlossary:poweredBy": "Cofax",
"configGlossary:poweredByIcon": "/images/cofax.gif",
"configGlossary:staticPath": "/content/static",
"templateProcessorClass": "org.cofax.WysiwygTemplate",
"templateLoaderClass": "org.cofax.FilesTemplateLoader",
"templatePath": "templates",
"templateOverridePath": "",
"defaultListTemplate": "listTemplate.htm",
"defaultFileTemplate": "articleTemplate.htm",
"useJSP": false,
"jspListTemplate": "listTemplate.jsp",
"jspFileTemplate": "articleTemplate.jsp",
"cachePackageTagsTrack": 200,
"cachePackageTagsStore": 200,
"cachePackageTagsRefresh": 60,
"cacheTemplatesTrack": 100,
"cacheTemplatesStore": 50,
"cacheTemplatesRefresh": 15,
"cachePagesTrack": 200,
"cachePagesStore": 100,
"cachePagesRefresh": 10,
"cachePagesDirtyRead": 10,
"searchEngineListTemplate": "forSearchEnginesList.htm",
"searchEngineFileTemplate": "forSearchEngines.htm",
"searchEngineRobotsDb": "WEB-INF/robots.db",
"useDataStore": true,
"dataStoreClass": "org.cofax.SqlDataStore",
"redirectionClass": "org.cofax.SqlRedirection",
"dataStoreName": "cofax",
"dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
"dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
"dataStoreUser": "sa",
"dataStorePassword": "dataStoreTestQuery",
"dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
"dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
"dataStoreInitConns": 10,
"dataStoreMaxConns": 100,
"dataStoreConnUsageLimit": 100,
"dataStoreLogLevel": "debug",
"maxUrlLength": 500}},
{
"servlet-name": "cofaxEmail",
"servlet-class": "org.cofax.cds.EmailServlet",
"init-param": {
"mailHost": "mail1",
"mailHostOverride": "mail2"}},
{
"servlet-name": "cofaxAdmin",
"servlet-class": "org.cofax.cds.AdminServlet"},
{
"servlet-name": "fileServlet",
"servlet-class": "org.cofax.cds.FileServlet"},
{
"servlet-name": "cofaxTools",
"servlet-class": "org.cofax.cms.CofaxToolsServlet",
"init-param": {
"templatePath": "toolstemplates/",
"log": 1,
"logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
"logMaxSize": "",
"dataLog": 1,
"dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
"dataLogMaxSize": "",
"removePageCache": "/content/admin/remove?cache=pages&id=",
"removeTemplateCache": "/content/admin/remove?cache=templates&id=",
"fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
"lookInContext": 1,
"adminGroupID": 4,
"betaServer": true}}],
"servlet-mapping": {
"cofaxCDS": "/",
"cofaxEmail": "/cofaxutil/aemail/*",
"cofaxAdmin": "/admin/*",
"fileServlet": "/static/*",
"cofaxTools": "/tools/*"},
"taglib": {
"taglib-uri": "cofax.tld",
"taglib-location": "/WEB-INF/tlds/cofax.tld"}}}

View File

@ -0,0 +1,377 @@
{
"id": 1,
"jsonrpc": "2.0",
"total": 10,
"result": [
{
"id": 1,
"guid": "5a81c42a-3a88-4aec-b5e5-0b23e0257050",
"picture": "http://placehold.it/32x32",
"age": 21,
"name": "Trinity Brown",
"gender": "male",
"company": "Unconix",
"phone": "803-425-3647",
"email": "trinity@unconix.com",
"address": "12676, Alaska, Stanton Streets",
"about": "Odio dolore iriure dignissim qui erat, commodo ad nisl consequat ex, zzril at sed amet. Ut, suscipit et hendrerit hendrerit amet, erat ex dolor accumsan nonummy, duis molestie qui. Suscipit hendrerit, aliquip ea consequat ex nulla, velit minim eum ex veniam, dignissim feugait. Praesent dolor ut, duis et ea illum nisl, duis delenit consectetuer amet velit, nonummy. Ad ipsum dolore duis, velit lorem ut veniam dolore, iusto euismod vulputate accumsan qui, esse qui illum at suscipit, tation eu dignissim feugait nostrud, quis dolor lobortis quis. Eum, lobortis eros vulputate in ut, nostrud dolor quis velit.",
"registered": "2001-10-29T21:55:29 +06:00",
"tags": [
"consequat",
"illum",
"quis",
"blandit",
"at",
"sed",
"autem"
],
"friends": [
{
"id": 1,
"name": "Vanessa Winter"
},
{
"id": 2,
"name": "Paige Bush"
},
{
"id": 3,
"name": "Charlotte Hawkins"
}
]
},
{
"id": 2,
"guid": "509284c3-bfe8-408f-9c78-a83d04ea1cf0",
"picture": "http://placehold.it/32x32",
"age": 20,
"name": "Alexis Winter",
"gender": "male",
"company": "Orthomedia",
"phone": "863-548-3237",
"email": "alexis@orthomedia.com",
"address": "25834, Arvada, Orchard Street",
"about": "Consequat nisl ex blandit duis vel, dolore ad at feugait minim, et dolor feugait vel. Consequat, duis zzril aliquam hendrerit molestie, iusto feugait minim nulla elit, nisl magna feugait. At ut, ut nibh suscipit dolore nulla, commodo nulla in nulla ullamcorper, dignissim dolore. Euismod enim velit, autem ut nonummy lobortis nostrud, dolore dolore.",
"registered": "2003-05-07T15:53:16 +05:00",
"tags": [
"elit",
"zzril",
"dolor",
"minim",
"te",
"nostrud",
"dolore"
],
"friends": [
{
"id": 1,
"name": "Sophia Michaelson"
},
{
"id": 2,
"name": "Addison Oswald"
},
{
"id": 3,
"name": "Zoey Watson"
}
]
},
{
"id": 3,
"guid": "0829a469-3705-4761-a1df-b6cb36734f7a",
"picture": "http://placehold.it/32x32",
"age": 34,
"name": "Allison Thomson",
"gender": "female",
"company": "Systheon",
"phone": "862-442-3338",
"email": "allison@systheon.com",
"address": "12431, CostaMesa, Madison Avenue",
"about": "Facilisi vel nulla sit dolore tincidunt, dolore erat ut delenit wisi, consequat dolor te ullamcorper. Vulputate, accumsan duis minim in praesent, dignissim zzril tincidunt suscipit accumsan, tation et diam. Nostrud et, blandit erat ex dolore blandit, dolore augue sed facilisis sed, exerci enim. Ut enim adipiscing, ut blandit euismod molestie ipsum, in elit hendrerit aliquam magna, adipiscing. Facilisis ullamcorper suscipit feugait, elit hendrerit duis delenit consectetuer, nulla eum consequat duis veniam, nostrud nisl.",
"registered": "1990-10-13T14:33:09 +05:00",
"tags": [
"qui",
"nibh",
"amet",
"amet",
"vel",
"ut",
"dolore"
],
"friends": [
{
"id": 1,
"name": "Julia Watson"
},
{
"id": 2,
"name": "Zoey Abramson"
},
{
"id": 3,
"name": "Trinity Bush"
}
]
},
{
"id": 4,
"guid": "2c100af6-faae-420f-87ae-0fe99ed7de3f",
"picture": "http://placehold.it/32x32",
"age": 40,
"name": "Brooklyn Wood",
"gender": "female",
"company": "Sontopia",
"phone": "807-489-3737",
"email": "brooklyn@sontopia.com",
"address": "27794, ElkGrove, Mercer Street",
"about": "Ut ipsum ad vero ad facilisis, te tincidunt dolore blandit illum, ad lobortis et ut. Elit, nibh ullamcorper commodo nostrud dolor, magna vero eum dolore ex, nibh velit adipiscing. Consequat veniam, volutpat duis elit accumsan feugiat, augue qui vel quis dolore, odio at. Blandit ut hendrerit, minim qui euismod nisl euismod, sed sit.",
"registered": "2007-11-26T22:49:19 +06:00",
"tags": [
"iriure",
"duis",
"ullamcorper",
"volutpat",
"vero",
"commodo",
"hendrerit"
],
"friends": [
{
"id": 1,
"name": "Kylie Hancock"
},
{
"id": 2,
"name": "Alexis Miers"
},
{
"id": 3,
"name": "Chloe Vance"
}
]
},
{
"id": 5,
"guid": "cf22a343-1932-4f07-bdac-f264a3071aaf",
"picture": "http://placehold.it/32x32",
"age": 22,
"name": "Eva Hoggarth",
"gender": "male",
"company": "Multitiqua",
"phone": "828-523-3529",
"email": "eva@multitiqua.com",
"address": "31339, ElkGrove, Wall Street",
"about": "Luptatum zzril aliquam minim exerci minim, eu commodo eros luptatum in, tation ut quis ut. Zzril, consequat nostrud eu lobortis blandit, vulputate nostrud in elit dolor, accumsan dignissim wisi. Delenit eros, enim magna duis hendrerit vel, ad wisi dolore eum lorem, volutpat velit. Odio nisl feugait, amet eu enim eum ex, ad tation magna quis autem, zzril. Erat magna illum laoreet, tincidunt tation ea amet consequat, ipsum accumsan feugiat nulla adipiscing, ipsum feugait diam amet facilisis, minim tincidunt suscipit et iusto.",
"registered": "2010-08-17T00:26:44 +05:00",
"tags": [
"laoreet",
"consequat",
"wisi",
"ex",
"luptatum",
"exerci",
"augue"
],
"friends": [
{
"id": 1,
"name": "Autumn Youmans"
},
{
"id": 2,
"name": "Rachel Carter"
},
{
"id": 3,
"name": "Lily Cook"
}
]
},
{
"id": 6,
"guid": "25e8e6ee-d59e-413d-93f5-f384ea816810",
"picture": "http://placehold.it/32x32",
"age": 30,
"name": "Natalie Vaughan",
"gender": "female",
"company": "Westmedia",
"phone": "822-427-3735",
"email": "natalie@westmedia.com",
"address": "24904, Chicago, Gansevoort Streets",
"about": "Velit autem aliquip et augue vel, wisi ipsum accumsan qui duis, hendrerit ut veniam feugiat. Illum, enim minim velit diam diam, suscipit veniam dolor veniam dignissim, tation tation enim. Facilisis delenit, sit eros nulla ad zzril, nostrud at in iusto magna, luptatum aliquip. Eu velit iusto, qui facilisis luptatum praesent commodo, nibh euismod feugait sit tincidunt, consequat. Ex sed dignissim nostrud, iriure.",
"registered": "2001-07-11T12:49:29 +05:00",
"tags": [
"dolore",
"euismod",
"tincidunt",
"magna",
"dolor",
"feugiat",
"euismod"
],
"friends": [
{
"id": 1,
"name": "Katherine Brown"
},
{
"id": 2,
"name": "Autumn Fulton"
},
{
"id": 3,
"name": "Autumn Thornton"
}
]
},
{
"id": 7,
"guid": "f6249355-5b23-4af9-92f1-d33cf1b39f01",
"picture": "http://placehold.it/32x32",
"age": 38,
"name": "Lily Carter",
"gender": "male",
"company": "Pacwest",
"phone": "822-589-2881",
"email": "lily@pacwest.com",
"address": "12917, GardenGrove, Stanton Streets",
"about": "Magna dolor diam ullamcorper dolore sed, ex eum erat dignissim nulla, enim feugait dolore te. Tincidunt, praesent elit feugait volutpat tation, commodo consequat ad dolor consequat, blandit et consequat. In diam, laoreet dolore enim nonummy veniam, volutpat nulla dolore laoreet nonummy, diam nulla. Ullamcorper dolor feugait, blandit vel exerci molestie eu, vulputate amet consequat zzril accumsan, ut. Wisi dolor dolor nostrud, aliquam feugait diam vero aliquam, commodo praesent iusto amet vulputate, wisi lorem dolore iriure eros, aliquam delenit iusto ut illum, et zzril nisl nulla. Dolore, euismod eum odio augue augue, ipsum facilisis tation dolor vel, eu.",
"registered": "2007-12-24T05:59:22 +06:00",
"tags": [
"sit",
"qui",
"praesent",
"diam",
"autem",
"minim",
"hendrerit"
],
"friends": [
{
"id": 1,
"name": "Hailey Ward"
},
{
"id": 2,
"name": "Angelina Goodman"
},
{
"id": 3,
"name": "Natalie Ogden"
}
]
},
{
"id": 8,
"guid": "8cc65b3f-93a8-4f8c-8469-2f8da054c306",
"picture": "http://placehold.it/32x32",
"age": 26,
"name": "Kayla Hoggarth",
"gender": "male",
"company": "Steganoconiche",
"phone": "865-411-3442",
"email": "kayla@steganoconiche.com",
"address": "11739, Centennial, Stanton Streets",
"about": "Nibh illum autem luptatum ea nonummy, lorem nisl duis volutpat nonummy, hendrerit tation euismod te. Hendrerit, dolore ea wisi blandit nostrud, nulla laoreet facilisi exerci duis, elit qui dignissim. Ullamcorper dolor, ut aliquam aliquip sed feugait, zzril blandit dolore aliquam odio, autem vulputate. Eu diam nonummy, hendrerit feugiat euismod ut duis, ipsum et ad quis qui, aliquip. Nulla.",
"registered": "2009-01-01T17:35:59 +06:00",
"tags": [
"illum",
"eu",
"autem",
"zzril",
"vel",
"nostrud",
"autem"
],
"friends": [
{
"id": 1,
"name": "Angelina Crossman"
},
{
"id": 2,
"name": "Mariah Stanley"
},
{
"id": 3,
"name": "Kimberly Campbell"
}
]
},
{
"id": 9,
"guid": "a04867e3-2307-42ab-8ea2-081ec1df1b5a",
"picture": "http://placehold.it/32x32",
"age": 40,
"name": "Gabriella Clapton",
"gender": "male",
"company": "Vencom",
"phone": "873-478-3303",
"email": "gabriella@vencom.com",
"address": "38424, Boise, Wooster Street",
"about": "Duis tation suscipit eros ut wisi, adipiscing enim laoreet adipiscing molestie, in sed dignissim facilisi. Commodo, veniam eum ut dolor nostrud, laoreet vulputate et odio facilisis, aliquam vulputate volutpat. Wisi erat, ut consequat consequat ea consequat, autem hendrerit minim augue consequat, luptatum quis. Vulputate commodo ad, praesent dolor sed aliquam praesent, ipsum et nulla quis nonummy, in. Delenit ut suscipit dignissim, consequat luptatum tation duis ullamcorper, veniam adipiscing in enim nulla, amet facilisi commodo esse tincidunt, euismod vero quis qui augue, iriure velit minim lorem. Magna, ut.",
"registered": "2005-08-25T08:27:39 +05:00",
"tags": [
"volutpat",
"dolor",
"eros",
"dolore",
"feugiat",
"vero",
"magna"
],
"friends": [
{
"id": 1,
"name": "Maya Cramer"
},
{
"id": 2,
"name": "Ashley Walkman"
},
{
"id": 3,
"name": "Emily Crossman"
}
]
},
{
"id": 10,
"guid": "6e1d0252-7055-4dee-9e6d-1820dea57822",
"picture": "http://placehold.it/32x32",
"age": 21,
"name": "Eva Oldridge",
"gender": "female",
"company": "Dynarama",
"phone": "808-456-2464",
"email": "eva@dynarama.com",
"address": "37511, Gilbert, Lafayette Street",
"about": "Dolore ad suscipit exerci ex facilisi, dolor erat amet euismod minim, consequat ut aliquip duis. Eu, et eros facilisis vel eu, erat aliquam ut et hendrerit, enim hendrerit ipsum. Consequat lobortis, augue sed veniam delenit accumsan, feugiat nulla iriure quis vel, enim iusto. Nonummy nibh nostrud, molestie ut exerci consectetuer.",
"registered": "1994-04-10T14:58:35 +05:00",
"tags": [
"exerci",
"ut",
"duis",
"illum",
"praesent",
"in",
"ex"
],
"friends": [
{
"id": 1,
"name": "Alexandra Warren"
},
{
"id": 2,
"name": "Abigail Hodges"
},
{
"id": 3,
"name": "Kayla Chapman"
}
]
}
]
}

View File

@ -32,7 +32,6 @@
//
#include "Poco/Timestamp.h"
#include "Poco/JSON/Parser.h"
#include "Poco/JSON/ParseHandler.h"
#include "Poco/JSON/JSONException.h"
@ -41,33 +40,30 @@
#include "Poco/File.h"
#include "Poco/FileStream.h"
#include "Poco/StreamCopier.h"
#include "Poco/Stopwatch.h"
#include <iostream>
#include <iomanip>
void printTimeDiff(const Poco::Timestamp& start, const Poco::Timestamp& end)
{
Poco::Timestamp::TimeDiff diff = end - start;
std::cout << std::setw(25) << std::left << diff;
}
int main(int argc, char** argv)
{
Poco::Stopwatch sw;
Poco::JSON::Object::Ptr obj;
std::string dir = Poco::Environment::get("POCO_BASE") + "/JSON/samples/Benchmark/";
Poco::Path filePath(dir, "input");
Poco::Path filePath(dir, "input.json");
std::ostringstream ostr;
if ( filePath.isFile() )
if (filePath.isFile())
{
Poco::File inputFile(filePath);
if ( inputFile.exists() )
{
sw.start();
Poco::FileInputStream fis(filePath.toString());
Poco::StreamCopier::copyStream(fis, ostr);
sw.stop();
}
else
{
@ -76,21 +72,33 @@ int main(int argc, char** argv)
}
}
std::cout << std::setw(25) << "POCO JSON";
std::cout << "JSON Benchmark" << std::endl;
std::cout << "==============" << std::endl;
std::string jsonStr = ostr.str();
std::cout << "Total of " << jsonStr.size() << " bytes," << std::endl << "loaded in " << sw.elapsed() << " [us]," << std::endl;
std::cout << std::endl << "POCO JSON Parse" << std::endl;
std::cout << "---------" << std::endl;
Poco::JSON::Parser parser;
sw.restart();
parser.parse(jsonStr);
sw.stop();
std::cout << "parsed in " << sw.elapsed() << " [us]," << std::endl;
std::cout << std::endl << "POCO JSON Handle/Stringify" << std::endl;
std::cout << "--------------------------" << std::endl;
try
{
Poco::JSON::ParseHandler handler;
Poco::JSON::Parser parser;
parser.setHandler(&handler);
Poco::Timestamp time1;
sw.restart();
parser.parse(jsonStr);
Poco::DynamicAny result = handler.result();
Poco::Timestamp time2;
printTimeDiff(time1, time2);
sw.stop();
std::cout << "parsed/handled in " << sw.elapsed() << " [us]," << std::endl;
if ( result.type() == typeid(Poco::JSON::Object::Ptr) )
{
obj = result.extract<Poco::JSON::Object::Ptr>();
@ -98,10 +106,10 @@ int main(int argc, char** argv)
//Serialize to string
std::ostringstream out;
Poco::Timestamp time3;
sw.restart();
obj->stringify(out);
Poco::Timestamp time4;
printTimeDiff(time3, time4);
sw.stop();
std::cout << "stringified in " << sw.elapsed() << " [us]." << std::endl;
std::cout << std::endl;
}
catch(Poco::JSON::JSONException jsone)

View File

@ -594,7 +594,10 @@ bool Parser::readRow(bool firstCall)
{
if (token->asChar() == ',')
{
_handler->comma();
if (_handler != NULL)
{
_handler->comma();
}
return true; // Read next row
}
else if (token->asChar() == '}')
@ -781,7 +784,10 @@ bool Parser::readElements(bool firstCall)
if (token->asChar() == ',')
{
_handler->comma();
if (_handler != NULL)
{
_handler->comma();
}
return true;
}

View File

@ -0,0 +1,377 @@
{
"id": 1,
"jsonrpc": "2.0",
"total": 10,
"result": [
{
"id": 1,
"guid": "5a81c42a-3a88-4aec-b5e5-0b23e0257050",
"picture": "http://placehold.it/32x32",
"age": 21,
"name": "Trinity Brown",
"gender": "male",
"company": "Unconix",
"phone": "803-425-3647",
"email": "trinity@unconix.com",
"address": "12676, Alaska, Stanton Streets",
"about": "Odio dolore iriure dignissim qui erat, commodo ad nisl consequat ex, zzril at sed amet. Ut, suscipit et hendrerit hendrerit amet, erat ex dolor accumsan nonummy, duis molestie qui. Suscipit hendrerit, aliquip ea consequat ex nulla, velit minim eum ex veniam, dignissim feugait. Praesent dolor ut, duis et ea illum nisl, duis delenit consectetuer amet velit, nonummy. Ad ipsum dolore duis, velit lorem ut veniam dolore, iusto euismod vulputate accumsan qui, esse qui illum at suscipit, tation eu dignissim feugait nostrud, quis dolor lobortis quis. Eum, lobortis eros vulputate in ut, nostrud dolor quis velit.",
"registered": "2001-10-29T21:55:29 +06:00",
"tags": [
"consequat",
"illum",
"quis",
"blandit",
"at",
"sed",
"autem"
],
"friends": [
{
"id": 1,
"name": "Vanessa Winter"
},
{
"id": 2,
"name": "Paige Bush"
},
{
"id": 3,
"name": "Charlotte Hawkins"
}
]
},
{
"id": 2,
"guid": "509284c3-bfe8-408f-9c78-a83d04ea1cf0",
"picture": "http://placehold.it/32x32",
"age": 20,
"name": "Alexis Winter",
"gender": "male",
"company": "Orthomedia",
"phone": "863-548-3237",
"email": "alexis@orthomedia.com",
"address": "25834, Arvada, Orchard Street",
"about": "Consequat nisl ex blandit duis vel, dolore ad at feugait minim, et dolor feugait vel. Consequat, duis zzril aliquam hendrerit molestie, iusto feugait minim nulla elit, nisl magna feugait. At ut, ut nibh suscipit dolore nulla, commodo nulla in nulla ullamcorper, dignissim dolore. Euismod enim velit, autem ut nonummy lobortis nostrud, dolore dolore.",
"registered": "2003-05-07T15:53:16 +05:00",
"tags": [
"elit",
"zzril",
"dolor",
"minim",
"te",
"nostrud",
"dolore"
],
"friends": [
{
"id": 1,
"name": "Sophia Michaelson"
},
{
"id": 2,
"name": "Addison Oswald"
},
{
"id": 3,
"name": "Zoey Watson"
}
]
},
{
"id": 3,
"guid": "0829a469-3705-4761-a1df-b6cb36734f7a",
"picture": "http://placehold.it/32x32",
"age": 34,
"name": "Allison Thomson",
"gender": "female",
"company": "Systheon",
"phone": "862-442-3338",
"email": "allison@systheon.com",
"address": "12431, CostaMesa, Madison Avenue",
"about": "Facilisi vel nulla sit dolore tincidunt, dolore erat ut delenit wisi, consequat dolor te ullamcorper. Vulputate, accumsan duis minim in praesent, dignissim zzril tincidunt suscipit accumsan, tation et diam. Nostrud et, blandit erat ex dolore blandit, dolore augue sed facilisis sed, exerci enim. Ut enim adipiscing, ut blandit euismod molestie ipsum, in elit hendrerit aliquam magna, adipiscing. Facilisis ullamcorper suscipit feugait, elit hendrerit duis delenit consectetuer, nulla eum consequat duis veniam, nostrud nisl.",
"registered": "1990-10-13T14:33:09 +05:00",
"tags": [
"qui",
"nibh",
"amet",
"amet",
"vel",
"ut",
"dolore"
],
"friends": [
{
"id": 1,
"name": "Julia Watson"
},
{
"id": 2,
"name": "Zoey Abramson"
},
{
"id": 3,
"name": "Trinity Bush"
}
]
},
{
"id": 4,
"guid": "2c100af6-faae-420f-87ae-0fe99ed7de3f",
"picture": "http://placehold.it/32x32",
"age": 40,
"name": "Brooklyn Wood",
"gender": "female",
"company": "Sontopia",
"phone": "807-489-3737",
"email": "brooklyn@sontopia.com",
"address": "27794, ElkGrove, Mercer Street",
"about": "Ut ipsum ad vero ad facilisis, te tincidunt dolore blandit illum, ad lobortis et ut. Elit, nibh ullamcorper commodo nostrud dolor, magna vero eum dolore ex, nibh velit adipiscing. Consequat veniam, volutpat duis elit accumsan feugiat, augue qui vel quis dolore, odio at. Blandit ut hendrerit, minim qui euismod nisl euismod, sed sit.",
"registered": "2007-11-26T22:49:19 +06:00",
"tags": [
"iriure",
"duis",
"ullamcorper",
"volutpat",
"vero",
"commodo",
"hendrerit"
],
"friends": [
{
"id": 1,
"name": "Kylie Hancock"
},
{
"id": 2,
"name": "Alexis Miers"
},
{
"id": 3,
"name": "Chloe Vance"
}
]
},
{
"id": 5,
"guid": "cf22a343-1932-4f07-bdac-f264a3071aaf",
"picture": "http://placehold.it/32x32",
"age": 22,
"name": "Eva Hoggarth",
"gender": "male",
"company": "Multitiqua",
"phone": "828-523-3529",
"email": "eva@multitiqua.com",
"address": "31339, ElkGrove, Wall Street",
"about": "Luptatum zzril aliquam minim exerci minim, eu commodo eros luptatum in, tation ut quis ut. Zzril, consequat nostrud eu lobortis blandit, vulputate nostrud in elit dolor, accumsan dignissim wisi. Delenit eros, enim magna duis hendrerit vel, ad wisi dolore eum lorem, volutpat velit. Odio nisl feugait, amet eu enim eum ex, ad tation magna quis autem, zzril. Erat magna illum laoreet, tincidunt tation ea amet consequat, ipsum accumsan feugiat nulla adipiscing, ipsum feugait diam amet facilisis, minim tincidunt suscipit et iusto.",
"registered": "2010-08-17T00:26:44 +05:00",
"tags": [
"laoreet",
"consequat",
"wisi",
"ex",
"luptatum",
"exerci",
"augue"
],
"friends": [
{
"id": 1,
"name": "Autumn Youmans"
},
{
"id": 2,
"name": "Rachel Carter"
},
{
"id": 3,
"name": "Lily Cook"
}
]
},
{
"id": 6,
"guid": "25e8e6ee-d59e-413d-93f5-f384ea816810",
"picture": "http://placehold.it/32x32",
"age": 30,
"name": "Natalie Vaughan",
"gender": "female",
"company": "Westmedia",
"phone": "822-427-3735",
"email": "natalie@westmedia.com",
"address": "24904, Chicago, Gansevoort Streets",
"about": "Velit autem aliquip et augue vel, wisi ipsum accumsan qui duis, hendrerit ut veniam feugiat. Illum, enim minim velit diam diam, suscipit veniam dolor veniam dignissim, tation tation enim. Facilisis delenit, sit eros nulla ad zzril, nostrud at in iusto magna, luptatum aliquip. Eu velit iusto, qui facilisis luptatum praesent commodo, nibh euismod feugait sit tincidunt, consequat. Ex sed dignissim nostrud, iriure.",
"registered": "2001-07-11T12:49:29 +05:00",
"tags": [
"dolore",
"euismod",
"tincidunt",
"magna",
"dolor",
"feugiat",
"euismod"
],
"friends": [
{
"id": 1,
"name": "Katherine Brown"
},
{
"id": 2,
"name": "Autumn Fulton"
},
{
"id": 3,
"name": "Autumn Thornton"
}
]
},
{
"id": 7,
"guid": "f6249355-5b23-4af9-92f1-d33cf1b39f01",
"picture": "http://placehold.it/32x32",
"age": 38,
"name": "Lily Carter",
"gender": "male",
"company": "Pacwest",
"phone": "822-589-2881",
"email": "lily@pacwest.com",
"address": "12917, GardenGrove, Stanton Streets",
"about": "Magna dolor diam ullamcorper dolore sed, ex eum erat dignissim nulla, enim feugait dolore te. Tincidunt, praesent elit feugait volutpat tation, commodo consequat ad dolor consequat, blandit et consequat. In diam, laoreet dolore enim nonummy veniam, volutpat nulla dolore laoreet nonummy, diam nulla. Ullamcorper dolor feugait, blandit vel exerci molestie eu, vulputate amet consequat zzril accumsan, ut. Wisi dolor dolor nostrud, aliquam feugait diam vero aliquam, commodo praesent iusto amet vulputate, wisi lorem dolore iriure eros, aliquam delenit iusto ut illum, et zzril nisl nulla. Dolore, euismod eum odio augue augue, ipsum facilisis tation dolor vel, eu.",
"registered": "2007-12-24T05:59:22 +06:00",
"tags": [
"sit",
"qui",
"praesent",
"diam",
"autem",
"minim",
"hendrerit"
],
"friends": [
{
"id": 1,
"name": "Hailey Ward"
},
{
"id": 2,
"name": "Angelina Goodman"
},
{
"id": 3,
"name": "Natalie Ogden"
}
]
},
{
"id": 8,
"guid": "8cc65b3f-93a8-4f8c-8469-2f8da054c306",
"picture": "http://placehold.it/32x32",
"age": 26,
"name": "Kayla Hoggarth",
"gender": "male",
"company": "Steganoconiche",
"phone": "865-411-3442",
"email": "kayla@steganoconiche.com",
"address": "11739, Centennial, Stanton Streets",
"about": "Nibh illum autem luptatum ea nonummy, lorem nisl duis volutpat nonummy, hendrerit tation euismod te. Hendrerit, dolore ea wisi blandit nostrud, nulla laoreet facilisi exerci duis, elit qui dignissim. Ullamcorper dolor, ut aliquam aliquip sed feugait, zzril blandit dolore aliquam odio, autem vulputate. Eu diam nonummy, hendrerit feugiat euismod ut duis, ipsum et ad quis qui, aliquip. Nulla.",
"registered": "2009-01-01T17:35:59 +06:00",
"tags": [
"illum",
"eu",
"autem",
"zzril",
"vel",
"nostrud",
"autem"
],
"friends": [
{
"id": 1,
"name": "Angelina Crossman"
},
{
"id": 2,
"name": "Mariah Stanley"
},
{
"id": 3,
"name": "Kimberly Campbell"
}
]
},
{
"id": 9,
"guid": "a04867e3-2307-42ab-8ea2-081ec1df1b5a",
"picture": "http://placehold.it/32x32",
"age": 40,
"name": "Gabriella Clapton",
"gender": "male",
"company": "Vencom",
"phone": "873-478-3303",
"email": "gabriella@vencom.com",
"address": "38424, Boise, Wooster Street",
"about": "Duis tation suscipit eros ut wisi, adipiscing enim laoreet adipiscing molestie, in sed dignissim facilisi. Commodo, veniam eum ut dolor nostrud, laoreet vulputate et odio facilisis, aliquam vulputate volutpat. Wisi erat, ut consequat consequat ea consequat, autem hendrerit minim augue consequat, luptatum quis. Vulputate commodo ad, praesent dolor sed aliquam praesent, ipsum et nulla quis nonummy, in. Delenit ut suscipit dignissim, consequat luptatum tation duis ullamcorper, veniam adipiscing in enim nulla, amet facilisi commodo esse tincidunt, euismod vero quis qui augue, iriure velit minim lorem. Magna, ut.",
"registered": "2005-08-25T08:27:39 +05:00",
"tags": [
"volutpat",
"dolor",
"eros",
"dolore",
"feugiat",
"vero",
"magna"
],
"friends": [
{
"id": 1,
"name": "Maya Cramer"
},
{
"id": 2,
"name": "Ashley Walkman"
},
{
"id": 3,
"name": "Emily Crossman"
}
]
},
{
"id": 10,
"guid": "6e1d0252-7055-4dee-9e6d-1820dea57822",
"picture": "http://placehold.it/32x32",
"age": 21,
"name": "Eva Oldridge",
"gender": "female",
"company": "Dynarama",
"phone": "808-456-2464",
"email": "eva@dynarama.com",
"address": "37511, Gilbert, Lafayette Street",
"about": "Dolore ad suscipit exerci ex facilisi, dolor erat amet euismod minim, consequat ut aliquip duis. Eu, et eros facilisis vel eu, erat aliquam ut et hendrerit, enim hendrerit ipsum. Consequat lobortis, augue sed veniam delenit accumsan, feugiat nulla iriure quis vel, enim iusto. Nonummy nibh nostrud, molestie ut exerci consectetuer.",
"registered": "1994-04-10T14:58:35 +05:00",
"tags": [
"exerci",
"ut",
"duis",
"illum",
"praesent",
"in",
"ex"
],
"friends": [
{
"id": 1,
"name": "Alexandra Warren"
},
{
"id": 2,
"name": "Abigail Hodges"
},
{
"id": 3,
"name": "Kayla Chapman"
}
]
}
]
}

View File

@ -342,6 +342,83 @@ void JSONTest::testEmptyObject()
}
void JSONTest::testComplexObject()
{
std::string json =
"{"
"\"id\": 1,"
"\"jsonrpc\": \"2.0\","
"\"total\": 1,"
"\"result\": ["
"{"
"\"id\": 1,"
"\"guid\": \"67acfb26-17eb-4a75-bdbd-f0669b7d8f73\","
"\"picture\": \"http://placehold.it/32x32\","
"\"age\": 40,"
"\"name\": \"Angelina Crossman\","
"\"gender\": \"female\","
"\"company\": \"Raylog\","
"\"phone\": \"892-470-2803\","
"\"email\": \"angelina@raylog.com\","
"\"address\": \"20726, CostaMesa, Horatio Streets\","
"\"about\": \"Consectetuer suscipit volutpat eros dolor euismod, "
"et dignissim in feugiat sed, ea tation exerci quis. Consectetuer, "
"dolor dolore ad vero ullamcorper, tincidunt facilisis at in facilisi, "
"iusto illum illum. Autem nibh, sed elit consequat volutpat tation, "
"nisl lorem lorem sed tation, facilisis dolore. Augue odio molestie, "
"dolor zzril nostrud aliquam sed, wisi dolor et ut iusto, ea. Magna "
"ex qui facilisi, hendrerit quis in eros ut, zzril nibh dolore nisl "
"suscipit, vulputate elit ut lobortis exerci, nulla dolore eros at "
"aliquam, ullamcorper vero ad iusto. Adipiscing, nisl eros exerci "
"nisl vel, erat in luptatum in duis, iusto.\","
"\"registered\": \"2008-04-09T11:13:17 +05:00\","
"\"tags\": ["
"\"ut\","
"\"accumsan\","
"\"feugait\","
"\"ex\","
"\"odio\","
"\"consequat\","
"\"delenit\""
"],"
"\"friends\": ["
"{"
"\"id\": 1,"
"\"name\": \"Hailey Hardman\""
"},"
"{"
"\"id\": 2,"
"\"name\": \"Bailey Oldridge\""
"},"
"{"
"\"id\": 3,"
"\"name\": \"Makayla Campbell\""
"}"
"]"
"}"
"]"
"}";
Parser parser;
Var result;
try
{
ParseHandler handler;
parser.setHandler(&handler);
parser.parse(json);
result = handler.result();
}
catch(JSONException& jsone)
{
std::cout << jsone.message() << std::endl;
assert(false);
}
assert(result.type() == typeid(Object::Ptr));
}
void JSONTest::testDoubleProperty()
{
std::string json = "{ \"test\" : 123.45 }";
@ -1273,14 +1350,17 @@ void JSONTest::testInvalidUnicodeJanssonFiles()
void JSONTest::testTemplate()
{
Template tpl;
tpl.parse("Hello world! From <?= person.name ?>\n<?if person.toOld ?>You're too old<?endif?>\n");
tpl.parse("Hello world! From <?= person.name?>.\n<?if person.tooOld?>You're too old.<?endif?>");
Object::Ptr data = new Object();
Object::Ptr person = new Object();
data->set("person", person);
person->set("name", "Franky");
person->set("toOld", true);
tpl.render(data, std::cout);
person->set("tooOld", true);
std::ostringstream ostr;
tpl.render(data, ostr);
std::cout << ostr.str();
assert (ostr.str() == "Hello world! From Franky.\nYou're too old.");
}
@ -1363,6 +1443,7 @@ CppUnit::Test* JSONTest::suite()
#endif
CppUnit_addTest(pSuite, JSONTest, testStringProperty);
CppUnit_addTest(pSuite, JSONTest, testEmptyObject);
CppUnit_addTest(pSuite, JSONTest, testComplexObject);
CppUnit_addTest(pSuite, JSONTest, testDoubleProperty);
CppUnit_addTest(pSuite, JSONTest, testDouble2Property);
CppUnit_addTest(pSuite, JSONTest, testDouble3Property);

View File

@ -57,6 +57,7 @@ public:
#endif
void testStringProperty();
void testEmptyObject();
void testComplexObject();
void testDoubleProperty();
void testDouble2Property();
void testDouble3Property();