fun! TestCase_returns_methods()
    " setup
    let g:php_builtin_classes = {
    \'datetime': {
    \   'name': 'DateTime',
    \   'constants': {
    \   },
    \   'properties': {
    \   },
    \   'static_properties': {
    \   },
    \   'methods': {
    \     '__construct': { 'signature': '[ string $time = "now" [, DateTimeZone $timezone = NULL]]', 'return_type': ''},
    \     'add': { 'signature': 'DateInterval $interval | DateTime', 'return_type': 'DateTime'},
    \   },
    \   'static_methods': {
    \   },
    \},
    \}
    let ret = phpcomplete#CompleteBuiltInClass('$d->', 'DateTime', 'add')
    call VUAssertEquals(1, len(ret))
    call VUAssertEquals([{
                \ 'word': 'add(',
                \ 'menu': 'DateInterval $interval | DateTime', 'info': 'DateInterval $interval | DateTime',
                \ 'kind': 'f'}],
                \ ret)
endfun

fun! TestCase_returns_properties()
    " setup
    let g:php_builtin_classes = {
    \'domdocument': {
    \   'name': 'DOMDocument',
    \   'constants': {
    \   },
    \   'properties': {
    \     'encoding': { 'initializer': '', 'type': 'string'},
    \   },
    \   'static_properties': {
    \   },
    \   'methods': {
    \   },
    \   'static_methods': {
    \   },
    \},
    \}
    let ret = phpcomplete#CompleteBuiltInClass('$dom->', 'DOMDocument', 'enc')
    call VUAssertEquals(1, len(ret))
    call VUAssertEquals([{
                \ 'word': 'encoding',
                \ 'menu': 'string',
                \ 'info': 'string',
                \ 'kind': 'v'}],
                \ ret)
endfun

fun! TestCase_returns_static_methods()
    " setup
    let g:php_builtin_classes = {
    \'datetime': {
    \   'name': 'DateTime',
    \   'constants': {
    \   },
    \   'properties': {
    \   },
    \   'static_properties': {
    \   },
    \   'methods': {
    \   },
    \   'static_methods': {
    \     'createFromFormat': { 'signature': 'string $format, string $time [, DateTimeZone $timezone] | DateTime', 'return_type': 'DateTime'},
    \   },
    \},
    \}
    let ret = phpcomplete#CompleteBuiltInClass('DateTime::', 'DateTime', 'create')
    call VUAssertEquals(1, len(ret))
    call VUAssertEquals([{
                \ 'word': 'createFromFormat(',
                \ 'menu': 'string $format, string $time [, DateTimeZone $timezone] | DateTime',
                \ 'info': 'string $format, string $time [, DateTimeZone $timezone] | DateTime',
                \ 'kind': 'f'}],
                \ ret)
endfun

fun! TestCase_returns_static_properties()
    " setup
    let g:php_builtin_classes = {
    \'mongocursor': {
    \   'name': 'MongoCursor',
    \   'constants': {
    \   },
    \   'properties': {
    \   },
    \   'static_properties': {
    \     '$timeout': { 'initializer': '20000', 'type': 'integer'},
    \   },
    \   'methods': {
    \   },
    \   'static_methods': {
    \   },
    \},
    \}
    let ret = phpcomplete#CompleteBuiltInClass('MongoCursor::', 'MongoCursor', '$tim')
    call VUAssertEquals(1, len(ret))
    call VUAssertEquals([{
                \ 'word': '$timeout',
                \ 'menu': 'integer',
                \ 'info': 'integer',
                \ 'kind': 'v'}],
                \ ret)
endfun

fun! TestCase_returns_constants()
    " setup
    let g:php_builtin_classes = {
    \ 'datetime': {
    \   'name': 'DateTime',
    \   'constants': {
    \     'ATOM': '"Y-m-d\TH:i:sP"',
    \   },
    \   'properties': {
    \   },
    \   'static_properties': {
    \   },
    \   'methods': {
    \   },
    \   'static_methods': {
    \   },
    \},
    \}
    let ret = phpcomplete#CompleteBuiltInClass('Datetime::', 'DateTime', 'ATO')
    call VUAssertEquals(1, len(ret))
    call VUAssertEquals([{
                \ 'word': 'ATOM',
                \ 'menu': '"Y-m-d\TH:i:sP"',
                \ 'info': '"Y-m-d\TH:i:sP"',
                \ 'kind': 'd'}],
                \ ret)
endfun

" vim: foldmethod=marker:expandtab:ts=4:sts=4