Skip to content

Commit 45c499d

Browse files
committed
- added mini unit testing framework
- added unit tests for Value.isXYZ() and iteration over Value members to compute size
1 parent 932cfc7 commit 45c499d

10 files changed

Lines changed: 1342 additions & 2 deletions

File tree

SConstruct

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,12 @@ def buildJSONTests( env, target_sources, target_name ):
231231
check_alias_target = env.Alias( 'check', jsontests_node, RunJSONTests( jsontests_node, jsontests_node ) )
232232
env.AlwaysBuild( check_alias_target )
233233

234+
def buildUnitTests( env, target_sources, target_name ):
235+
jsontests_node = buildJSONExample( env, target_sources, target_name )
236+
check_alias_target = env.Alias( 'check', jsontests_node,
237+
RunUnitTests( jsontests_node, jsontests_node ) )
238+
env.AlwaysBuild( check_alias_target )
239+
234240
def buildLibrary( env, target_sources, target_name ):
235241
static_lib = env.StaticLibrary( target=target_name + '_${LIB_NAME_SUFFIX}',
236242
source=target_sources )
@@ -242,7 +248,7 @@ def buildLibrary( env, target_sources, target_name ):
242248
env.Install( lib_dir, shared_lib )
243249
env['SRCDIST_ADD']( source=[target_sources] )
244250

245-
Export( 'env env_testing buildJSONExample buildLibrary buildJSONTests' )
251+
Export( 'env env_testing buildJSONExample buildLibrary buildJSONTests buildUnitTests' )
246252

247253
def buildProjectInDirectory( target_directory ):
248254
global build_dir
@@ -266,6 +272,18 @@ import SCons.Action
266272
ActionFactory = SCons.Action.ActionFactory
267273
RunJSONTests = ActionFactory(runJSONTests_action, runJSONTests_string )
268274

275+
def runUnitTests_action( target, source = None, env = None ):
276+
# Add test scripts to python path
277+
jsontest_path = Dir( '#test' ).abspath
278+
sys.path.insert( 0, jsontest_path )
279+
import rununittests
280+
return rununittests.runAllTests( os.path.abspath(source[0].path) )
281+
282+
def runUnitTests_string( target, source = None, env = None ):
283+
return 'RunUnitTests("%s")' % source[0]
284+
285+
RunUnitTests = ActionFactory(runUnitTests_action, runUnitTests_string )
286+
269287
env.Alias( 'check' )
270288

271289
srcdist_cmd = env['SRCDIST_ADD']( source = """
@@ -275,6 +293,7 @@ env.Alias( 'src-dist', srcdist_cmd )
275293

276294
buildProjectInDirectory( 'src/jsontestrunner' )
277295
buildProjectInDirectory( 'src/lib_json' )
296+
buildProjectInDirectory( 'src/test_lib_json' )
278297
buildProjectInDirectory( 'doc' )
279298
#print env.Dump()
280299

include/json/config.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
/// Only has effects if JSON_VALUE_USE_INTERNAL_MAP is defined.
2020
//# define JSON_USE_SIMPLE_INTERNAL_ALLOCATOR 1
2121

22+
/// If defined, indicates that Json use exception to report invalid type manipulation
23+
/// instead of C assert macro.
24+
# define JSON_USE_EXCEPTION 1
2225

2326
# ifdef JSON_IN_CPPTL
2427
# include <cpptl/config.h>

makefiles/vs71/jsoncpp.sln

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsontest", "jsontest.vcproj
88
{B84F7231-16CE-41D8-8C08-7B523FF4225B} = {B84F7231-16CE-41D8-8C08-7B523FF4225B}
99
EndProjectSection
1010
EndProject
11+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_lib_json", "test_lib_json.vcproj", "{B7A96B78-2782-40D2-8F37-A2DEF2B9C26D}"
12+
ProjectSection(ProjectDependencies) = postProject
13+
{B84F7231-16CE-41D8-8C08-7B523FF4225B} = {B84F7231-16CE-41D8-8C08-7B523FF4225B}
14+
EndProjectSection
15+
EndProject
1116
Global
1217
GlobalSection(SolutionConfiguration) = preSolution
1318
Debug = Debug
@@ -27,6 +32,12 @@ Global
2732
{25AF2DD2-D396-4668-B188-488C33B8E620}.dummy.Build.0 = Debug|Win32
2833
{25AF2DD2-D396-4668-B188-488C33B8E620}.Release.ActiveCfg = Release|Win32
2934
{25AF2DD2-D396-4668-B188-488C33B8E620}.Release.Build.0 = Release|Win32
35+
{B7A96B78-2782-40D2-8F37-A2DEF2B9C26D}.Debug.ActiveCfg = Debug|Win32
36+
{B7A96B78-2782-40D2-8F37-A2DEF2B9C26D}.Debug.Build.0 = Debug|Win32
37+
{B7A96B78-2782-40D2-8F37-A2DEF2B9C26D}.dummy.ActiveCfg = Debug|Win32
38+
{B7A96B78-2782-40D2-8F37-A2DEF2B9C26D}.dummy.Build.0 = Debug|Win32
39+
{B7A96B78-2782-40D2-8F37-A2DEF2B9C26D}.Release.ActiveCfg = Release|Win32
40+
{B7A96B78-2782-40D2-8F37-A2DEF2B9C26D}.Release.Build.0 = Release|Win32
3041
EndGlobalSection
3142
GlobalSection(ExtensibilityGlobals) = postSolution
3243
EndGlobalSection
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
<?xml version="1.0" encoding="Windows-1252"?>
2+
<VisualStudioProject
3+
ProjectType="Visual C++"
4+
Version="7.10"
5+
Name="test_lib_json"
6+
ProjectGUID="{B7A96B78-2782-40D2-8F37-A2DEF2B9C26D}"
7+
RootNamespace="test_lib_json"
8+
Keyword="Win32Proj">
9+
<Platforms>
10+
<Platform
11+
Name="Win32"/>
12+
</Platforms>
13+
<Configurations>
14+
<Configuration
15+
Name="Debug|Win32"
16+
OutputDirectory="../../build/vs71/debug/test_lib_json"
17+
IntermediateDirectory="../../build/vs71/debug/test_lib_json"
18+
ConfigurationType="1"
19+
CharacterSet="2">
20+
<Tool
21+
Name="VCCLCompilerTool"
22+
Optimization="0"
23+
AdditionalIncludeDirectories="../../include"
24+
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
25+
MinimalRebuild="TRUE"
26+
BasicRuntimeChecks="3"
27+
RuntimeLibrary="1"
28+
UsePrecompiledHeader="0"
29+
WarningLevel="3"
30+
Detect64BitPortabilityProblems="TRUE"
31+
DebugInformationFormat="4"/>
32+
<Tool
33+
Name="VCCustomBuildTool"/>
34+
<Tool
35+
Name="VCLinkerTool"
36+
OutputFile="$(OutDir)/test_lib_json.exe"
37+
LinkIncremental="2"
38+
GenerateDebugInformation="TRUE"
39+
ProgramDatabaseFile="$(OutDir)/test_lib_json.pdb"
40+
SubSystem="1"
41+
TargetMachine="1"/>
42+
<Tool
43+
Name="VCMIDLTool"/>
44+
<Tool
45+
Name="VCPostBuildEventTool"
46+
Description="Running all unit tests"
47+
CommandLine="$(TargetPath)"/>
48+
<Tool
49+
Name="VCPreBuildEventTool"/>
50+
<Tool
51+
Name="VCPreLinkEventTool"/>
52+
<Tool
53+
Name="VCResourceCompilerTool"/>
54+
<Tool
55+
Name="VCWebServiceProxyGeneratorTool"/>
56+
<Tool
57+
Name="VCXMLDataGeneratorTool"/>
58+
<Tool
59+
Name="VCWebDeploymentTool"/>
60+
<Tool
61+
Name="VCManagedWrapperGeneratorTool"/>
62+
<Tool
63+
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
64+
</Configuration>
65+
<Configuration
66+
Name="Release|Win32"
67+
OutputDirectory="../../build/vs71/release/test_lib_json"
68+
IntermediateDirectory="../../build/vs71/release/test_lib_json"
69+
ConfigurationType="1"
70+
CharacterSet="2">
71+
<Tool
72+
Name="VCCLCompilerTool"
73+
AdditionalIncludeDirectories="../../include"
74+
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
75+
RuntimeLibrary="0"
76+
UsePrecompiledHeader="0"
77+
WarningLevel="3"
78+
Detect64BitPortabilityProblems="TRUE"
79+
DebugInformationFormat="3"/>
80+
<Tool
81+
Name="VCCustomBuildTool"/>
82+
<Tool
83+
Name="VCLinkerTool"
84+
OutputFile="$(OutDir)/test_lib_json.exe"
85+
LinkIncremental="1"
86+
GenerateDebugInformation="TRUE"
87+
SubSystem="1"
88+
OptimizeReferences="2"
89+
EnableCOMDATFolding="2"
90+
TargetMachine="1"/>
91+
<Tool
92+
Name="VCMIDLTool"/>
93+
<Tool
94+
Name="VCPostBuildEventTool"
95+
Description="Running all unit tests"
96+
CommandLine="$(TargetPath)"/>
97+
<Tool
98+
Name="VCPreBuildEventTool"/>
99+
<Tool
100+
Name="VCPreLinkEventTool"/>
101+
<Tool
102+
Name="VCResourceCompilerTool"/>
103+
<Tool
104+
Name="VCWebServiceProxyGeneratorTool"/>
105+
<Tool
106+
Name="VCXMLDataGeneratorTool"/>
107+
<Tool
108+
Name="VCWebDeploymentTool"/>
109+
<Tool
110+
Name="VCManagedWrapperGeneratorTool"/>
111+
<Tool
112+
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
113+
</Configuration>
114+
</Configurations>
115+
<References>
116+
</References>
117+
<Files>
118+
<File
119+
RelativePath="..\..\src\test_lib_json\jsontest.cpp">
120+
</File>
121+
<File
122+
RelativePath="..\..\src\test_lib_json\jsontest.h">
123+
</File>
124+
<File
125+
RelativePath="..\..\src\test_lib_json\main.cpp">
126+
</File>
127+
</Files>
128+
<Globals>
129+
</Globals>
130+
</VisualStudioProject>

0 commit comments

Comments
 (0)