summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFlorian Frank <flori@ping.de>2010-10-05 11:00:09 +0200
committerFlorian Frank <flori@ping.de>2011-01-02 21:13:46 +0100
commit8714f0a88ccee67ea7ca1a9d5a40d9cf1c6dd5fb (patch)
tree9f1d194336debc54896944b80bbf3bbea44eb4dd /tests
parent02b20b1ec02513b7452e8585c6d45cbe565418d2 (diff)
downloadjson-8714f0a88ccee67ea7ca1a9d5a40d9cf1c6dd5fb.tar.gz
Added matching in pure/ext parser
Diffstat (limited to 'tests')
-rwxr-xr-xtests/test_json_addition.rb9
-rw-r--r--tests/test_json_string_matching.rb44
2 files changed, 53 insertions, 0 deletions
diff --git a/tests/test_json_addition.rb b/tests/test_json_addition.rb
index 34f0a71..edf8699 100755
--- a/tests/test_json_addition.rb
+++ b/tests/test_json_addition.rb
@@ -36,6 +36,15 @@ class TC_JSONAddition < Test::Unit::TestCase
end
end
+ class A2 < A
+ def to_json(*args)
+ {
+ 'json_class' => self.class.name,
+ 'args' => [ @a ],
+ }.to_json(*args)
+ end
+ end
+
class B
def self.json_creatable?
false
diff --git a/tests/test_json_string_matching.rb b/tests/test_json_string_matching.rb
new file mode 100644
index 0000000..0ea12ed
--- /dev/null
+++ b/tests/test_json_string_matching.rb
@@ -0,0 +1,44 @@
+#!/usr/bin/env ruby
+# -*- coding: utf-8 -*-
+
+require 'test/unit'
+case ENV['JSON']
+when 'pure' then require 'json/pure'
+when 'ext' then require 'json/ext'
+else require 'json'
+end
+require 'stringio'
+require 'time'
+
+class TestJsonStringMatching < Test::Unit::TestCase
+ include JSON
+
+ class TestTime < Time
+ def self.json_create(string)
+ Time.parse(string)
+ end
+
+ def to_json(*)
+ %{"#{strftime('%FT%T%z')}"}
+ end
+
+ def ==(other)
+ to_i == other.to_i
+ end
+ end
+
+ def test_match_date
+ t = TestTime.new
+ t_json = [ t ].to_json
+ assert_equal [ t ],
+ JSON.parse(t_json,
+ :match => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime })
+ assert_equal [ t.strftime('%FT%T%z') ],
+ JSON.parse(t_json,
+ :match => { /\A\d{3}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime })
+ assert_equal [ t.strftime('%FT%T%z') ],
+ JSON.parse(t_json,
+ :match => { /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\Z/ => TestTime },
+ :create_additions => false)
+ end
+end