- reorganized repository to match standard layout
diff --git a/test/cleantests.py b/test/cleantests.py
new file mode 100644
index 0000000..5872a87
--- /dev/null
+++ b/test/cleantests.py
@@ -0,0 +1,10 @@
+# removes all files created during testing

+import glob

+import os

+

+paths = []

+for pattern in [ '*.actual', '*.actual-rewrite', '*.rewrite', '*.process-output' ]:

+    paths += glob.glob( pattern )

+

+for path in paths:

+    os.unlink( path )

diff --git a/test/generate_expected.py b/test/generate_expected.py
new file mode 100644
index 0000000..a46e889
--- /dev/null
+++ b/test/generate_expected.py
@@ -0,0 +1,11 @@
+import glob

+import os.path

+for path in glob.glob( '*.json' ):

+    text = file(path,'rt').read()

+    target = os.path.splitext(path)[0] + '.expected'

+    if os.path.exists( target ):

+        print 'skipping:', target

+    else:

+        print 'creating:', target

+        file(target,'wt').write(text)

+

diff --git a/test/jsontestrunner.py b/test/jsontestrunner.py
new file mode 100644
index 0000000..ec05a91
--- /dev/null
+++ b/test/jsontestrunner.py
@@ -0,0 +1,64 @@
+# Simple implementation of a json test runner to run the test against json-py.

+

+import sys

+import os.path

+import json

+import types

+

+if len(sys.argv) != 2:

+    print "Usage: %s input-json-file", sys.argv[0]

+    sys.exit(3)

+    

+input_path = sys.argv[1]

+base_path = os.path.splitext(input_path)[0]

+actual_path = base_path + '.actual'

+rewrite_path = base_path + '.rewrite'

+rewrite_actual_path = base_path + '.actual-rewrite'

+

+def valueTreeToString( fout, value, path = '.' ):

+    ty = type(value) 

+    if ty  is types.DictType:

+        fout.write( '%s={}\n' % path )

+        suffix = path[-1] != '.' and '.' or ''

+        names = value.keys()

+        names.sort()

+        for name in names:

+            valueTreeToString( fout, value[name], path + suffix + name )

+    elif ty is types.ListType:

+        fout.write( '%s=[]\n' % path )

+        for index, childValue in zip( xrange(0,len(value)), value ):

+            valueTreeToString( fout, childValue, path + '[%d]' % index )

+    elif ty is types.StringType:

+        fout.write( '%s="%s"\n' % (path,value) )

+    elif ty is types.IntType:

+        fout.write( '%s=%d\n' % (path,value) )

+    elif ty is types.FloatType:

+        fout.write( '%s=%.16g\n' % (path,value) )

+    elif value is True:

+        fout.write( '%s=true\n' % path )

+    elif value is False:

+        fout.write( '%s=false\n' % path )

+    elif value is None:

+        fout.write( '%s=null\n' % path )

+    else:

+        assert False and "Unexpected value type"

+        

+def parseAndSaveValueTree( input, actual_path ):

+    root = json.read( input )

+    fout = file( actual_path, 'wt' )

+    valueTreeToString( fout, root )

+    fout.close()

+    return root

+

+def rewriteValueTree( value, rewrite_path ):

+    rewrite = json.write( value )

+    rewrite = rewrite[1:-1]  # Somehow the string is quoted ! jsonpy bug ?

+    file( rewrite_path, 'wt').write( rewrite + '\n' )

+    return rewrite

+    

+input = file( input_path, 'rt' ).read()

+root = parseAndSaveValueTree( input, actual_path )

+rewrite = rewriteValueTree( json.write( root ), rewrite_path )

+rewrite_root = parseAndSaveValueTree( rewrite, rewrite_actual_path )

+

+sys.exit( 0 )

diff --git a/test/runjsontests.py b/test/runjsontests.py
new file mode 100644
index 0000000..a5284fb
--- /dev/null
+++ b/test/runjsontests.py
@@ -0,0 +1,91 @@
+import sys

+import os

+import os.path

+import glob

+

+

+def compareOutputs( expected, actual, message ):

+    expected = expected.strip().replace('\r','').split('\n')

+    actual = actual.strip().replace('\r','').split('\n')

+    diff_line = 0

+    max_line_to_compare = min( len(expected), len(actual) )

+    for index in xrange(0,max_line_to_compare):

+        if expected[index].strip() != actual[index].strip():

+            diff_line = index + 1

+            break

+    if diff_line == 0 and len(expected) != len(actual):

+        diff_line = max_line_to_compare+1

+    if diff_line == 0:

+        return None

+    def safeGetLine( lines, index ):

+        index += -1

+        if index >= len(lines):

+            return ''

+        return lines[index].strip()

+    return """  Difference in %s at line %d:

+  Expected: '%s'

+  Actual:   '%s'

+""" % (message, diff_line,

+       safeGetLine(expected,diff_line),

+       safeGetLine(actual,diff_line) )

+        

+def safeReadFile( path ):

+    try:

+        return file( path, 'rt' ).read()

+    except IOError, e:

+        return '<File "%s" is missing: %s>' % (path,e)

+

+def runAllTests( jsontest_executable_path, input_dir = None ):

+    if not input_dir:

+        input_dir = os.getcwd()

+    tests = glob.glob( os.path.join( input_dir, '*.json' ) )

+    failed_tests = []

+    for input_path in tests:

+        print 'TESTING:', input_path,

+        pipe = os.popen( "%s %s" % (jsontest_executable_path, input_path) )

+        process_output = pipe.read()

+        status = pipe.close()

+        base_path = os.path.splitext(input_path)[0]

+        actual_output = safeReadFile( base_path + '.actual' )

+        actual_rewrite_output = safeReadFile( base_path + '.actual-rewrite' )

+        file(base_path + '.process-output','wt').write( process_output )

+        if status:

+            print 'parsing failed'

+            failed_tests.append( (input_path, 'Parsing failed:\n' + process_output) )

+        else:

+            expected_output_path = os.path.splitext(input_path)[0] + '.expected'

+            expected_output = file( expected_output_path, 'rt' ).read()

+            detail = ( compareOutputs( expected_output, actual_output, 'input' )

+                        or compareOutputs( expected_output, actual_rewrite_output, 'rewrite' ) )

+            if detail:

+                print 'FAILED'

+                failed_tests.append( (input_path, detail) )

+            else:

+                print 'OK'

+

+    if failed_tests:

+        print

+        print 'Failure details:'

+        for failed_test in failed_tests:

+            print '* Test', failed_test[0]

+            print failed_test[1]

+            print

+        print 'Test results: %d passed, %d failed.' % (len(tests)-len(failed_tests),

+                                                       len(failed_tests) )

+        return 1

+    else:

+        print 'All %d tests passed.' % len(tests)

+        return 0

+

+if __name__ == '__main__':

+    if len(sys.argv) < 1 or len(sys.argv) > 2:

+        print "Usage: %s jsontest-executable-path [input-testcase-directory]" % sys.argv[0]

+        sys.exit( 1 )

+

+    jsontest_executable_path = os.path.normpath( os.path.abspath( sys.argv[1] ) )

+    if len(sys.argv) > 1:

+        input_path = os.path.normpath( os.path.abspath( sys.argv[2] ) )

+    else:

+        input_path = None

+    status = runAllTests( jsontest_executable_path, input_path )

+    sys.exit( status )
\ No newline at end of file
diff --git a/test/test_array_01.expected b/test/test_array_01.expected
new file mode 100644
index 0000000..4aa8fb3
--- /dev/null
+++ b/test/test_array_01.expected
@@ -0,0 +1 @@
+.=[]

diff --git a/test/test_array_01.json b/test/test_array_01.json
new file mode 100644
index 0000000..60b0742
--- /dev/null
+++ b/test/test_array_01.json
@@ -0,0 +1 @@
+[]

diff --git a/test/test_array_02.expected b/test/test_array_02.expected
new file mode 100644
index 0000000..5b7c72a
--- /dev/null
+++ b/test/test_array_02.expected
@@ -0,0 +1,2 @@
+.=[]

+.[0]=1

diff --git a/test/test_array_02.json b/test/test_array_02.json
new file mode 100644
index 0000000..c02be12
--- /dev/null
+++ b/test/test_array_02.json
@@ -0,0 +1 @@
+[1]

diff --git a/test/test_array_03.expected b/test/test_array_03.expected
new file mode 100644
index 0000000..0ba568e
--- /dev/null
+++ b/test/test_array_03.expected
@@ -0,0 +1,6 @@
+.=[]

+.[0]=1

+.[1]=2

+.[2]=3

+.[3]=4

+.[4]=5

diff --git a/test/test_array_03.json b/test/test_array_03.json
new file mode 100644
index 0000000..ac8f422
--- /dev/null
+++ b/test/test_array_03.json
@@ -0,0 +1 @@
+[ 1, 2 ,  3,4,5]

diff --git a/test/test_array_04.expected b/test/test_array_04.expected
new file mode 100644
index 0000000..db58c30
--- /dev/null
+++ b/test/test_array_04.expected
@@ -0,0 +1,5 @@
+.=[]

+.[0]=1

+.[1]="abc"

+.[2]=12.3

+.[3]=-4

diff --git a/test/test_array_04.json b/test/test_array_04.json
new file mode 100644
index 0000000..0755478
--- /dev/null
+++ b/test/test_array_04.json
@@ -0,0 +1 @@
+[1, "abc" , 12.3, -4]

diff --git a/test/test_array_05.expected b/test/test_array_05.expected
new file mode 100644
index 0000000..82ad484
--- /dev/null
+++ b/test/test_array_05.expected
@@ -0,0 +1,100 @@
+.=[]

+.[0]=1

+.[1]=2

+.[2]=3

+.[3]=4

+.[4]=5

+.[5]=6

+.[6]=7

+.[7]=8

+.[8]=9

+.[9]=10

+.[10]=11

+.[11]=12

+.[12]=13

+.[13]=14

+.[14]=15

+.[15]=16

+.[16]=17

+.[17]=18

+.[18]=19

+.[19]=20

+.[20]=21

+.[21]=22

+.[22]=23

+.[23]=24

+.[24]=25

+.[25]=26

+.[26]=27

+.[27]=28

+.[28]=29

+.[29]=30

+.[30]=31

+.[31]=32

+.[32]=33

+.[33]=34

+.[34]=35

+.[35]=36

+.[36]=37

+.[37]=38

+.[38]=39

+.[39]=40

+.[40]=41

+.[41]=42

+.[42]=43

+.[43]=44

+.[44]=45

+.[45]=46

+.[46]=47

+.[47]=48

+.[48]=49

+.[49]=50

+.[50]=51

+.[51]=52

+.[52]=53

+.[53]=54

+.[54]=55

+.[55]=56

+.[56]=57

+.[57]=58

+.[58]=59

+.[59]=60

+.[60]=61

+.[61]=62

+.[62]=63

+.[63]=64

+.[64]=65

+.[65]=66

+.[66]=67

+.[67]=68

+.[68]=69

+.[69]=70

+.[70]=71

+.[71]=72

+.[72]=73

+.[73]=74

+.[74]=75

+.[75]=76

+.[76]=77

+.[77]=78

+.[78]=79

+.[79]=80

+.[80]=81

+.[81]=82

+.[82]=83

+.[83]=84

+.[84]=85

+.[85]=86

+.[86]=87

+.[87]=88

+.[88]=89

+.[89]=90

+.[90]=91

+.[91]=92

+.[92]=93

+.[93]=94

+.[94]=95

+.[95]=96

+.[96]=97

+.[97]=98

+.[98]=99

diff --git a/test/test_array_05.json b/test/test_array_05.json
new file mode 100644
index 0000000..7809d6c
--- /dev/null
+++ b/test/test_array_05.json
@@ -0,0 +1 @@
+[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
\ No newline at end of file
diff --git a/test/test_array_06.expected b/test/test_array_06.expected
new file mode 100644
index 0000000..e087b63
--- /dev/null
+++ b/test/test_array_06.expected
@@ -0,0 +1,5 @@
+.=[]

+.[0]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

+.[1]="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"

+.[2]="ccccccccccccccccccccccc"

+.[3]="dddddddddddddddddddddddddddddddddddddddddddddddddddd"

diff --git a/test/test_array_06.json b/test/test_array_06.json
new file mode 100644
index 0000000..9777a64
--- /dev/null
+++ b/test/test_array_06.json
@@ -0,0 +1,4 @@
+[ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 

+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",

+  "ccccccccccccccccccccccc",

+  "dddddddddddddddddddddddddddddddddddddddddddddddddddd" ]
\ No newline at end of file
diff --git a/test/test_basic_01.expected b/test/test_basic_01.expected
new file mode 100644
index 0000000..0527387
--- /dev/null
+++ b/test/test_basic_01.expected
@@ -0,0 +1 @@
+.=123456789

diff --git a/test/test_basic_01.json b/test/test_basic_01.json
new file mode 100644
index 0000000..57cf9b9
--- /dev/null
+++ b/test/test_basic_01.json
@@ -0,0 +1 @@
+0123456789

diff --git a/test/test_basic_02.expected b/test/test_basic_02.expected
new file mode 100644
index 0000000..9040e84
--- /dev/null
+++ b/test/test_basic_02.expected
@@ -0,0 +1 @@
+.=-123456789

diff --git a/test/test_basic_02.json b/test/test_basic_02.json
new file mode 100644
index 0000000..fe84da4
--- /dev/null
+++ b/test/test_basic_02.json
@@ -0,0 +1 @@
+-0123456789

diff --git a/test/test_basic_03.expected b/test/test_basic_03.expected
new file mode 100644
index 0000000..494278d
--- /dev/null
+++ b/test/test_basic_03.expected
@@ -0,0 +1,3 @@
+.=1.2345678

+

+

diff --git a/test/test_basic_03.json b/test/test_basic_03.json
new file mode 100644
index 0000000..feac150
--- /dev/null
+++ b/test/test_basic_03.json
@@ -0,0 +1,3 @@
+1.2345678

+

+

diff --git a/test/test_basic_04.expected b/test/test_basic_04.expected
new file mode 100644
index 0000000..659f744
--- /dev/null
+++ b/test/test_basic_04.expected
@@ -0,0 +1,2 @@
+.="abcdef"

+

diff --git a/test/test_basic_04.json b/test/test_basic_04.json
new file mode 100644
index 0000000..01374bd
--- /dev/null
+++ b/test/test_basic_04.json
@@ -0,0 +1,2 @@
+"abcdef"

+

diff --git a/test/test_basic_05.expected b/test/test_basic_05.expected
new file mode 100644
index 0000000..cb1cdad
--- /dev/null
+++ b/test/test_basic_05.expected
@@ -0,0 +1,2 @@
+.=null

+

diff --git a/test/test_basic_05.json b/test/test_basic_05.json
new file mode 100644
index 0000000..a6d4f5a
--- /dev/null
+++ b/test/test_basic_05.json
@@ -0,0 +1,2 @@
+null

+

diff --git a/test/test_basic_06.expected b/test/test_basic_06.expected
new file mode 100644
index 0000000..8b22731
--- /dev/null
+++ b/test/test_basic_06.expected
@@ -0,0 +1,2 @@
+.=true

+

diff --git a/test/test_basic_06.json b/test/test_basic_06.json
new file mode 100644
index 0000000..5d967af
--- /dev/null
+++ b/test/test_basic_06.json
@@ -0,0 +1,2 @@
+true

+

diff --git a/test/test_basic_07.expected b/test/test_basic_07.expected
new file mode 100644
index 0000000..4979ed5
--- /dev/null
+++ b/test/test_basic_07.expected
@@ -0,0 +1,2 @@
+.=false

+

diff --git a/test/test_basic_07.json b/test/test_basic_07.json
new file mode 100644
index 0000000..b7ee6c5
--- /dev/null
+++ b/test/test_basic_07.json
@@ -0,0 +1,2 @@
+false

+

diff --git a/test/test_basic_08.expected b/test/test_basic_08.expected
new file mode 100644
index 0000000..cb1cdad
--- /dev/null
+++ b/test/test_basic_08.expected
@@ -0,0 +1,2 @@
+.=null

+

diff --git a/test/test_basic_08.json b/test/test_basic_08.json
new file mode 100644
index 0000000..fe107f4
--- /dev/null
+++ b/test/test_basic_08.json
@@ -0,0 +1,3 @@
+// C++ style comment

+null

+

diff --git a/test/test_basic_09.expected b/test/test_basic_09.expected
new file mode 100644
index 0000000..cb1cdad
--- /dev/null
+++ b/test/test_basic_09.expected
@@ -0,0 +1,2 @@
+.=null

+

diff --git a/test/test_basic_09.json b/test/test_basic_09.json
new file mode 100644
index 0000000..e0cb089
--- /dev/null
+++ b/test/test_basic_09.json
@@ -0,0 +1,4 @@
+/* C style comment

+ */

+null

+

diff --git a/test/test_complex_01.expected b/test/test_complex_01.expected
new file mode 100644
index 0000000..44e753b
--- /dev/null
+++ b/test/test_complex_01.expected
@@ -0,0 +1,20 @@
+.={}

+.attribute=[]

+.attribute[0]="random"

+.attribute[1]="short"

+.attribute[2]="bold"

+.attribute[3]=12

+.attribute[4]={}

+.attribute[4].height=7

+.attribute[4].width=64

+.count=1234

+.name={}

+.name.aka="T.E.S.T."

+.name.id=123987

+.test={}

+.test.1={}

+.test.1.2={}

+.test.1.2.3={}

+.test.1.2.3.coord=[]

+.test.1.2.3.coord[0]=1

+.test.1.2.3.coord[1]=2

diff --git a/test/test_complex_01.json b/test/test_complex_01.json
new file mode 100644
index 0000000..fb2f86c
--- /dev/null
+++ b/test/test_complex_01.json
@@ -0,0 +1,17 @@
+{ 

+	"count" : 1234,

+	"name" : { "aka" : "T.E.S.T.", "id" : 123987 },

+	"attribute" : [ 

+		"random", 

+		"short", 

+		"bold", 

+		12, 

+		{ "height" : 7, "width" : 64 } 

+		],

+	"test": { "1" : 

+		{ "2" : 

+			{ "3" :  { "coord" : [ 1,2] } 

+			} 

+		}

+	}

+}

diff --git a/test/test_integer_01.expected b/test/test_integer_01.expected
new file mode 100644
index 0000000..24aa29e
--- /dev/null
+++ b/test/test_integer_01.expected
@@ -0,0 +1 @@
+.=2147483647

diff --git a/test/test_integer_01.json b/test/test_integer_01.json
new file mode 100644
index 0000000..e82c7ad
--- /dev/null
+++ b/test/test_integer_01.json
@@ -0,0 +1,2 @@
+// Max signed integer

+2147483647

diff --git a/test/test_integer_02.expected b/test/test_integer_02.expected
new file mode 100644
index 0000000..dab99eb
--- /dev/null
+++ b/test/test_integer_02.expected
@@ -0,0 +1 @@
+.=-2147483648

diff --git a/test/test_integer_02.json b/test/test_integer_02.json
new file mode 100644
index 0000000..548764e
--- /dev/null
+++ b/test/test_integer_02.json
@@ -0,0 +1,2 @@
+// Min signed integer

+-2147483648

diff --git a/test/test_integer_03.expected b/test/test_integer_03.expected
new file mode 100644
index 0000000..dde3260
--- /dev/null
+++ b/test/test_integer_03.expected
@@ -0,0 +1 @@
+.=4294967295

diff --git a/test/test_integer_03.json b/test/test_integer_03.json
new file mode 100644
index 0000000..18aeaf6
--- /dev/null
+++ b/test/test_integer_03.json
@@ -0,0 +1,2 @@
+// Max unsigned integer

+4294967295

diff --git a/test/test_integer_04.expected b/test/test_integer_04.expected
new file mode 100644
index 0000000..8da9013
--- /dev/null
+++ b/test/test_integer_04.expected
@@ -0,0 +1,2 @@
+.=0

+

diff --git a/test/test_integer_04.json b/test/test_integer_04.json
new file mode 100644
index 0000000..8202483
--- /dev/null
+++ b/test/test_integer_04.json
@@ -0,0 +1,3 @@
+// Min unsigned integer

+0

+

diff --git a/test/test_integer_05.expected b/test/test_integer_05.expected
new file mode 100644
index 0000000..238d1d6
--- /dev/null
+++ b/test/test_integer_05.expected
@@ -0,0 +1,2 @@
+.=1

+

diff --git a/test/test_integer_05.json b/test/test_integer_05.json
new file mode 100644
index 0000000..4797790
--- /dev/null
+++ b/test/test_integer_05.json
@@ -0,0 +1,2 @@
+1

+

diff --git a/test/test_object_01.expected b/test/test_object_01.expected
new file mode 100644
index 0000000..8e0634e
--- /dev/null
+++ b/test/test_object_01.expected
@@ -0,0 +1 @@
+.={}

diff --git a/test/test_object_01.json b/test/test_object_01.json
new file mode 100644
index 0000000..69a88e3
--- /dev/null
+++ b/test/test_object_01.json
@@ -0,0 +1 @@
+{}

diff --git a/test/test_object_02.expected b/test/test_object_02.expected
new file mode 100644
index 0000000..2c9de06
--- /dev/null
+++ b/test/test_object_02.expected
@@ -0,0 +1,2 @@
+.={}

+.count=1234

diff --git a/test/test_object_02.json b/test/test_object_02.json
new file mode 100644
index 0000000..bd157ec
--- /dev/null
+++ b/test/test_object_02.json
@@ -0,0 +1 @@
+{ "count" : 1234 }

diff --git a/test/test_object_03.expected b/test/test_object_03.expected
new file mode 100644
index 0000000..235a28e
--- /dev/null
+++ b/test/test_object_03.expected
@@ -0,0 +1,4 @@
+.={}

+.attribute="random"

+.count=1234

+.name="test"

diff --git a/test/test_object_03.json b/test/test_object_03.json
new file mode 100644
index 0000000..0947a44
--- /dev/null
+++ b/test/test_object_03.json
@@ -0,0 +1,5 @@
+{ 

+	"count" : 1234,

+	"name" : "test",

+	"attribute" : "random"

+}

diff --git a/test/test_object_04.expected b/test/test_object_04.expected
new file mode 100644
index 0000000..cf4d7c3
--- /dev/null
+++ b/test/test_object_04.expected
@@ -0,0 +1,2 @@
+.={}

+.=1234

diff --git a/test/test_object_04.json b/test/test_object_04.json
new file mode 100644
index 0000000..f1e364a
--- /dev/null
+++ b/test/test_object_04.json
@@ -0,0 +1,3 @@
+{ 

+	"" : 1234

+}

diff --git a/test/test_preserve_comment_01.expected b/test/test_preserve_comment_01.expected
new file mode 100644
index 0000000..b5616a9
--- /dev/null
+++ b/test/test_preserve_comment_01.expected
@@ -0,0 +1,3 @@
+.={}

+.first=1

+.second=2

diff --git a/test/test_preserve_comment_01.json b/test/test_preserve_comment_01.json
new file mode 100644
index 0000000..0291fff
--- /dev/null
+++ b/test/test_preserve_comment_01.json
@@ -0,0 +1,14 @@
+/* A comment

+   at the beginning of the file.

+ */

+{

+   "first" : 1, // comment after 'first' on the same line

+

+/* Comment before 'second'

+ */

+   "second" : 2

+}

+

+/* A comment at 

+   the end of the file.

+ */

diff --git a/test/test_real_01.expected b/test/test_real_01.expected
new file mode 100644
index 0000000..57dee39
--- /dev/null
+++ b/test/test_real_01.expected
@@ -0,0 +1,2 @@
+.=8589934592

+

diff --git a/test/test_real_01.json b/test/test_real_01.json
new file mode 100644
index 0000000..5cb1bbf
--- /dev/null
+++ b/test/test_real_01.json
@@ -0,0 +1,3 @@
+// 2^33 => out of integer range, switch to double

+8589934592

+

diff --git a/test/test_real_02.expected b/test/test_real_02.expected
new file mode 100644
index 0000000..181592a
--- /dev/null
+++ b/test/test_real_02.expected
@@ -0,0 +1,2 @@
+.=-4294967295

+

diff --git a/test/test_real_02.json b/test/test_real_02.json
new file mode 100644
index 0000000..45092ef
--- /dev/null
+++ b/test/test_real_02.json
@@ -0,0 +1,3 @@
+// -2^32 => out of signed integer range, switch to double

+-4294967295

+

diff --git a/test/test_real_03.expected b/test/test_real_03.expected
new file mode 100644
index 0000000..181592a
--- /dev/null
+++ b/test/test_real_03.expected
@@ -0,0 +1,2 @@
+.=-4294967295

+

diff --git a/test/test_real_03.json b/test/test_real_03.json
new file mode 100644
index 0000000..45092ef
--- /dev/null
+++ b/test/test_real_03.json
@@ -0,0 +1,3 @@
+// -2^32 => out of signed integer range, switch to double

+-4294967295

+

diff --git a/test/test_real_04.expected b/test/test_real_04.expected
new file mode 100644
index 0000000..2f84bf1
--- /dev/null
+++ b/test/test_real_04.expected
@@ -0,0 +1,2 @@
+.=1.2345678

+

diff --git a/test/test_real_04.json b/test/test_real_04.json
new file mode 100644
index 0000000..7e71794
--- /dev/null
+++ b/test/test_real_04.json
@@ -0,0 +1,3 @@
+// 1.2345678

+12345678e-7

+

diff --git a/test/test_real_05.expected b/test/test_real_05.expected
new file mode 100644
index 0000000..168f6e8
--- /dev/null
+++ b/test/test_real_05.expected
@@ -0,0 +1,3 @@
+.=1234567.8

+

+

diff --git a/test/test_real_05.json b/test/test_real_05.json
new file mode 100644
index 0000000..950f6a7
--- /dev/null
+++ b/test/test_real_05.json
@@ -0,0 +1,3 @@
+// 1234567.8

+0.12345678e7

+

diff --git a/test/test_real_06.expected b/test/test_real_06.expected
new file mode 100644
index 0000000..45906e3
--- /dev/null
+++ b/test/test_real_06.expected
@@ -0,0 +1,3 @@
+.=-1.2345678

+

+

diff --git a/test/test_real_06.json b/test/test_real_06.json
new file mode 100644
index 0000000..dde1916
--- /dev/null
+++ b/test/test_real_06.json
@@ -0,0 +1,3 @@
+// -1.2345678

+-12345678e-7

+

diff --git a/test/test_real_07.expected b/test/test_real_07.expected
new file mode 100644
index 0000000..f2922f9
--- /dev/null
+++ b/test/test_real_07.expected
@@ -0,0 +1,3 @@
+.=-1234567.8

+

+

diff --git a/test/test_real_07.json b/test/test_real_07.json
new file mode 100644
index 0000000..dd43ba7
--- /dev/null
+++ b/test/test_real_07.json
@@ -0,0 +1,3 @@
+// -1234567.8

+-0.12345678e7

+