class PhusionPassenger::Utils::GeneratorTest
def generate(obj) JSON.generate(obj) end
def generate(obj) JSON.generate(obj) end
def test_array
def test_array assert_equal %([1, 2, 3]), generate([1, 2, 3]) end
def test_bool
def test_bool assert_equal %([true, false]), generate([true, false]) end
def test_date
def test_date time = Date.new(2012, 04, 19) assert_equal %(["2012-04-19"]), generate([time]) end
def test_hash
def test_hash json = generate(:abc => 123, 123 => 'abc') assert_match /^\{/, json assert_match /\}$/, json assert_equal [%("123": "abc"), %("abc": 123)], json[1...-1].split(', ').sort end
def test_invalid_json
def test_invalid_json assert_raises(ArgumentError) { generate("abc") } end
def test_invalid_object
def test_invalid_object err = assert_raises(ArgumentError) { generate("a" => Object.new) } assert_equal "can't serialize Object", err.message end
def test_nested_structure
def test_nested_structure json = generate(:hash => {1=>2}, :array => [1,2]) assert json.include?(%("hash": {"1": 2})) assert json.include?(%("array": [1, 2])) end
def test_null
def test_null assert_equal %([null]), generate([nil]) end
def test_string
def test_string assert_equal %(["abc\\n123"]), generate(["abc\n123"]) end
def test_string_unicode
def test_string_unicode assert_equal %(["ć\\"č\\nž\\tš\\\\đ"]), generate(["ć\"č\nž\tš\\đ"]) end
def test_symbol
def test_symbol assert_equal %(["abc"]), generate([:abc]) end
def test_time
def test_time time = Time.utc(2012, 04, 19, 1, 2, 3) assert_equal %(["2012-04-19 01:02:03 UTC"]), generate([time]) end